Мы используем ICU в NDK.Следуйте инструкциям, приведенным в инструкциях по сборке ICU, и все будет в порядке.В основном у вас будет собственный каталог ICU (например, Windows или Linux), ICU Cygwin (если он используется) и еще один для ICU Android (ARM).Звучит безумно, но это работает!
Вот шаги для сборки под Cygwin.Я использую 'CrystaX' NDK r4, но он должен собираться и из коробки NDK.Версия 4.4 ICU, но также работала с предыдущими версиями.
Патчи:
Создайте версию ICU своего хоста (например, Windows) в обычном режиме (мы назовем это $ HOST_ICU)
Сборка Cygwin ICU:
- Создайте каталог icu-cygwin (мы назовем его $ ICU_CROSS_BUILD)
- Из каталога icu-cygwin запустите '$ HOST_ICU / source / runConfigureICU Cygwin'
- make
Сборка NDK-версии ICU:
- Создание каталога icu-android
- Из icu-androiddir: $ HOST_ICU / source / configure с соответствующими параметрами командной строки. --with-cross-build = $ ICU_CROSS_BUILD и требуется --host = arm-eabi.
- make
Я использую что-то вроде этого для передачи в (тo шаг # 4) CPPFLAGS / CXXFLAGS / CFLAGS:
-I$NDK_ROOT/build/platforms/android-8/arch-arm/usr/include/ -O3 -fno-short-wchar -DU_USING_ICU_NAMESPACE=0 -DU_GNUC_UTF16_STRING=0 -fno-short-enums -nostdlib
И для LDFLAGS:
-lc -Wl,-rpath-link=$NDK_ROOT/build/platforms/android-8/arch-arm/usr/lib/ -L$NDK_ROOT/build/platforms/android-8/arch-arm/usr/lib/
И дополнительные параметры конфигурации:
--enable-extras=no --enable-strict=no --enable-static --enable-shared=no --enable-tests=no --enable-samples=no --enable-dyload=no --enable-tools=no --host=arm-eabi --with-data-packaging=archive
У меня нет 'Некоторое время мы делали это вручную, в настоящее время все это в специальном скрипте на основе Python.Если у вас возникнут другие проблемы, я, вероятно, расскажу вам, в чем проблема.
Удачи!