您现在的位置是:首页 >技术教程 >arm32位应用兼容arm64位记录网站首页技术教程

arm32位应用兼容arm64位记录

羽Orz 2024-09-25 12:01:12
简介arm32位应用兼容arm64位记录

目录

背景

兼容64位步骤

1.配置ndk支持arm64

2.进行build构建

3.构建完之后,进行apk包的分析

 4.比较lib/armeabi-v7a和lib/arm64-v8a两个文件夹下的so库文件

5.确定缺少的so库文件属于哪些三方依赖

6.确定完所属依赖后,要么升级依赖、要么直接引入对应的64位so文件

7.进行测试验证

补充


背景

金标联盟64位适配时间节点重要通知(三)金标联盟 | ITGSA | 移动智能终端生态联盟是国内领先的行业非盈利性组织,由领先的智能终端厂商联合发起和建立,旨在推动全行业应用生态标准化、规范化、合规化、高效化,提升全行业应用服务水平和能力,促进行业共赢、共发展。https://www.itgsa.com/home/news/info?newsId=5256238539162624

 

主要就是Arm架构新机不再支持32位应用的安装与使用,所以必须对旧应用进行兼容64位处理

兼容64位步骤

谷歌官方参考文档:https://developer.android.com/distribute/best-practices/develop/64-bit?hl=zh-cn#guidelines-ndk

1.配置ndk支持arm64

armeabi-v7a要保留,后续有用,而且你兼容了新机,旧机也得兼容啊,有些旧机只支持32位(说的就是银联的pda设备,优博讯I9000S)

ndk { abiFilters "armeabi-v7a", "arm64-v8a" }

2.进行build构建

3.构建完之后,进行apk包的分析

【build - Analyze APK...】选择项目目录下 ~/app/build/outputs/apk/debug/app-debug.apk

等待分析完毕

 4.比较lib/armeabi-v7a和lib/arm64-v8a两个文件夹下的so库文件

看看lib/arm64-v8a中缺少哪些so库文件

5.确定缺少的so库文件属于哪些三方依赖

参考:【Android开发】如何快速知道某个so来源于哪个库_android查看so来源_又吹风_Bassy的博客-CSDN博客有时候需要查找某些 so文件是来源于哪个库的,方便删除。以下是一个小技巧:在 app模块的 build.gradle中,追加以下代码://列出所有包含有so文件的库信息tasks.whenTaskAdded { task -> if (task.name=='mergeBiDebugNativeLibs') { //如果是有多个flavor,则用 mergeFlavorDebugNativeLibs的形式 task.doFirst { ...https://blog.csdn.net/eieihihi/article/details/109289312

此外,有些手动引入的so文件,通过上面文章的方法找不到所属依赖,则你需要通过git中文件引入的历史记录,确定是在实现什么功能时引入的,然后基本就知道是哪个依赖的了

6.确定完所属依赖后,要么升级依赖、要么直接引入对应的64位so文件

升级依赖:比如我遇到的Fresco依赖,我直接由1.10.0升级到1.13.0,为什么不升级更高的,因为更高的版本是androidx的,我的旧项目很遗憾,还是support的,暂时没计划迁移

7.进行测试验证

补充

如果你的应用运行在双屏收银机(比如商米x2)上,设备是64位的,需要用到银联mis键盘(32位)收款,那你需要确定调用mis键盘的sdk是否支持64位,不然应用不要兼容64位

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。