Улучшенный Android NDK r3
Описание
Здесь выложены дистрибутивы Android NDK r3, пересобранные мной из официальных исходников. Добавлена поддержка C++ exceptions, RTTI и Standard C++ Library (в частности, STL). Изменения небольшие, вы можете увидеть их в предлагаемом my patch
Update: У приложений, собранных с помощью этой версии, могут быть потенциальные проблемы с
запуском на будущих версиях Android. Тем не менее, на текущих версиях (вплоть до Android 2.1) все
работает нормально. Как только я с этим разберусь, будет выпущена новая версия.
Более детальные сведения о потенциальной проблеме с запуском на будущих версиях вы можете
узнать из моей дискуссии с Дэвидом Тернером (архитектором Android)
здесь
Update 2: Проблема решена в последней версии моей сборки (android-ndk-r3-crystax-2). Сборка более
не в экспериментальном состоянии - приложения, собранные с использованием моей версии Android NDK не будут
отличаться с точки зрения ABI (Application Binary Interface) от собранных с помощью официальной версии.
Подробное описание проблемы и как она была решена, вы сможете прочитать в моем
сообщении в Android NDK group.
Update 3: Готова новая версия android-ndk-r3-crystax-3! Список исправленных проблем:
- Crash on attempt to write float value to stream
- Link error when using user defined .so libraries in command line
Скачать
- android-ndk-r3-windows-crystax-3.zip
- android-ndk-r3-darwin-x86-crystax-3.tar.bz2
- android-ndk-r3-linux-x86-crystax-3.tar.bz2
Инструкции по сборке
Вы также можете собрать дистрибутив самостоятельно, если вас не устраивают по каким-либо причинам те версии, что собрал я. Для этого следуйте инструкциям ниже.
Необходимое ПО:
- Для Windows, последняя версия Cygwin
- GNU Make 3.81 или выше
- GNU Makeinfo (наиболее свежая версия)
- GIT (для скачивания исходников android toolchain)
- Наиболее свежая версия GNU Libtool (automake, autoconf и т.д.)
- GNU C/C++ 3.x или выше (для Windows, это должна быть именно 3.x, не 4.x)
- Библиотека ncurses (в случае Cygwin это должен быть пакет ncurses-devel)
- GNU flex (наиболее свежая версия)
- Утилита patch. Скорее всего она уже установлена если вы используете Linux или Mac OS X; в Cygwin она должна быть установлена отдельно
Инструкции
- Скачайте мой патч и сохраните его где-нибудь
- Скачайте android-ndk-r3 для вашей платформы с официального сайта
- Распакуйте полученный архив и перейдите в каталог android-ndk-r3
- Примените мой патч:
patch -p1 <path-to-my-patch
- Установите переменную окружения ANDROID_NDK_ROOT так, чтобы она указывала на текущий каталог:
export ANDROID_NDK_ROOT=`pwd`
- Для Windows, установите переменную окружения CC так, чтобы она указывала на GCC 3:
export CC=gcc-3
- Скачайте исходники android toolchain:
./build/tools/download-toolchain-sources.sh --release=myrelease
Это может занять много времени в зависимости от скорости вашей сети. В конце концов, эта команда скачает исходники и запакует их в /tmp/android-ndk-toolchain-myrelease.tar.bz2 - Запустите команду сборки:
./build/tools/build-toolchain.sh --package=/tmp/android-ndk-toolchain-myrelease.tar.bz2
Эта команда распакует исходники android toolchain (включая binutils, gcc и gdb), пропатчит их и запустит компиляцию. Это может занять довольно много времени в зависимости от вашей конфигурации, поэтому будьте терпеливы. - В конце, когда команда сборки завершится, она напечатает имя архива с собранными инструментами (что-то типа
/tmp/android-ndk-prebuilt-20100309-linux-x86.tar.bz2, фактическое имя будет зависеть от текущей даты).
Запустите команду:
rm -Rf ./build/prebuilt tar xjvf /tmp/android-ndk-prebuilt-20100309-linux-x86.tar.bz2 - Теперь вы можете попробовать протестировать вашу сборку. Соберите приложение hello-jni по стандартной инструкции (я модифицировал его так, что теперь там используется STL и исключения) и запустите на эмуляторе/устройстве
- Наслаждайтесь!
Обратная связь
Bug tracker - здесь вы можете отслеживать статус текущих проблем. Пожалуйста, используйте этот адрес для сообщений о дефектах/пожеланиях.