Вопрос:
Сначала извините за мой сломанный английский. Итак, я пытаюсь запустить образец аудио mp3-записи с использованием этого исходного кода: https://github.com/yhirano/Mp3VoiceRecorderSampleForAndroid
Если я создам проект, я получаю сообщение об ошибке:
Error:Execution failed for task ‘:app:ndkBuild’. > A problem occurred starting process ‘command ‘ndk-build.cmd»
Затем я открываю терминал в AndroidStudio и вводят:
1) cd c:\ndk 2) ndk-build
А также получила еще одну ошибку:
Android NDK: Could not find application project directory ! Android NDK: Please define the NDK_PROJECT_PATH variable to point to it. c:ndkbuild/core/build-local.mk:148: *** Android NDK: Aborting . Stop.
Хорошо, я делаю следующий в терминале:
ndk-build NDK_PROJECT_PATH=c:/AndroidStudioProjects/Mp3VoiceRecorderSampleForAndroid-master/
эта команда дает мне положительный результат:
[armeabi] Install : libmp3lame.so => libs/armeabi/libmp3lame.so
Но если я перестрою свой проект, первая ошибка придет снова! Искал много ответов, но не нашел решения. Пожалуйста, помогите! Что я делаю неправильно?
Лучший ответ:
В соответствии с инструкциями на Android NDK: Настройка:
- Перейдите в корневой каталог вашего проекта.
- Выполните ndk-build для создания собственного компонента вашего приложения, введя команду ndk-build в командной строке.
- Создавайте и устанавливайте свой проект так же, как и обычное приложение для Android.
Это очень похоже на то, что вы пропускаете первый шаг (“c:\ndk”, скорее всего, это каталог установки NDK, а не корневой каталог вашего проекта). Скорее всего, потому, что вы пропустили бит в инструкциях по установке, где говорится:
- Обновите переменную среды PATH с расположением каталога, содержащего NDK
который позволит вам запускать ndk-build из любого места.
Если вы действительно хотите создать способ, описанный выше, вы можете попробовать добавить NDK_PROJECT_PATH к переменным пользовательской/системной среды, но это может вызвать таинственные проблемы при попытке создать другой проект NDK.
Ответ №1
Вы используете Android Studio, а AS с текущим плагином gradle игнорирует ваш Makefile, который, безусловно, создает ошибки.
Поскольку встроенная поддержка ndk не поддерживает родные зависимости (которые вам нужны здесь), вы можете просто отключить встроенный вызов ndk-build и сделать вызов ndk-build для градиента напрямую, взяв ваш Makefile в учетной записи:
import org.apache.tools.ant.taskdefs.condition.Os … android { … sourceSets.main { jniLibs.srcDir ‘src/main/libs’ //set .so files location to libs instead of jniLibs jni.srcDirs = [] //disable automatic ndk-build call } // add a task that calls regular ndk-build(.cmd) script from app directory task ndkBuild(type: Exec) { if (Os.isFamily(Os.FAMILY_WINDOWS)) { commandLine ‘ndk-build.cmd’, ‘-C’, file(‘src/main’).absolutePath } else { commandLine ‘ndk-build’, ‘-C’, file(‘src/main’).absolutePath } } // add this task as a dependency of Java compilation tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn ndkBuild } } Ответ №2
Вы не можете создать проект андроида с помощью “ndk-build” (если вы не используете c или c++ для разработки Android). Потому что ndk builder предназначен для компиляции проекта c или c++. Я могу понять вас, почему вы принимаете эту ошибку. Если вы используете библиотеку, написанную с помощью c или c++, в вашем проекте. В результате вы должны перейти в библиотеку, которая была написана c или c++, на терминале, и вы пишете “ndk-build” и запускаете.
Для Ex:
$ cd AndroidStudioProjects/OcrTest/C_or c++ _Project/src/main
$ NDK-сборки
Ответ №3
@ph0b Я использовал ваш build.gradle, но не работал для меня. Теперь я использую это, и это работает нормально.
import org.apache.tools.ant.taskdefs.condition.Os … android { … sourceSets.main { jniLibs.srcDir ‘src/main/libs’ //set .so files location to libs instead of jniLibs jni.srcDirs = [] //disable automatic ndk-build call } // add a task that calls regular ndk-build(.cmd) script from app directory task ndkBuild(type: Exec) { if (Os.isFamily(Os.FAMILY_WINDOWS)) { commandLine ‘ndk_path’ + ‘ndk-build.cmd’, ‘-C’, file(‘src/main’).absolutePath } else { commandLine ‘ndk-build’, ‘-C’, file(‘src/main’).absolutePath } } // add this task as a dependency of Java compilation tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn ndkBuild } } Ответ №4
Я столкнулся с такой же проблемой для моего проекта NDK. Он был разрешен только одной командой. Перейдите в папку jni проекта, в которой содержатся файлы Application.mk и Android.mk.
cd /home/rajib/Desktop/GIT_Code/testProject/jni/
Теперь введите следующую команду
/home/rajib/Android/NDK-Manual/android-ndk-r10e/ndk-build NDK_PROJECT_PATH=./ NDK_APPLICATION_MK=./Application.mk APP_BUILD_SCRIPT=./Android.mk
NB: Здесь вы должны использовать свой собственный путь NDK.
Надеюсь, поможет. Спасибо вам.