android app 64位架构升级 适配64位cpu架构

一、 本质

so库的升级

二、so库升级

1、so库检查

1,首先设置: abiFilters “armeabi-v7a”,“arm64-v8a”,然后编译出对应apk文件
2,android studio菜单栏build —> Analyze Apk…—>选择刚编译出的apk文件
3,然后在apk的analyze界面下,点击lib展开,就能看到armeabi-v7a、arm64-v8a两个文件夹,点击展开即可查看分析哪些库没有64位版本
apk analyze界面

2、so库升级

如果so库比较老,且项目目录下(比如libs、jniLibs下)没有对应的arm64-v8a的so库,则需要在官网等途径找到32位对应版本的64位so库,但很多官网不支持历史版本的so库下载,现有三种解决方案(以极光推送核心so库1.2.7版本,libjcore127.so为例):

方案一:

1,首先设置 abiFilters ‘arm64-v8a’
2, implementation ‘cn.jiguang.sdk:jcore:1.2.7’ 然后sync
3,sync后,在build文件夹-arm64v8a下查找对应so库
4,找到so库后,复制到对应的libs、jniLibs/arm64-v8a/文件夹下

方案二:

1,删掉本地so库
2, implementation ‘cn.jiguang.sdk:jcore:1.2.7’ 然后sync

方案三:

1,根据官网流程,将sdk版本升级到最新
2,升级到最新版本,需要做项目代码兼容适配,因为最新版和老版sdk的方法、变量、接口等可能有变化

三、实在找不到64位的so库怎么办?

如果是自己写的so库,编译出64位版本即可
如果是第三方so库,比如我在升级过程中,碰到一个图片压缩的so库,确实没找到64位版本,就直接将其废弃,找了一个新的图片压缩方案进行替换。

四、关于abiFilters配置

armeabi-v7a版本对应32位cpu架构,arm64-v8a版本对应64位cpu架构;

abiFilters 'armeabi-v7a'  //此配置编译出的apk只支持32位系统
abiFilters 'arm64-v8a'  //此配置编译出的apk只支持64位系统
abiFilters "armeabi-v7a","arm64-v8a" //此配置编译出的apk支持32位和64位系统
                                     //但apk的包体积会更大

如果工程配置为abiFilters “armeabi-v7a” ,“arm64-v8a”,64位cpu架构的手机就只会去找arm64-v8a版本的so库,但是如果打包的apk里有部分64位so库缺失,会导致app崩溃等问题

在大西洋海底,阿龙纳斯随尼摩船长去做了一次新奇旅行;
他们脚踩在沉没了的大陆——一大西洋洲的一座山峰上,
观赏一座火山的海底喷火口喷出硫磺火石的奇景。
眺望山脚下一座破坏了的城市—一整个沉没水底的庞贝城。
书中描述传说中的海底古城:亚特兰蒂斯。
                            ------《海底两万里》

猜你喜欢

转载自blog.csdn.net/Duker_tec/article/details/122078281