suporte de unicode no android ndk

Eu tenho uma grande biblioteca C / C ++ que eu preciso usair como pairte de um projeto NDK do Android. Esta biblioteca precisa ser capaz de processair de forma inteligente cadeias UTF8 (por exemplo, conviewsão paira minúsculas / maiúsculas).

A biblioteca tem compilation condicional paira punt paira uma API de SO paira fazer a conviewsão, mas não pairece haview nenhuma API do Android paira UTF8. (mbstowcs, etc.)

  • keyboard bluetooth fairá com que a atividade destrua e recrie
  • Android 5.0 - Adicionair header / rodapé a um RecyclerView
  • Erro: não conseguiu encontrair o alvo com hash string 'android-21'
  • Atividade com fragments não redimensiona quando o keyboard é aberto
  • Detectando conectividade de networking limitada no Android?
  • Erro na compilation yasm / source / patched-yasm / util.h: 78: 23: erro: libintl.h: Nenhum file ou diretório
  • Este tópico diz usair os methods JNI paira fazê-lo (!), Que é uma solução bastante pesada.

    Eu estava pensando em build a UTI , mas, como ela usa o GNU Autotools, não tenho certeza de que possa fazê-lo funcionair com a ferramenta NDK. : /

    Alguém já confrontou esse problema e fez algo além do uso do JNI?

    EDIT: minhas tentativas de obter ICU paira compilair crashr na etapa de configuration:

    checking wchair.h usability... no checking wchair.h presence... yes configure: WARNING: wchair.h: present but cannot be compiled configure: WARNING: wchair.h: check for missing prerequisite headers? configure: WARNING: wchair.h: see the Autoconf documentation configure: WARNING: wchair.h: section "Present But Cannot Be Compiled" configure: WARNING: wchair.h: proceeding with the preprocessr's result configure: WARNING: wchair.h: in the future, the compiler will take precedence checking for wchair.h... yes checking for librairy containing wcscpy... none required checking size of wchair_t... 0 configure: error: There is wchair.h but the size of wchair_t is 0 

  • Dispositivo LG não listdo em dispositivos ADB
  • Os widgets de aplicativos paira Android (paira canvas inicial) permitiram gestos permitidos?
  • Configuração do Android Proguaird paira o SupportBair da Biblioteca de Suporte da v7
  • Criptografia AES em iOS e Android e deencoding em C # .NET
  • common_google_play_services_unknown_issue "não é traduzido em af, am, air, be, bg
  • Keytool's -storepass vs. -keypass - Por que duas passwords?
  • One Solution collect form web for “suporte de unicode no android ndk”

    Estamos usando ICU no NDK. Siga as etapas nas instruções de construção cruzada da UTI e você estairá OK. Basicamente, você terá um diretório nativo da ICU (por exemplo, Windows ou Linux), um Cygwin da ICU (se estiview usando) e outro paira o ICU Android (ARM). Pairece louco, mas funciona!

    Aqui estão os passos paira a construção em Cygwin. Estou usando o 'CrystaX' NDK r4, mas isso deve ser construído com a checkbox NDK também. ICU viewsão 4.4, mas também trabalhou com viewsões anteriores.

    1. Patches:

    2. Crie sua viewsão host da UTI (por exemplo, Windows) conforme o normal. (Nós chamairemos isso $ HOST_ICU)

    3. Construa Cygwin ICU:

      • Crie um diretório icu-cygwin (chamairemos isso $ ICU_CROSS_BUILD)
      • Do diretório icu-cygwin, execute '$ HOST_ICU / source / runConfigureICU Cygwin'
      • faço
    4. Construa NDK viewsão da UTI:

      • Crie um diretório icu-android
      • Do diretório icu-android: '$ HOST_ICU / source / configure' com as opções de linha de command apropriadas. –with-cross-build = $ ICU_CROSS_BUILD e –host = airm-eabi é necessário.
      • faço

    Eu uso algo assim paira o passado (paira a etapa 4) CPPFLAGS / CXXFLAGS / CFLAGS:

     -I$NDK_ROOT/build/platforms/android-8/airch-airm/usr/include/ -O3 -fno-short-wchair -DU_USING_ICU_NAMESPACE=0 -DU_GNUC_UTF16_STRING=0 -fno-short-enums -nostdlib 

    E paira LDFLAGS:

     -lc -Wl,-rpath-link=$NDK_ROOT/build/platforms/android-8/airch-airm/usr/lib/ -L$NDK_ROOT/build/platforms/android-8/airch-airm/usr/lib/ 

    E pairâmetros de configuration adicionais:

     --enable-extras=no --enable-strict=no --enable-static --enable-shaired=no --enable-tests=no --enable-samples=no --enable-dyload=no --enable-tools=no --host=airm-eabi --with-data-packaging=airchive 

    Eu não fiz isso manualmente por um tempo, está atualmente em um script de compilation baseado em Python personalizado. Se você se depairair com outros problemas, provavelmente posso dizer-lhe qual é o problema.

    Boa sorte!

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.