Android 编译ICS/JB摄像头应用程序-本机库jni马赛克错误

Android 编译ICS/JB摄像头应用程序-本机库jni马赛克错误,android,android-ndk,java-native-interface,android-camera,Android,Android Ndk,Java Native Interface,Android Camera,我想使用ICS/JB相机应用程序具有的全景模式。 我已经下载了源代码(带有参考资料),并设法解决了所有代码编译错误,但一旦我在我的设备上启动应用程序(运行JB),我就会出现以下错误: 10-25 14:42:53.617: E/AndroidRuntime(23147): FATAL EXCEPTION: GLThread 2586 10-25 14:42:53.617: E/AndroidRuntime(23147): java.lang.UnsatisfiedLinkError: Nativ

我想使用ICS/JB相机应用程序具有的全景模式。 我已经下载了源代码(带有参考资料),并设法解决了所有代码编译错误,但一旦我在我的设备上启动应用程序(运行JB),我就会出现以下错误:

10-25 14:42:53.617: E/AndroidRuntime(23147): FATAL EXCEPTION: GLThread 2586
10-25 14:42:53.617: E/AndroidRuntime(23147): java.lang.UnsatisfiedLinkError: Native method not found: com.app.camera.panorama.MosaicRenderer.reset:(IIZ)V
10-25 14:42:53.617: E/AndroidRuntime(23147):    at com.app.camera.panorama.MosaicRenderer.reset(Native Method)
10-25 14:42:53.617: E/AndroidRuntime(23147):    at com.app.camera.panorama.MosaicRendererSurfaceViewRenderer.onSurfaceChanged(MosaicRendererSurfaceViewRenderer.java:49)
10-25 14:42:53.617: E/AndroidRuntime(23147):    at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1505)
10-25 14:42:53.617: E/AndroidRuntime(23147):    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
我确实有一个libjni马赛克库,位于armeabi-v7a/armeabi/x86中,它似乎可以很好地加载它,但它可能不包含马赛克渲染器实现的方法

我还尝试编译CyanogenMod相机应用程序,但我得到了相同的错误

相机本身可以工作,用于静像和录像,但一旦我切换到全景模式,它就会崩溃


有谁能告诉我正确的jni马赛克库或者我做错了什么?我需要做些什么才能让我的应用程序使用JNI/SO文件吗?

您将Java类MosaicRenderer移动到package
com.app.camera.panorama
,但是
mosaic\u renderer\u JNI.cpp
文件仍然具有引用
com.android.camera.panorama
的本机方法,如

JNIEXPORT void Java_com_android_camera_panorama_MosaicRenderer_reset(
您应该更改本机代码中的函数名以反映新的包名,例如

JNIEXPORT void Java_com_app_camera_panorama_MosaicRenderer_reset(

如果有人仍然对构建谷歌的原生摄像头应用程序感兴趣,我建议你使用这个存储库,它不需要构建所有的android操作系统代码。它对我帮助很大

谢谢!:)我不确定这是否是问题所在,因为我再试了一次,这次我把mosaic渲染器放在com.android.camera.panorama中,我得到了相同的错误,但我会在周日确认,如果是问题,我会接受你的答案。再次感谢,但不幸的是,我刚刚检查了mosaic_渲染器_jni.cpp文件(从CyanogenMod源代码编译)它有正确的路径(com.android.camera.panorama)。com.app.camera.panorama包是为我的测试应用程序准备的。我将尝试按照此操作创建正确的so文件。您应该使用
nm
命令检查从
.so
导出的符号。也许您的构建得到了<代码> javaxcom和ANDROIDICAMELAGA-PANORAMAMASMOAICReReReDeleReal[/CODER]用C++ Mangle导出。谢谢您的回复!没有新日志。我假设你是对的,因为我使用的是我在网上找到的libjni马赛克库,它可能使用的是另一个包。我现在从CM源代码处获得了jni文件夹,我正在按照您的建议使用我的应用程序包构建一个新的libjni-mosaic.so(cygwin+ndk)。我将您的答案标记为已接受,因为它可能是我问题的解决方案。我现在遇到了一个不同的问题,但这需要另一个问题。谢谢你的帮助。