一、 本質(zhì)
so庫的升級
二、so庫升級
1、so庫檢查
1,首先設(shè)置: abiFilters "armeabi-v7a","arm64-v8a",然后編譯出對應(yīng)apk文件
2,android studio菜單欄build ---> Analyze Apk...--->選擇剛編譯出的apk文件
3,然后在apk的analyze界面下,點擊lib展開,就能看到armeabi-v7a、arm64-v8a兩個文件夾,點擊展開即可查看分析哪些庫沒有64位版本

2、so庫升級
如果so庫比較老,且項目目錄下(比如libs、jniLibs下)沒有對應(yīng)的arm64-v8a的so庫,則需要在官網(wǎng)等途徑找到32位對應(yīng)版本的64位so庫,但很多官網(wǎng)不支持歷史版本的so庫下載,現(xiàn)有三種解決方案(以極光推送核心so庫1.2.7版本,libjcore127.so為例):
方案一:
1,首先設(shè)置 abiFilters 'arm64-v8a'
2, implementation 'cn.jiguang.sdk:jcore:1.2.7' 然后sync
3,sync后,在build文件夾-arm64v8a下查找對應(yīng)so庫
4,找到so庫后,復(fù)制到對應(yīng)的libs、jniLibs/arm64-v8a/文件夾下
方案二:
1,刪掉本地so庫
2, implementation 'cn.jiguang.sdk:jcore:1.2.7' 然后sync
方案三:
1,根據(jù)官網(wǎng)流程,將sdk版本升級到最新
2,升級到最新版本,需要做項目代碼兼容適配,因為最新版和老版sdk的方法、變量、接口等可能有變化
三、實在找不到64位的so庫怎么辦?
如果是自己寫的so庫,編譯出64位版本即可
如果是第三方so庫,比如我在升級過程中,碰到一個圖片壓縮的so庫,確實沒找到64位版本,就直接將其廢棄,找了一個新的圖片壓縮方案進行替換。
四、關(guān)于abiFilters配置
armeabi-v7a版本對應(yīng)32位cpu架構(gòu),arm64-v8a版本對應(yīng)64位cpu架構(gòu);
abiFilters 'armeabi-v7a' //此配置編譯出的apk只支持32位系統(tǒng)
abiFilters 'arm64-v8a' //此配置編譯出的apk只支持64位系統(tǒng)
abiFilters "armeabi-v7a","arm64-v8a" //此配置編譯出的apk支持32位和64位系統(tǒng)
//但apk的包體積會更大
如果工程配置為abiFilters "armeabi-v7a" ,"arm64-v8a",64位cpu架構(gòu)的手機就只會去找arm64-v8a版本的so庫,但是如果打包的apk里有部分64位so庫缺失,會導(dǎo)致app崩潰等問題
在大西洋海底,阿龍納斯隨尼摩船長去做了一次新奇旅行;
他們腳踩在沉沒了的大陸——一大西洋洲的一座山峰上,
觀賞一座火山的海底噴火口噴出硫磺火石的奇景。
眺望山腳下一座破壞了的城市—一整個沉沒水底的龐貝城。
書中描述傳說中的海底古城:亞特蘭蒂斯。
------《海底兩萬里》