Android NDK: Не удалось найти каталог проектов приложений?

Вопрос: Сначала извините за мой сломанный английский. Итак, я пытаюсь запустить образец аудио 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

Вопрос:

Сначала извините за мой сломанный английский. Итак, я пытаюсь запустить образец аудио 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: Настройка:

  1. Перейдите в корневой каталог вашего проекта.
  2. Выполните ndk-build для создания собственного компонента вашего приложения, введя команду ndk-build в командной строке.
  3. Создавайте и устанавливайте свой проект так же, как и обычное приложение для Android.

Это очень похоже на то, что вы пропускаете первый шаг (“c:\ndk”, скорее всего, это каталог установки NDK, а не корневой каталог вашего проекта). Скорее всего, потому, что вы пропустили бит в инструкциях по установке, где говорится:

  1. Обновите переменную среды 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.
Надеюсь, поможет. Спасибо вам.

Оцените статью
Добавить комментарий