JNI_Onload () не найден и виртуальная машина выключается - PullRequest
5 голосов
/ 30 января 2012

Я новичок в 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 Ответ

1 голос
/ 12 июля 2012

Как уже упоминалось, JNI_OnLoad не требуется.Вот ваша проблема:

Невозможно создать экземпляр действия. ComponentInfo {com.example.NDKDemo / com.example.NDKDemo.NativeLib}: java.lang.ClassCastException: com.example.NDKDemo.NativeLib не может быть приведенto android.app.Activity

Ваша ошибка даже не является проблемой NDK, она выглядит следующим образом: Ваш класс com.example.NDKDemo.NativeLib не может быть приведен к android.app.Activity.

Класс, который вы перечислите в AndroidManifest.xml, является классом, полученным из Activity.Если вы создали класс NDKDemo, как в примере, то это ваша деятельность, и вы должны назвать его в AndroidManifest.xml:

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