Подтвердить что ты не робот

Android Studio не удалось создать NDK-проект с ненулевым значением выхода

Я импортировал проект, над которым я работал из среды Android SDK Eclipse, в новую студию Android. Пытаясь запустить проект, я получаю это

Error:Execution failed for task ':app:compileDebugNdk'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'ndk/ndk-build'' finished with non-zero exit value 2

Итак, прежде всего для меня странно видеть эту ошибку, поскольку раньше я работал в Eclipse Android SDK, я сам запускал ndk-build, который я все еще делаю. Итак, Android Studio запускает ndk-build для меня сейчас? Потому что, когда я запускаю его в терминале, у меня нет проблем, и здесь он говорит мне о плохом значении выхода.

И затем я искал в Интернете и нашел "быстрое исправление", которое должно создать пустой .c файл, потому что вы не можете создавать/запускать проект ndk без файлов .c. Это, неудивительно, не работает для меня, потому что у нас есть много файлов .c в папке .jni.

Просто чтобы упомянуть, что я на Macbook Pro под Yosemite, и у проекта не должно быть проблем само по себе.

Заранее благодарим за помощь.

4b9b3361

Ответ 1

Это известная проблема Android Studio, вызванная очень ограниченной поддержкой проектов с поддержкой NDK. Отвечая на ваш вопрос: да, Android Studio теперь запускает ndk-build самостоятельно, но игнорирует существующий Android.mk и генерирует "на лету" (и делает это неправильно для любого нетривиального проекта с поддержкой NDK). Практически лучший способ исправить это - отключить поддержку NDK для Android Studio и вызвать ndk-build из gradle script. Здесь Я описал его более подробно и как его исправить.

Ответ 2

Для простого, вы можете попробовать вставить блок sourceSets.main.jni.srcDirs = [] в android в файл build.gradle. Это скажет gradle искать ваши файлы на С++ по другому пути.

Ответ 3

Вы можете отключить compileDebugNdk, но все еще есть папка jni, видимая в Android Studio. В build.gradle добавьте следующее предложение:

tasks.all { task ->
    if (task.name.startsWith('compile') && task.name.endsWith('Ndk')) {
        task.enabled = false
    }
}

Ответ 4

Чтобы узнать, в чем проблема, выполните следующие действия: 1 - Убедитесь, что вы правильно установили путь ndk, например, в моем проекте я поместил ndk.dir=/usr/local/opt/android-ndk-r13b в local.properties файл
2 - Перейдите в каталог приложений вашего приложения для Android and 3 - Запустите эту команду: <ndk_build_path> -C <jni_path> NDK_OUT=<jniLibDir> all NDK_DEBUG=1 Пример:

/usr/local/opt/android-ndk-r13b/ndk-build -C /MYAPP/app/src/main/jni -j 4 NDK_OUT=../jniLibs all NDK_DEBUG=1

тогда вы можете увидеть, что происходит не так.

Ответ 5

Обнаружена такая же ошибка при импорте проекта из окон в mac, я пробовал все вышеперечисленные решения, не работал. Наконец, заметили, что были "множественные шаблоны целей", которые вызывали эту ошибку.

Решение. Удалите папку "obj" в вашем NDK и перестройте.

Готово!!

Ответ 6

Я столкнулся с той же проблемой и пробовал много вещей, но не работал, и я узнал:

commandLine ndkBuildPath, '-j8', '-C', файл ('src/main'). absolutePath

Пожалуйста, попробуйте это:

Перейдите в src/main/jni, откройте терминал и выполните команду: /home/.../Android/Sdk/ndk-bundle/ndk-build

Он будет строить и показывать больше логов. Что вы поймете неправильно в вашем коде.

Ответ 7

Я почти пробовал все доступные решения. Я использую Windows 10, Android Studio 1.5.1, и единственное, что сработало, - это решение здесь (http://answers.opencv.org/question/58551/androidstudiondk-finished-with-non-zero-exit-value2/)

В приложении > build.gradle добавьте это под объектом android.

android{
...
sourceSets { 
 main { 
      res.srcDirs = ['src/main/res'] 
      jniLibs.srcDirs = ['src/main/jniLibs'] 
      jni.srcDirs = [] // This prevents the auto generation of Android.mk 
 } 
} 

В этой версии Android Studio добавление пути NDK в File > Project Structure > NDK Path автоматически добавляет его в файл local.properties, вы ничего не редактируете.