我想使用 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-mosaic 库,位于 armeabi-v7a/armeabi/x86 中,它似乎可以很好地加载它,但它可能不包含 MosaicRenderer 实现的方法。
我还尝试编译 CyanogenMod 相机应用程序 https://github.com/CyanogenMod/android_packages_apps_Camera/tree/ics但我得到了同样的错误...
相机本身可以工作,用于静止图像和视频录制,但一旦我切换到全景模式,它就会崩溃。
谁能指出我正确的 jni-mosaic 库或者我做错了什么?我是否需要执行某些操作才能让我的应用程序使用 JNI/SO 文件?
最佳答案
您将 Java 类 MosaicRenderer 移动到 com.app.camera.panorama
包中,但是 mosaic_renderer_jni.cpp
文件仍然具有引用 com 的原生方法.android.camera.panorama
,喜欢
JNIEXPORT void Java_com_android_camera_panorama_MosaicRenderer_reset(
您应该更改 native 代码中的函数名称以反射(reflect)新的包名称,例如
JNIEXPORT void Java_com_app_camera_panorama_MosaicRenderer_reset(
关于android - 编译 ICS/JB 相机应用程序 - native 库 jni-mosaic 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13069056/