लोग,नहीं JNI_OnLoad लंघन init> अनुप्रयोग बंद
मैं एक Android आवेदन जहाँ मैं एक तीसरी पार्टी .so पुस्तकालय की जरूरत पर काम कर रहा हूँ मिल गया। मैंने को अपने निर्देशों के अनुसार इस तीसरे पक्ष की लाइब्रेरी (एनडीके-बिल्ड के साथ) बनाया और फिर इसे जोड़ने के लिए देख रहा था। इसलिए मेरे एंड्रॉइड प्रोजेक्ट में।
इसलिए मैंने दस्तावेज़/PREBUILTS.html में वर्णित चरणों का पालन किया और सफलतापूर्वक नया बनाया। इसलिए जेनी/प्रीबिल्ट निर्देशिका में। अब मैंने एक सरल परीक्षण एंड्रॉइड ऐप में इसका उपयोग करके .so सुविधाओं का लाभ उठाने का प्रयास किया। तो मुझे क्या करना है:
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");
}
}
अब जब मैं अपने अनुप्रयोग चलाने मैं एक डिबग संदेश कह मिल: नहीं JNI_OnLoad /data/data/com.example.myfirstapp/lib/xyz.so 0x411e6738 में पाया, लंघन init और फिर एप्लिकेशन बंद हो जाता है।
अधिक जानकारी के लिए, यहाँ त्रुटि लॉग है:
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
मैं OpenFile के लिए है कि देशी कार्यान्वयन() विधि नहीं मिला था, लेकिन एक ही xyz.so lib मूल के साथ बहुत साफ काम देख सकते हैं के रूप में तीसरे पक्ष से नमूना ऐप। मैं एंड्रॉइड-एनएनडी दुनिया के साथ बहुत स्टार्टर हूं।
जावा-एंड्रॉइड-एनडीके निनजास .. मुझे लगता है कि मुझे क्या याद आ रहा है? मैं यहां किसी भी मदद की अत्यधिक सराहना करता हूं :)
सही! पैकेज का नाम कारण हो सकता है! मुझे उचित पैकेजिंग के साथ इसे आज़माएं। फिर आप पर वापस आ जाएगा, धन्यवाद! –
मैं नई पैकेज संरचना के साथ बना हूं। इसलिए मेरा खुद का है लेकिन अब मुझे डिवाइस पर एपीके इंस्टॉल करते समय विफलता [INSTALL_FAILED_MISSING_SHARED_LIBRARY] त्रुटि मिल रही है, इस तथ्य के बावजूद कि xyz.so Project_folder/libs/arm_folder के अंतर्गत मौजूद है। कोई विचार क्या इसके पीछे हो सकता है? –
अपनी मेक फ़ाइल पेस्ट करें और लिंक में दिए गए उदाहरण को चलाने का प्रयास करें, आपको कुछ स्पष्टता मिलेगी। –