编译ICS / JB相机应用程序 - 本机库jni-mosaic错误

时间:2012-10-25 12:52:57

标签: 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: 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 lib,位于armeabi-v7a / armeabi / x86中,似乎加载它很好,但它可能不包含MosaicRenderer实现的方法。

我也尝试过编译CyanogenMod相机应用程序https://github.com/CyanogenMod/android_packages_apps_Camera/tree/ics但是我得到了同样的错误......

相机本身适用于静止图像和视频录制,但只要我更改为全景模式,它就会崩溃。

任何人都可以指出我正确的jni-mosaic lib或者可能是我做错了什么?我是否需要做一些事情以使我的应用程序使用JNI / SO文件?

2 个答案:

答案 0 :(得分:1)

您将Java类MosaicRenderer移动到包com.app.camera.panorama,但mosaic_renderer_jni.cpp文件仍然使用本地方法引用com.android.camera.panorama,如

JNIEXPORT void Java_com_android_camera_panorama_MosaicRenderer_reset(

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

JNIEXPORT void Java_com_app_camera_panorama_MosaicRenderer_reset(

答案 1 :(得分:0)

如果有人仍然有兴趣构建Google的原生相机应用程序,我建议您使用此存储库https://android.googlesource.com/platform/packages/apps/Camera2/它不需要构建所有Android操作系统代码。它对我非常有帮助。