2015-06-29 2 views
0

Сначала извините за мой сломанный английский. Итак, я пытаюсь запустить образец записи звука mp3 с помощью этого исходного кода: https://github.com/yhirano/Mp3VoiceRecorderSampleForAndroidAndroid NDK: Не удалось найти каталог проектов приложений?

Если я построить проект, я получил сообщение об ошибке:

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:\ndk\build/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 

Но если я восстановить мой проект первой ошибки снова придет! Искал много ответов, но не нашел решения. Пожалуйста, помогите! Что я делаю неправильно?

ответ

3

В соответствии с инструкциями на Android NDK: Setup:

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

Это очень похоже вы пропускаете первый шаг («C: \\ НДК» наиболее вероятно NDK каталог установки, а не корневой каталог вашего проекта). Скорее всего, потому, что вы пропустили бит в инструкции по установке, где он говорит:

  1. Обновление вашей PATH переменной среды с местоположением каталога, содержащего NDK

, которая позволила бы запускать ndk-build из любого места.

Если вы действительно хотите создать способ, описанный выше, вы можете попробовать добавить NDK_PROJECT_PATH к переменным пользовательской/системной среды, но это может вызвать таинственные проблемы при попытке создать другой проект NDK.

+0

Переход к корневому каталогу не решает эту проблему. –

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 
    } 
} 
1

вы не можете построить андроида проект с «НДК-строй» (если вы не используете с или с ++ для разработки Android). Поскольку ndk builder предназначен для компиляции проекта c или C++. Я могу понять вас, почему вы принимаете эту ошибку. Если вы используете библиотеку, написанную с помощью c или C++, в вашем проекте. В результате вы должны перейти в библиотеку, написанную c или C++, на терминале и написать «ndk-build» и запустить.

Для Ex:

$ кд AndroidStudioProjects/OcrTest/C_orC++ _ Проект/SRC/главная

$ НДК-строить

+0

это не работает для меня в моем корневом каталоге, где живут все мои c и C++-файлы и набрав «ndk-build» – user1709076

+0

, когда я прожил эту проблему, таким образом разрешила мою проблему, но почему этот способ не мог помочь вам не мог понять моего друга. – oguzhan

+1

Это предполагает, что у вас есть ** Android.mk ** файл. Иначе это не сработает. –

1

@ 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 
    } 
} 
1

Я столкнулся с такой же проблемой для своего проекта 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 

N.B: Здесь вы должны использовать свой собственный путь NDK.
Надеюсь, это поможет. Спасибо вам.

Смежные вопросы