В частности, я пытаюсь скомпилировать двоичный файл chainDD su. Я пытался использовать ndk-build, но, похоже, мне нужно установить NDK_PROJECT_PATH, но что это должно быть установлено, в документации не описано.
Вопрос
Как скомпилировать простой нативный код с помощью Android.mk?
- Обычно вы запускаете ndk-build из своего проекта - сработает ли он, если вы это сделаете? Scott C Wilson 02.05.2011
- Я запустил ndk-build, и он пожаловался на NDK_PROJECT_PATH. user492922 02.05.2011
- Какую версию NDK вы используете? Scott C Wilson 02.05.2011
- Можете ли вы установить NDK_PROJECT_PATH на фактический путь вашего проекта (скажем, $NDK_DIR/samples/your-project, где $NDK_DIR - это путь к NDK)? Scott C Wilson 03.05.2011
- У меня нет большого опыта разработки Android, поэтому я не уверен, каковы минимальные составляющие проекта Android. Достаточно ли файла Android.mk вместе с моими исходными файлами? В настоящее время я устанавливаю свой NDK_PROJECT_PATH в каталог моих исходных файлов и Android.mk. Почему это должен быть подкаталог ndk? user492922 03.05.2011
- Что ж, я изменил структуру каталогов, поместив все в $NDK/samples/su-binary/jni/, и adb запускается, но компиляция не удалась по другим причинам (я опубликую дополнительный вопрос). user492922 04.05.2011
Ответы
Ответ 1 · рейтинг 9 · Jared Burrows
Во-первых, убедитесь, что у вас есть NDK:
http://developer.android.com/tools/sdk/ndk/index.html
Вот самый простой способ скомпилировать двоичный файл C для вашего телефона:
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
Пожалуйста, дайте мне знать, если я могу помочь!
С уважением,
Ответ 2 · рейтинг 4 · onlyxool
Вам нужно установить папку проекта следующим образом:
project_root
|__ jni/ (включая Android.mk и код C/C++)
|__ другой_каталог
Каталог jni не может изменить имя. и запустите ndk-build в каталоге project_root.
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.