Новый CrystaX NDK 10.3.2 доступен для скачивания, предлагая многочисленные исправления и улучшения; скорее всего, вам стоило бы попробовать новую версию вместо устаревшей.
Описание
Здесь выложены дистрибутивы Android NDK r4b, пересобранные мной из официальных исходников. Добавлена поддержка C++ exceptions, RTTI и Standard C++ Library (в частности, STL). Изменения небольшие, вы можете увидеть их в предлагаемом патче
Update: Готова новая версия android-ndk-r4-crystax-2! Список исправленных проблем:
- Snow Leopard ndk-gdb bug: ameabi instead of armeabi
- Snow Leopard ndk-gdb call gensub function not available in BSD awk
- ndk-gdb fail if both emulator and device attached
- Compiler error when including asm/byteorder.h
- ndk-build fails in case of parallel build
- Ability to download toolchain sources over http
- gdbserver binary incompatibility
- Build gcc with threads enabled
- ndk-build: problems with parameters containing spaces
Update 2: Готова новая версия android-ndk-r4-crystax-3! Включает важное исправление:
Update 3: Готова новая версия android-ndk-r4-crystax-4! Список исправленных проблем:
- Install Failed
- Could not package toolchain source archive ?. See
- Build failed on Windows 7 with UAC enabled
- Mac OS X: Build failed if there is no gawk installed
Лицензия
Содержимое CrystaX NDK покрывается различными open-source лицензиями. Более детально можно узнать, заглянув в каждый интересующий файл и прочитав copyright disclaimer.
Обратите внимание, что CrystaX NDK дистрибутивы также содержат уже собранные двоичные файлы - компилятор, линкер и т.д. Их исходные коды доступны на GitHub-е (вы можете использовать сборочный скрипт, чтобы скачать их автоматически).
GCC и сопутствующие инструменты (GDB, binutils и т.д.) покрываются либо GNU General Public License (GPL), либо GNU Lesser General Public License (LGPL). Вы можете найти более детальную информацию о них в файлах COPYING и COPYING.LIB, находящихся в каталогах $NDK/toolchains/$tc/prebuilt/$system.
Набор инструментов LLVM/Clang покрывается LLVM "BSD" лицензией.
По существу, правила лицензирования такие же, как у Android NDK от Google - т.е. разрешается любое использование, как коммерческое, так и некоммерческое. Единственное добавление к этим правилам - это CrystaX-специфичный код, который покрывается разрешительной 'BSD 2-clause' лицензией.
Скачать
Файл | Размер | SHA256 |
---|---|---|
android-ndk-r4-windows-crystax-4.zip | 141.917 MB | 664d3b53fdde47c...100e63773675f2 |
android-ndk-r4-darwin-x86-crystax-4.tar.bz2 | 121.305 MB | 00a63aecf86fcb7...ba13eaa3c9722a |
android-ndk-r4-linux-x86-crystax-4.tar.bz2 | 115.871 MB | dc399e8a8d6dbe0...afd10068b0765a |
Инструкции по сборке
Вы также можете собрать дистрибутив самостоятельно, если вас не устраивают по каким-либо причинам те версии, что собрал я. Для этого следуйте инструкциям ниже.
Необходимое ПО:
- Для 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-r4b для вашей платформы с официального сайта
- Распакуйте полученный архив и перейдите в каталог android-ndk-r4b
- Для пользователей Windows 7 и Vista: исправьте права только что распакованной папки. Наберите в командной строке:
cmd /c "icacls . /grant Everyone:(F) /T"
- Примените мой патч:
patch -p1 <path-to-my-patch
- Установите переменную окружения ANDROID_NDK_ROOT так, чтобы она указывала на текущий каталог:
export ANDROID_NDK_ROOT=`pwd`
- Для Windows пользователей: установите переменную окружения CC так, чтобы она указывала на GCC 3:
export CC=gcc-3
- Для Mac пользователей: если вы планируете использовать собранный пакет на предыдущих версиях Mac OS X (например, вы делаете
сборку на Snow Leopard но планируете использовать ее также и на Leopard), необходимо выставить правильные переменные окружения
CC и LDFLAGS. Если вам это не нужно, просто пропустите этот пункт. Иначе, наберите в терминале следующие строки:
CC="gcc -isystem /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk" export CC LDFLAGS
Это позволить собрать бинарные файлы, которые будут работать на Tiger и более поздних версиях; смените SDK на другой если минимальная версия должна быть не Tiger. - Скачайте исходники android toolchain:
./build/tools/download-toolchain-sources.sh --release=myrelease --package --over-http --verbose --for-date=2010-07-15
Это может занять много времени в зависимости от скорости вашей сети. В конце концов, эта команда скачает исходники и запакует их в /tmp/android-ndk-toolchain-myrelease.tar.bz2 - Запустите команду сборки:
./build/tools/rebuild-all-prebuilt.sh --verbose --package --toolchain-src-pkg=/tmp/android-ndk-toolchain-myrelease.tar.bz2
Эта команда распакует исходники android toolchain (включая binutils, gcc и gdb), пропатчит их и запустит компиляцию. Это может занять довольно много времени в зависимости от вашей конфигурации, поэтому будьте терпеливы. - В конце, когда команда сборки завершится, она напечатает имя архива с собранными инструментами (что-то типа
/tmp/android-ndk-prebuilt-20100716-linux-x86.tar.bz2, фактическое имя будет зависеть от текущей даты).
Запустите команду:
rm -Rf ./build/prebuilt tar xjvf /tmp/android-ndk-prebuilt-20100716-linux-x86.tar.bz2
- Теперь вы можете попробовать протестировать вашу сборку. Соберите приложение hello-jni по стандартной инструкции (я модифицировал его так, что теперь там используется STL и исключения) и запустите на эмуляторе/устройстве
- Наслаждайтесь!