androidso文件
『壹』 Android提取so文件並使用
參考 http://billhoo.blog.51cto.com/2337751/1125559
在 http://www.jianshu.com/p/5bebc6dfbdec
這篇文章中征程的apk:JniTest.apk把後綴改為JnitTest.zip,打開這個文件,在lib下面會有生成好的.so文件,出來。
可以發現這個.so文件叫libMyTest.so。
然後把這個so文件到新的項目的libsarmeabi下,使用和正常的.so文件一樣。然後修改app的gradle中的android節點中加入:
然後在mainjava 建立生成.so文件那個項目的包名, 把NdkJniUtils文件過來。當然封裝成jar包更好啦。
到此完成,調用NdkJniUtils的方法即可獲得.so文件中的內容。
『貳』 android so文件是什麼
so文件是unix的動態連接庫,是二進制文件,作用相當於windows下的.dll文件。
補充:
在Android中調用動態庫文件(*.so)都是通過jni的方式。
Android中載入so文件的提供的API:
void System.load(String pathName);
說明:pathName:文件名+文件路徑;
『叄』 Android中怎麼調用.so庫文件
將SO文件直接放到libs/armeabi下,然後代碼中System.loadLibrary("xxx");再publicnativestaticintxxx_xxx_xxx();接下來就可以直接調用xxx_xxx_xxx()方法;
2.第二種方案,創建自己的SO文件,在自己的SO文件里調用第三方SO,再在程序中調用自己的SO,這種比較復雜,需要建java類文件,生成.h文件,編寫C源文件include之前生成的.h文件並實現相應方法,最後用androidNDK開發包中的ndk-build腳本生成對應的.so共享庫;求解:
網上說的第二種方案,是自己引用so庫,最後聲稱JAR
------解決方案--------------------------------------------------------
首先要看這個SO是不是JNI規范的SO,比如有沒有返回JNI不直接支持的類型。也就是說這個SO是不是可以直接當作JNI來調用。如果答案是否定的,你只能選第二個方案。
如果答案是肯定的,還要看你是不是希望這個SO的庫直接暴露給JAVA層,如果答案是否定的,你只能選第二個方案,比如你本身也是一個庫的提供者。
一般如果你只有SO,就說明這個是別人提供給你的,你可以要求對方給你提供配套的JAVA調用文件。
1、這個要看這個SO是不是符合JNI調用的規范。還要看你自己的意願。
2、因為第二種方法最靈活,各種情況都可以實現。3、可以------解決方案--------------------------------------------------------
看能不能直接從JAVA調用的最簡單的方法就是看SO里的函數名是不是Java_XXX_XXX_XXX格式的
是就可以,你可以自己寫一個配套的JAVA文件,注意一下SO函數名和JAVA函數名的轉換規則,或者向SO提供方索要;
不是的話就選第二種方案吧。
By;黎約天罰BEY
『肆』 安卓11中*.so.toc是什麼文件
SO文件格式即ELF文件格式,它是Linux下可執行文件,共享庫文件和目標文件的統一格式。TOC這個詞其實是從出版界借用過來的,指的就是每一本書正文前面的「目錄」,它的作用地球人都知道:如果想快速找到書中某一內容,可以先查TOC,然後按照TOC指明的頁碼直接翻即可。
由於Android操作系統的底層基於Linux系統,所以SO文件可以運行在Android平台上。Android系統也同樣開放了C/C++介面供開發者開發Native程序。由於基於虛擬機的編程語言JAVA更容易被人反編譯,因此越來越多的應用將其中的核心代碼以C/C++為編程語言,並且以SO文件的形式供上層JAVA代碼調用,以保證安全性。