2012-01-30 43 views
5

我是Android新手, 我按照链接http://marakana.com/forums/android/examples/49.html上的说明创建了使用NDK的基本应用程序。找不到JNI_Onload()和虚拟机关闭

我完全按照这些步骤。我也创建了共享库。 当我运行应用程序,显示目录下载以下错误:

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 
+0

这是好的,如果本机共享库不提供JNI_OnLoad功能。这不是一个错误。 – 2012-01-30 16:41:45

+0

感谢您的回复,当我运行相同的应用程序时,我在Catlog中收到以下错误 – Chandu 2012-01-31 04:05:13

回答

1

如前所述,JNI_OnLoad是没有必要的。这是你的问题:

无法实例活动ComponentInfo {com.example.NDKDemo/com.example.NDKDemo.NativeLib}: java.lang.ClassCastException: com.example.NDKDemo.NativeLib不能投到android.app.Activity

你的bug甚至不是NDK问题,它看起来像:你的类com.example.NDKDemo.NativeLib不能转换为android.app.Activity。

您在AndroidManifest.xml中列出的类是从Activity派生的类。如果你创建了一个NDKDemo类象的例子,那么这就是你的活动,你应该在AndroidManifest.xml命名为:

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