當前位置:首頁 » 安卓系統 » android載入so失敗

android載入so失敗

發布時間: 2025-03-10 05:17:02

① android在用System.load()載入so文件時出現已經載入到內存錯誤,如何解決

這要看你在c++代碼里有沒有沒釋放的內存了。畢竟能成功運行一次,說明編譯沒錯誤,配置也沒錯誤。看檢察一下你的c++代碼。

② 請教關於android linux動態庫.so的載入調用

有這兩種辦法:
第一種:
需求:
有時候應用修復了native層一個小BUG,應用需要更新了,但是用戶必須下載整個APK包進行安裝,而我們需要的只是替換SO
於是想,能不能載入自定義路徑下的 SO 文件呢
答案是完全沒問題:
使用系統方法:
void java.lang.System.load(String pathName)
但是有一點,pathName 路徑必須有執行許可權,意思就是說我們不能載入SD卡上的SO,因為沒有執行許可權
那也沒關系,我們復制到應用私有目錄下就OK嘛。
看碼
private void load() {
File dir = getDir("libs", Context.MODE_PRIVATE);
File soFile = new File(dir, "libTestJNI.so");
FileUtils.assetToFile(this, "libTestJNI.so", soFile);

try {
System.load(soFile.getAbsolutePath());
} catch (Exception e) {
}
}
這樣就完全OK,
我們只需要架個伺服器,每次啟動時動態監測 SO 文件有沒有更新,有則下載SO,然後載入,這樣就可以避免用戶安裝新的應用,
要知道重新安裝應用的用戶體驗是很差的,要讓用戶無感知的更新他。
第二種:
採用dlopen動態載入第三方庫,無非和system.load一樣,就是要實現指定路徑載入so的目的,這種方法升級so的話,那就的需要一個基本so,一直不變,用來調用dlopen,然後升級另一個so。
這兩種辦法都會遇到一個問題,就是不能直接載入SD卡中的so,因為sd卡沒有執行許可權,不能直接載入這種二進制文件,需要拷貝到data/data/packagename/files/ 目錄下,再次進行載入即可,拷貝也是有講究的,需要用到context.openFileOutput方法。

熱點內容
linuxpython界面 發布:2025-03-10 11:06:38 瀏覽:574
安卓對蘋果怎麼傳通訊錄 發布:2025-03-10 10:47:11 瀏覽:403
十周年源碼 發布:2025-03-10 10:42:09 瀏覽:239
安卓手機內存卡怎麼解決 發布:2025-03-10 10:39:39 瀏覽:964
雲引擎雲伺服器 發布:2025-03-10 10:39:39 瀏覽:672
安卓部落沖突怎麼加好友 發布:2025-03-10 10:38:06 瀏覽:151
如何查詢伺服器的sn 發布:2025-03-10 10:36:40 瀏覽:588
為什麼越來越多人從蘋果轉向安卓 發布:2025-03-10 10:28:08 瀏覽:105
php正則結尾 發布:2025-03-10 10:19:57 瀏覽:780
影音先鋒在線腳本 發布:2025-03-10 10:10:51 瀏覽:421