从小米14安装不上应用说起【适配64位】

一、原因

某天早上,同事突然对我说我换了小米14pro手机但是安装不了公司的打卡软件,怎么办呀。一时间,我也不知道原因,看到给我发的安装不上的截图陷入了沉思。随即打开在git仓库里找到这个项目,到本地编译打开,开始思考解决办法。

二、解决思路

从网上查询了一番,小米14pro 只支持安装64位的应用,可能是老项目没有做64位的适配。等到项目编译好,打开模块下的build.gradle文件,果然如此,没有做64位的适配。

groovy 复制代码
ndk {
    abiFilters 'armeabi', "x86", "x86_64"
}

针对64位做适配,一般都是适配so库,一般来说,如果你的项目中没有使用到so库或者C,C++代码,都是支持64位的。

这里再做下说明,ABI是Application Binary Interface(应用程序二进制接口)的缩写,在Android中,它指的是Android操作系统与设备硬件供应商提供的库之间的接口。ABI定义了程序各个组件在二进制级别上的交互方式,其中一个重要的方面是处理器使用的指令集架构。Android支持多种ABI以适应具有不同硬件架构的设备。

  • ARM(Advanced RISC Machine):
    • ARM是移动设备中常见的架构。
    • 变体:armv5、armv7-A、armv8-A(64位)等。
  • x86:
    • x86是台式机和笔记本电脑中常见的架构。
    • 变体:x86、x86_64(64位)。
  • MIPS(Microprocessor without Interlocked Pipeline Stages):
    • MIPS架构在过去在一些Android设备中被广泛使用,但近年来变得不那么常见。

好了,回归到正题,就要针对项目中这种情况处理so库了,因为这个老项目是从其他项目演变过来的,用不到这些so库,所以我的解决办法就是全部删除掉(当然要对项目中的源代码进行处理),再进行打包处理。

如果你们处理项目中的没有兼容的so库,推荐一个检测插件EasyPrivacy,接入这个就可以方便查看那些so库没有做适配了。

找到没有适配的so库之后,需要找到提供者获取最新兼容的so库或者找到相关官网看是否提供64位的so库。当然代码中还需要进行处理。

groovy 复制代码
ndk {
    abiFilters 'armeabi-v7a', 'arm64-v8a', "x86", "x86_64"
}

这样子打包的时候,在apk中的libs文件夹下就会出现四个对应的文件夹,里面就是对应的so库了。但是这样会增大包的体积。在android{}中配置如下代码,这样子打包之后就会出现四种包对应不同架构的包,这样子包的体积也会减小。

groovy 复制代码
splits {
    abi {
        enable true
        reset()
        include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' //select ABIs to build APKs for
        universalApk true //generate an additional APK that contains all the ABIs
    }
}

回归正题,当我把打好的包发给同事的时候,同事告诉我还是不行。思来想去,排除64位的问题,那么剩下的只有Android版本的问题了。新出的手机肯定是搭载最新的Android版本,目前Android 14 有什么新变动还没有了解到。

从官网看到,映入眼前的第一条就是这个,检查项目中的代码,发现targetSdkVersion 还是16,怪不得安装不上,至此所有问题解决。

相关推荐
GitLqr12 小时前
Flutter 3.44 插件内置 Kotlin (KGP) 双向兼容适配指南
android·flutter·dart
随遇丿而安16 小时前
第11周:Activity 跳转与传值 + 跳转优化
android
私人珍藏库17 小时前
[Android] BBLL 开源第三方B哩电视TV端
android·app·生活·工具·多功能
杉氧19 小时前
跨平台资源管理:一套代码如何搞定 Android、iOS 和 Web 的图片与多语言?
android·架构·android jetpack
安卓修改大师20 小时前
安卓修改大师实战:从反编译到定制的完整APK修改指南
android
柚鸥ASO优化1 天前
安卓APP推广的“降本增效”密码:守好商店内,打好商店外
android·aso优化
我是一颗柠檬1 天前
【Java项目技术亮点】EXPLAIN深度分析与慢查询治理
android·java·开发语言
Android-Flutter1 天前
android compose shadow 阴影 使用
android·kotlin·compose
帅次1 天前
Android 高级工程师面试:Java 多线程与并发 近1年高频追问 22 题
android·java·面试
2501_943782351 天前
【共创季稿事节】摩斯电码转换器:编码表与双向转换的实现
android·华为·鸿蒙·鸿蒙系统