Ludzie,Nie JNI_OnLoad znaleźć omijając INIT> Shutdown Application
Pracuję nad android aplikacji gdzie potrzebne osobie trzeciej .so biblioteki. Zbudowałem tej biblioteki stron trzecich (z ndk-build) zgodnie z ich instrukcjami, a następnie szukałem , aby dołączyć to .so do mojego projektu Android.
Dlatego wykonałem kroki opisane w dokumentacji/PREBUILTS.html i pomyślnie zbudowałem nowe .so w katalogu jni/prefabrykowanym. Teraz próbowałem wykorzystać możliwości .so, używając go w prostej testowej aplikacji na Androida. Więc co mam zrobić, to:
static {
Log.i("load so > ","load so");
System.loadLibrary("xyz");
}
/* The native functions */
private static native int openFile(String filename);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try{
String path = getPathForDownloadDirectoryFile();
Log.i("file path> ", path);
int num= openFile(path);
}catch(Exception e){
Log.e(">", "could not open the file");
}
}
Teraz, gdy uruchomię mojej aplikacji pojawia się komunikat debugowania mówiąc: Nie JNI_OnLoad znaleźć w /data/data/com.example.myfirstapp/lib/xyz.so 0x411e6738, omijając init , a następnie aplikacja zostanie zamknięta.
Aby uzyskać więcej informacji, Oto dziennik błędów:
No JNI_OnLoad found in /data/data/com.example.mysecondapp/lib/xyz.so 0x411e67a0, skipping init
W/dalvikvm( 570): No implementation found for native Lcom/example/mysecondapp/MainActivity;.openFile:(Ljava/lang/String;)I
D/AndroidRuntime( 570): Shutting down VM
W/dalvikvm( 570): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
E/AndroidRuntime( 570): FATAL EXCEPTION: main
E/AndroidRuntime( 570): java.lang.UnsatisfiedLinkError: Native method not found: com.example.mysecondapp.MainActivity.openFile:(Ljava/lang/String;)I
E/AndroidRuntime( 570): at com.example.mysecondapp.MainActivity.openFile(Native Method)
E/AndroidRuntime( 570): at com.example.mysecondapp.MainActivity.onCreate(MainActivity.java:31)
E/AndroidRuntime( 570): at android.app.Activity.performCreate(Activity.java:5008)
E/AndroidRuntime( 570): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
E/AndroidRuntime( 570): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
E/AndroidRuntime( 570): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
E/AndroidRuntime( 570): at android.app.ActivityThread.access$600(ActivityThread.java:130)
E/AndroidRuntime( 570): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
E/AndroidRuntime( 570): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 570): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 570): at android.app.ActivityThread.main(ActivityThread.java:4745)
E/AndroidRuntime( 570): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 570): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime( 570): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E/AndroidRuntime( 570): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime( 570): at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager( 146): Force finishing activity com.example.mysecondapp/.MainActivity
Ponieważ widziałem, że natywna implementacja dla openFile() Metoda nie został znaleziony, ale ten sam xyz.so lib pracował całkiem miłe z oryginałem przykładowa aplikacja od strony trzeciej. Jestem prawie początkującym światem Android-ndk.
Java-Android-NDK Ninja ... nie wiecie, czego może mi brakować? Gorąco dziękuję za każdą pomoc :)
w prawo! nazwa paczki może być powodem! Pozwól, że wypróbuję to z odpowiednim opakowaniem. Wrócę do ciebie, dzięki! –
Buduję .so z nową strukturą pakietu, która jest moją własnością, ale teraz dostaję błąd [INSTALL_FAILED_MISSING_SHARED] podczas instalacji apk na urządzeniu pomimo faktu, że xyz.so występuje w folderze Project_folder/libs/arm_folder. Masz pojęcie, co może być za tym wszystkim? –
wklej swój plik make, a także spróbuj uruchomić przykład podany w linku, otrzymasz trochę jasności. –