Я пытаюсь проверить OpenCV Android, на Android Studio, я запутался в том, как включить NDK.
Я хочу, чтобы запустить образцы, которые поставляются с OpenCV. Из 6 предоставленных образцов мне удалось успешно выполнить 4. Исключениями были обнаружение лица и активность натив.
Я подозреваю, что причина в том, что я неправильно настроил свой NDK.
Googling Я нашел кучу дискуссий, но не понимаю их. Это мой первый раз, когда я пытаюсь работать как с NDK, так и с OpenCV, и мое понимание Gradle ограничено.
Я установил переменную окружения в моем .bash_profile
Экспорт ANDROID_NDK = pathTo / android-ndk-r9
Я не понимаю, как это сделать в студии.
Я вижу ссылку на jniFolder, но не понимаю, что это такое и что мне сейчас нужно. Stackoverflow.com/questions/17767557
tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask -> pkgTask.jniFolders = new HashSet<File>() pkgTask.jniFolders.add(new File(projectDir, 'native-libs'))
}
Что я должен делать с этой пастой в конце моего файла build.gradle?
В суммировании, мои вопросы.
Дискуссии Google Group о Gradle и NDK
Для всех, кто сталкивается с этим, я решил это отдельно от Xaviers anwser. Сначала я прочитал OVERVIEW.html, который поставляется с NDK, в каталоге docs. Затем я скомпилировал файлы .mk и .cpp в файл .so. Я сделал это inplace в образце jni directory. Это создало .so-файл в папке libs, который я скопировал в пункт назначения, как указано Xavier.
Если у вас есть библиотеки, которые вы создаете с помощью ndk и хотите поместить их в проект Android с поддержкой gradle (с использованием версии 0.7 + плагина), вы можете просто поместить их в
src/main/jniLibs/<abi>/libfoo.so
например:
src/main/jniLibs/armeabi-v7a/libfoo.so src/main/jniLibs/x86/libfoo.so
И они будут автоматически упакованы.
Если вы хотите сохранить их в папке native-libs, вы можете поместить следующее в свой файл gradle:
android { sourceSets.main { jniLibs.srcDirs = ['native-libs'] } }
Все это действительно говорит о градиенте, где папка jniLibs для основного исходного набора (относительно корня проекта).
Показанный вами фрагмент делает что-то другое. Он говорит, что задача пакета также включает некоторые собственные библиотеки. Это был взлом, который использовался для работы в предыдущей версии с использованием недокументированного API задачи, которые больше не поддерживаются.