2012-01-30 14 views
5

Jestem nowym użytkownikiem Androida, Wykonałem instrukcje z linku http://marakana.com/forums/android/examples/49.html, aby utworzyć podstawową aplikację przy użyciu NDK.Nie znaleziono narzędzia JNI_Onload() i zamykanie maszyny wirtualnej

Dokładnie podążałem za tymi krokami. Stworzyłem także wspólną bibliotekę. Kiedy uruchomić aplikację, catlog pokazuje następujące błędy:

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

Jest w porządku, jeśli rodzimy wspólna biblioteka nie udostępnia funkcję JNI_OnLoad. To nie jest błąd. –

+0

Dzięki za odpowiedź, gdy uruchamiam tę samą aplikację, pojawia się następujący błąd w Catlog – Chandu

Odpowiedz

1

Jak wspomniano, JNI_OnLoad nie jest konieczne. Oto problem:

Nie można utworzyć wystąpienia aktywności ComponentInfo {com.example.NDKDemo/com.example.NDKDemo.NativeLib}: java.lang.ClassCastException: com.example.NDKDemo.NativeLib nie mogą być oddane do android.app.Activity

Twój błąd nie jest nawet kwestia NDK, wygląda na to: Twoja klasa com.example.NDKDemo.NativeLib nie może być oddane do android.app.Activity.

Klasa, którą wymieniasz w AndroidManifest.xml, pochodzi z działania. Jeśli utworzono klasę NDKDemo jak na przykład wtedy, że twoja działalność i należy wymienić go w AndroidManifest.xml:

<activity android:name="NDKDemo" ... other options ... > 
Powiązane problemy