2012-01-30 5 views
5

Tôi mới sử dụng Android, Tôi đã làm theo hướng dẫn trên liên kết http://marakana.com/forums/android/examples/49.html để tạo ứng dụng cơ bản bằng NDK.Không tìm thấy JNI_Onload() và VM tắt

Tôi đã thực hiện đúng các bước đó. Tôi cũng đã tạo thư viện được chia sẻ. Khi tôi chạy các ứng dụng, CatLog cho thấy các lỗi sau đây:

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

Sẽ tốt nếu thư viện gốc không cung cấp chức năng JNI_OnLoad. Nó không phải là một lỗi. –

+0

Cảm ơn bạn đã trả lời, khi tôi đang chạy cùng một ứng dụng, tôi nhận được lỗi sau trong Catlog – Chandu

Trả lời

1

Như đã đề cập, JNI_OnLoad là không cần thiết. Dưới đây là vấn đề của bạn:

Không thể nhanh chóng hoạt động ComponentInfo {com.example.NDKDemo/com.example.NDKDemo.NativeLib}: java.lang.ClassCastException: com.example.NDKDemo.NativeLib không thể được đúc để android.app.Activity

Lỗi của bạn thậm chí không phải là vấn đề NDK, có vẻ như: Lớp học của bạn com.example.NDKDemo.NativeLib không thể truyền tới android.app.Activity.

Lớp bạn liệt kê trong AndroidManifest.xml là lớp học xuất phát từ Hoạt động. Nếu bạn đã tạo một lớp NDKDemo như trong ví dụ, thì đó là hoạt động của bạn và bạn nên đặt tên nó trong AndroidManifest.xml:

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