Нативная активность OpenCV4Android не работает
Я скачал последнюю версию OpenCV4Android, версию 2.4.5, и импортировал ее в Eclipse Juno после загрузки всех необходимых плагинов.
Все учебники хорошо работают на моем эмуляторе Android, кроме Native Activity. Когда я пытаюсь запустить его на моем эмуляторе, приложение останавливается с таким сообщением: "К сожалению, OCV Native Activity остановлена".
И мой logcat:
05-05 13:24:54.489: E/AndroidRuntime(884): FATAL EXCEPTION: main
05-05 13:24:54.489: E/AndroidRuntime(884): java.lang.UnsatisfiedLinkError: Couldn't load native_activity from loader dalvik.system.PathClassLoader[dexPath=/data/app/org.opencv.samples.NativeActivity-2.apk,libraryPath=/data/app-lib/org.opencv.samples.NativeActivity-2]: findLibrary returned null
05-05 13:24:54.489: E/AndroidRuntime(884): at java.lang.Runtime.loadLibrary(Runtime.java:365)
05-05 13:24:54.489: E/AndroidRuntime(884): at java.lang.System.loadLibrary(System.java:535)
05-05 13:24:54.489: E/AndroidRuntime(884): at org.opencv.samples.NativeActivity.CvNativeActivity$1.onManagerConnected(CvNativeActivity.java:22)
05-05 13:24:54.489: E/AndroidRuntime(884): at org.opencv.android.AsyncServiceHelper$1.onServiceConnected(AsyncServiceHelper.java:318)
05-05 13:24:54.489: E/AndroidRuntime(884): at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1101)
05-05 13:24:54.489: E/AndroidRuntime(884): at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1118)
05-05 13:24:54.489: E/AndroidRuntime(884): at android.os.Handler.handleCallback(Handler.java:725)
05-05 13:24:54.489: E/AndroidRuntime(884): at android.os.Handler.dispatchMessage(Handler.java:92)
05-05 13:24:54.489: E/AndroidRuntime(884): at android.os.Looper.loop(Looper.java:137)
05-05 13:24:54.489: E/AndroidRuntime(884): at android.app.ActivityThread.main(ActivityThread.java:5041)
05-05 13:24:54.489: E/AndroidRuntime(884): at java.lang.reflect.Method.invokeNative(Native Method)
05-05 13:24:54.489: E/AndroidRuntime(884): at java.lang.reflect.Method.invoke(Method.java:511)
05-05 13:24:54.489: E/AndroidRuntime(884): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-05 13:24:54.489: E/AndroidRuntime(884): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-05 13:24:54.489: E/AndroidRuntime(884): at dalvik.system.NativeStart.main(Native Method)
Что я могу сделать, чтобы решить эту проблему?
3 ответа
Это может быть одной из причин неудачи:
CDT Builder настроен для хостов Windows, в Linux или MacOS ... удалите ".cmd" и оставьте "${NDKROOT}/ndk-build". (зайдите в Свойства -> C/C++ Build -> Builder -> команда Build и удалите ".cmd", возможно, вам также может понадобиться удалить открытую кавычку (") и закрыть кавычку (").)
Во-вторых, проверьте, содержит ли проект libs/[архитектура]/lib[имя-модуля].so после сборки / авто-сборки.
Сначала вы должны попытаться скомпилировать библиотеку. Просто введите корень проекта Android и выполните
/home/user/android-ndk-r8b/ndk-build -C ./
другой пример
/home/user/android-ndk-r8b/ndk-build -C /home/user/opencv/OpenCV-2.4.5-android-sdk/samples/face-detection
Это создаст библиотеку в вашей папке, например.
/home/user/opencv/OpenCV-2.4.5-android-sdk/samples/face-detection/libs/armeabi-v7a/libdetection_based_tracker.so
Полезные ссылки: android_dev_intro, O4A_SDK & android
Эмулятор не может найти родную библиотеку
System.loadLibrary("native_activity");
Вы должны сначала установить APK из openCV_sdk. файл находится на образцах
example-native-activity.apk
Тогда вы можете поиграть с кодом на затмении.