找不到JNI_Onload()并且VM正在关闭

时间:2012-01-30 10:09:58

标签: android android-ndk java-native-interface

我是Android新手, 我按照链接http://marakana.com/forums/android/examples/49.html上的说明使用NDK创建基本应用程序。

我完全遵循了这些步骤。我还创建了共享库。 当我运行应用程序时,CatLog显示以下错误:

Trying to load lib /data/data/com.example.NDKDemo/lib/libndk_demo.so 0x4129dc18
01-30 04:50:58.856: D/dalvikvm(586): Added shared lib
                    /data/data/com.example.NDKDemo/lib/libndk_demo.so 0x4129dc18
01-30 04:50:58.856: D/dalvikvm(586): No JNI_OnLoad found in 
                    /data/data/com.example.NDKDemo/lib/libndk_demo.so 0x4129dc18,
                    skipping init
01-30 04:50:58.866: D/AndroidRuntime(586): Shutting down VM
01-30 04:50:58.866: W/dalvikvm(586): threadid=1: thread exiting with uncaught 
                    exception (group=0x409c01f8)
01-30 04:50:58.896: E/AndroidRuntime(586): FATAL EXCEPTION: main
01-30 04:50:58.896: E/AndroidRuntime(586): java.lang.RuntimeException:
                    Unable to instantiate activity ComponentInfo
                    {com.example.NDKDemo/com.example.NDKDemo.NativeLib}:
                    java.lang.ClassCastException:
                    com.example.NDKDemo.NativeLib cannot be cast to android.app.Activity

1 个答案:

答案 0 :(得分:1)

如前所述,JNI_OnLoad不是必需的。这是你的问题:

  

无法实例化活动ComponentInfo                       {com.example.NDKDemo / com.example.NDKDemo.NativeLib}:                       java.lang.ClassCastException:                       com.example.NDKDemo.NativeLib无法强制转换为android.app.Activity

您的错误甚至不是NDK问题,它看起来像:您的类com.example.NDKDemo.NativeLib无法转换为android.app.Activity。

您在AndroidManifest.xml中列出的类是派生自Activity的类。如果你在示例中创建了一个NDKDemo类,那那就是你的活动,你应该在AndroidManifest.xml中命名它:

<activity android:name="NDKDemo" ... other options ... >