日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

某些情况下安卓引入so冲突的解决

發布時間:2025/3/21 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 某些情况下安卓引入so冲突的解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

年前在做一個項目的時候,為了減小apk的大小,所以就把除了'armeabi'的so都給刪了,經測試無不良情況.

前一段時間又要改某個sdk,換了一個so庫,必須要用64位的(arm64v8a),由于項目時間長了,換了次svn地址,所以就悲劇了,項目以前的64位so都被刪了也找不回來了,而新so庫必須要用64位的,這下就有問題了(加入arm64v8a,就需要其他so也支持64位的,直接把64位的放到armabi下引入會報錯)

解決方案

后來想到loadLibrary的方法有兩個:

1.System.loadLibrary

該方法直接去jniLibs文件夾內尋找so并加載.

比如:jniLibs/armabi/libSDK.so? ? ? 調用方法為:System.loadLibrary("SDK");? 需要掐頭去尾

2.System.load

該方法可以加載本地File路徑的形式加載

于是可以把so文件放在本地,一般來說一種通過網絡下載到本地,另一種通過assets資源文件的形式復制到本地,我選用第二種方式

代碼實現

assets資源拷貝到本地的工具類

import android.content.Context; import android.content.res.AssetManager;import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List;public class AssetCopyer {private String asset_list_fileName;private final Context mContext;private final AssetManager mAssetManager;private File mAppDirectory;public AssetCopyer(Context context, String asset_list_fileName) {mContext = context;mAssetManager = context.getAssets();this.asset_list_fileName = asset_list_fileName;}/*** 將assets目錄下指定的文件拷貝到sdcard中** @return 文件列表 // * @return 是否拷貝成功, true 成功;false 失敗* @throws IOException*/public List<File> copy() throws IOException {List<String> srcFiles = new ArrayList<>();//獲取系統在SDCard中為app分配的目錄,eg:/sdcard/Android/data/$(app's package)//該目錄存放app相關的各種文件(如cache,配置文件等),unstall app后該目錄也會隨之刪除mAppDirectory = mContext.getExternalFilesDir(null);if (null == mAppDirectory) {return null;}//讀取assets/$(subDirectory)目錄下的assets.lst文件,得到需要copy的文件列表List<String> assets = getAssetsList();for (String asset : assets) {//如果不存在,則添加到copy列表if (!new File(mAppDirectory, asset).exists()) {srcFiles.add(asset);}}List<File> fileList=new ArrayList<>();//依次拷貝到App的安裝目錄下for (String file : srcFiles) {fileList.add(copy(file));}return fileList;}/*** 獲取需要拷貝的文件列表(記錄在assets/assets.lst文件中)** @return 文件列表* @throws IOException*/protected List<String> getAssetsList() throws IOException {List<String> files = new ArrayList<>();/*InputStream listFile = mAssetManager.open(new File(asset_list_fileName).getPath());BufferedReader br = new BufferedReader(new InputStreamReader(listFile));String path;while (null != (path = br.readLine())) {files.add(path);}*/ //todo 懶省事,就不用資源內的文件,而是直接用so文件名字進行拼接了for (String s : asset_list_fileName.split("##"))files.add(s);return files;}/*** 執行拷貝任務** @param asset 需要拷貝的assets文件路徑* @return 拷貝成功后的目標文件句柄* @throws IOException*/protected File copy(String asset) throws IOException {InputStream source = mAssetManager.open(new File(asset).getPath());File destinationFile = new File(mAppDirectory, asset);if (destinationFile.exists()) {return destinationFile;}destinationFile.getParentFile().mkdirs();OutputStream destination = new FileOutputStream(destinationFile);byte[] buffer = new byte[1024];int nread;while ((nread = source.read(buffer)) != -1) {if (nread == 0) {nread = source.read();if (nread < 0)break;destination.write(nread);continue;}destination.write(buffer, 0, nread);}destination.close();return destinationFile;} }

先把有相應的so文件放入assets文件夾中

然后調用工具類拷貝so文件,調用System.load()方法來加載相應的so文件

String files = "libIAL.so##libSDL.so";List<File> copy = new AssetCopyer(context, files).copy();for (File f : copy)System.load(f.getAbsolutePath());

然后成功的引入了so文件

總結

以上是生活随笔為你收集整理的某些情况下安卓引入so冲突的解决的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美成人午夜精品免费 | 国产东北女人做受av | 黄色成人免费观看 | 欧美日本不卡 | 丰满大爆乳波霸奶 | 公车激情云雨小说 | 日韩精品在线免费 | 国产91看片 | 国产色视频一区二区三区qq号 | 久久久国产精华液 | 欧美18免费视频 | 麻豆射区| 国产精品成人久久久久久久 | 国模少妇一区二区 | 欧美黄页在线观看 | 麻豆免费在线观看视频 | 四虎在线视频 | 美女网站在线免费观看 | 国产精品成av人在线视午夜片 | 日本一区二区免费在线观看 | 五月精品 | 国产乱码一区二区三区在线观看 | 性——交——性——乱免费的 | 欧美在线视频一区 | 免费一级片网址 | 激情福利社 | 亚洲av无码国产在丝袜线观看 | 亚洲免费在线视频 | 免费一二区 | 超碰在线人 | 爱情岛亚洲品质自拍极速福利网站 | 中文字幕第99页 | 美女免费黄视频 | 婷婷激情电影 | 浪漫樱花动漫在线观看免费 | 亚洲精品国产精品国自产观看浪潮 | 久久人人爽爽 | 人妻熟女一区二区aⅴ水野 91在线观看视频 | 91在线一区二区 | 欧美日本一道本 | 久草视频播放 | 亚洲第一二三四区 | 亚洲天堂一 | 国产精品www | 国产免费成人av | 精品日韩久久 | 国产成年人视频 | 视频一区二区在线播放 | 直接看毛片 | 五月深爱 | 96精品| 免费成人福利视频 | 91蝌蚪网 | 国产精品666 | 精品人妻在线播放 | 大桥未久av一区二区三区中文 | 久久在线免费观看视频 | 欧日韩精品 | 热99这里只有精品 | 天天草夜夜操 | 私拍在线| 亚洲不卡在线 | av观看网站| 亚洲精品日韩在线 | 黄色片美女| 偷偷操不一样的久久 | 国产二级片 | 国产精品一区二区亚洲 | 456亚洲影视 | www.猫咪av | 亚洲国产日韩精品 | 亚洲精品在线免费看 | 草草视频在线播放 | 黄色大片91 | 日本xxxx18 | 粉嫩av网址 | 欧美aⅴ | 亚洲免费黄色网 | av在线资源| 成人精品一区二区三区中文字幕 | 亚洲一区av在线 | 青娱乐最新地址 | 一区二区不卡av | av大片免费在线观看 | 夜夜爽影院 | 波多野结衣高清电影 | av毛片在线免费观看 | 久久久久中文字幕亚洲精品 | 中文字幕av一区二区三区人妻少妇 | 日本精品一区二区视频 | 黄色片女人 | 草逼国产| 亚洲深夜视频 | 中文字幕日韩欧美一区二区 | 欧美成人另类 | 亚洲精品自拍视频 | 干美女视频 | 成人欧美一区二区 | 日本打屁股网站 |