本机活动OpenCV4Android不起作用

时间:2013-05-05 13:35:33

标签: android opencv logcat native-activity

我下载了最新版本的OpenCV4Android,2.4.5版本,并在下载了所有正确的插件后将其导入Eclipse Juno。

除了Native Activity之外,所有教程都能在我的Android模拟器上正常运行。当我尝试在我的模拟器上运行它时,应用程序停止并显示以下消息:“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 个答案:

答案 0 :(得分:0)

仿真器无法找到本机库

                        System.loadLibrary("native_activity");

你必须先从openCV_sdk安装apk。该文件是样本

    example-native-activity.apk

然后你可以在eclipse上玩代码。

答案 1 :(得分:0)

您应该首先尝试编译lib。只需输入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

这将在您的文件夹中构建一个lib,例如

/home/user/opencv/OpenCV-2.4.5-android-sdk/samples/face-detection/libs/armeabi-v7a/libdetection_based_tracker.so

有用的链接: android_dev_introO4A_SDK& android

答案 2 :(得分:0)

这可能是失败的原因之一:

为Windows主机配置CDT Builder, 在Linux或MacOS上...删除“.cmd”并保留“$ {NDKROOT} / ndk-build”。 (转到属性 - &gt; C / C ++构建 - &gt;构建器 - &gt;构建命令并删除“.cmd”,可能您可能需要删除公开引用(“)并关闭引号(”)。)< / p>

其次在构建/自动构建之后检查项目是否包含libs / [architecture] / lib [module-name] .so。