В частности, я пытаюсь скомпилировать двоичный файл chainDD su. Я пытался использовать ndk-build
, но, похоже, мне нужно установить NDK_PROJECT_PATH
, но что это должно быть установлено, в документации не описано.
Как скомпилировать простой нативный код с помощью Android.mk?
comment
Обычно вы запускаете ndk-build из своего проекта — сработает ли он, если вы это сделаете?
- person Scott C Wilson   schedule 02.05.2011
comment
Я запустил ndk-build, и он пожаловался на NDK_PROJECT_PATH.
- person user492922   schedule 02.05.2011
comment
Какую версию NDK вы используете?
- person Scott C Wilson   schedule 02.05.2011
comment
Можете ли вы установить NDK_PROJECT_PATH на фактический путь вашего проекта (скажем, $NDK_DIR/samples/your-project, где $NDK_DIR — это путь к NDK)?
- person Scott C Wilson   schedule 03.05.2011
comment
У меня нет большого опыта разработки Android, поэтому я не уверен, каковы минимальные составляющие проекта Android. Достаточно ли файла Android.mk вместе с моими исходными файлами? В настоящее время я устанавливаю свой NDK_PROJECT_PATH в каталог моих исходных файлов и Android.mk. Почему это должен быть подкаталог ndk?
- person user492922   schedule 03.05.2011
comment
Что ж, я изменил структуру каталогов, поместив все в $NDK/samples/su-binary/jni/, и adb запускается, но компиляция не удалась по другим причинам (я опубликую дополнительный вопрос).
- person user492922   schedule 04.05.2011
Ответы (2)
Во-первых, убедитесь, что у вас есть NDK:
http://developer.android.com/tools/sdk/ndk/index.html
Вот самый простой способ скомпилировать двоичный файл C для вашего телефона:
http://developer.android.com/tools/sdk/ndk/index.html
http://www.kandroid.org/ndk/docs/STANDALONE-TOOLCHAIN.html
Обычно $NDK(может отличаться) =
Линукс:
/home/<user>
/android-ndk
Mac OS X:
/Пользователи/<user>
/android-ndk
Оба: $HOME/android-ndk
В терминале:
# create tool-chain - one line
$NDK/build/tools/make-standalone-toolchain.sh --platform=android-3 --install-dir=/tmp/my-android-toolchain
# add to terminal PATH variable
export PATH=/tmp/my-android-toolchain/bin:$PATH
# make alias CC be the new gcc binary
export CC=arm-linux-androideabi-gcc
# compile your C code(I tried hello world)
$CC -o foo.o -c foo.c
# push binary to phone
adb push foo.o /data/local/tmp
# execute binary
adb /data/local/tmp/foo.o
Пожалуйста, дайте мне знать, если я могу помочь!
С уважением,
person
Jared Burrows
schedule
28.05.2013
$NDK/build/tools/make-standalone-toolchain.sh --platform=android-3 --install-dir=/tmp/my-android-toolchain
может выдать ошибку Unable to auto-config arch from toolchain
, согласно
- person Glowin; 12.02.2016
$NDK/build/tools/make-standalone-toolchain.sh --platform=android-3 --install-dir=/tmp/my-android-toolchain
может вызвать ошибку Unable to auto-config arch from toolchain
, в соответствии с этим ответом stackoverflow.com/questions/29444079/, следует добавить --toolchain=arm-linux-androideabi-4.8
gist.github. com/Tydus/11109634
- person Glowin; 12.02.2016
Вам нужно установить папку проекта следующим образом:
project_root
|__ jni/ (включая Android.mk и код C/C++)
|__ другой_каталог
Каталог jni не может изменить имя. и запустите ndk-build в каталоге project_root.
person
onlyxool
schedule
12.03.2013
Вы хотели добавить к этому какое-то форматирование? Ваша структура папок не очень ясна.
- person Dutts; 12.03.2013
Спасибо за ваш ответ. Этой простой структуры каталогов достаточно, чтобы ndk-build заработал. В моем случае я пытался скомпилировать статическую библиотеку для использования в другом проекте, и после запуска ndk-build я нашел файл .a в root_root/obj/local/armeabi.
- person damix911; 30.12.2014