【问题标题】:No JNI_Onload() found and VM shutting down未找到 JNI_Onload() 并且 VM 正在关闭
【发布时间】:2012-01-30 10:09:58
【问题描述】:

我是 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

【问题讨论】:

  • 原生共享库不提供JNI_OnLoad功能也可以。这不是错误。
  • 感谢您的回复,当我运行相同的应用程序时,我在 Catlog 中收到以下错误

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


【解决方案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 ... >

【讨论】:

    猜你喜欢
    • 2011-06-22
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 2015-01-14
    相关资源
    最近更新 更多