android app 64位架構(gòu)升級 適配64位cpu架構(gòu)

一、 本質(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位版本


apk analyze.png

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崩潰等問題

在大西洋海底,阿龍納斯隨尼摩船長去做了一次新奇旅行;
他們腳踩在沉沒了的大陸——一大西洋洲的一座山峰上,
觀賞一座火山的海底噴火口噴出硫磺火石的奇景。
眺望山腳下一座破壞了的城市—一整個沉沒水底的龐貝城。
書中描述傳說中的海底古城:亞特蘭蒂斯。
                            ------《海底兩萬里》
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容