android加载so文件失败,Android无法加载'.so.1'文件
我想你還沒有通過JNI加載原生庫到Java的概念。
首先在java中定義本地方法并在本機(jī)中執(zhí)行相應(yīng)的實(shí)現(xiàn)并編譯它(您必須按照命名約定注冊本地方法1)2)在jni_onload中注冊本地方法...我認(rèn)為你一定已經(jīng)這樣做了,如果沒有檢查http://www.ntu.edu.sg/home/ehchua/programming/android/android_ndk.html)
接下來,你必須在任何調(diào)用之前加載本地庫。這必須做一次。您可以通過定義做一個活動:
靜態(tài){
的System.loadLibrary( “mylib.so”);
}
注意在編譯庫,你會已經(jīng)得到了庫名libXYZ.so,但加載在Java庫時的“LIB”應(yīng)該被忽略,僅僅的System.loadLibrary(XYZ.so) 如果您使用的是NDK,則該庫已經(jīng)被復(fù)制到Java項目> libs> armeabi文件夾中,如果沒有,則必須將您的lib.so復(fù)制到那里
現(xiàn)在,如果您有多個共享庫,依賴于lib.so,然后是第二等,即
靜態(tài){
System.loadLibrary(independent_lib.so); //應(yīng)該僅依賴于android庫文件 System.loadLibrary(next_dependent_lib1.so); //可以依靠android庫和independent_lib.so System.loadLibrary(next_dependent_lib2.so); //可以依靠的Android庫,independent_lib.so,next_dependent_lib1.so ..... .... ..
}
如果混雜起來,VM將不能夠鏈接庫并拋出一個不滿意的鏈接錯誤。
最后,所有這些.so都將成為你的apk文件的一部分,并且它只會被運(yùn)行到系統(tǒng)庫。除非它的電話根本不能提取.so。如果您按照上述方法,則不需要將任何.so添加到系統(tǒng)中。只有建立在日食/ Cygwin和運(yùn)行
希望這有助于
問候, Shrish
總結(jié)
以上是生活随笔為你收集整理的android加载so文件失败,Android无法加载'.so.1'文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 魔兽世界8.2机械猫外观涂色怎么得到?机
- 下一篇: xamarin android 通知,在