当前位置:   article > 正文

Android ABI与应用打包_cfa-2.5.12-foss-arm64-v8a-release.apk

cfa-2.5.12-foss-arm64-v8a-release.apk

基础认识

1.armeabi-v7a: 第7代及以上的 ARM 处理器,很多手机还在使用
2.arm64-v8a: 第8代、64位ARM处理器,目前主流手机CPU架构
3.armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。
4.x86: 平板、模拟器用得比较多。
5.x86_64: 64位的平板。

目前手机基本使用的都是ARM架构,X86架构平板在使用。armeabi架构是早期使用,现在基本只用考虑v7和arm64-v8a两种。
google官方文档对Android ABI架构的说明:https://developer.android.com/ndk/guides/abis?hl=zh-cn
在这里插入图片描述

指定ABI构建APK

默认情况下,Gradle(无论是通过 Android Studio 使用,还是从命令行使用)会针对所有非弃用 ABI 进行构建要限制应用支持的 ABI 集,请使用 abiFilters。例如,要仅针对 64 位 ABI 进行构建,请在 build.gradle 中设置以下配置:

android {
    defaultConfig {
        ndk {
            abiFilters 'arm64-v8a', 'x86_64'
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

如果需要适配多种CPU架构,建议使用分包方式或者Google推荐的App Boudle
前者直接将不同ABI的so集成到对应APK中,输出CPU架构对应的APK,例如
app-hdpiX86-release.apk:仅包含适用于 hdpi 密度和 x86 ABI 的代码和资源。
app-hdpiX86_64-release.apk:仅包含适用于 hdpi 密度和 x86_64 ABI 的代码和资源。
app-mdpiX86-release.apk:仅包含适用于 mdpi 密度和 x86 ABI 的代码和资源。
app-mdpiX86_64-release.apk:仅包含适用于 mdpi 密度和 x86_64 ABI 的代码和资源。
后者利用google play应用分发机制,先上传打包好的aab文件,google后台会将aab分割成多个apk,包括base.apk以及组合了abi、资源文件、density等属性的apk ,用户通过google play安装应用时会将这些apk进行组合后安装到设备上。另外也可以通过google提供的本地工具bundletool对aab文件进行处理获取apks文件,选取合适的进行本地安装即可,本篇不详细展开讲解。

查看手机CPU架构

可使用两个shell命令查看

adb shell getprop ro.product.cpu.abi
或者
adb shell
cat /proc/cpuinfo
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
在这里插入图片描述

ABI类型和CPU架构兼容关系

在这里插入图片描述
需要注意的是

  1. 64位设备(arm64-v8a, x86_64, mips64)能够运行32位的函数库,但是以32位模式运行,在64位平台上运行32位版本的ART和Android组件,将丢失专为64位优化过的性能(ART,webview,media等等)
  2. 当一个应用安装在设备上,只有该设备支持的CPU架构对应的.so文件会被安装。选择abi的顺序:会安装优先级较高的ABI目录,则其它优先级较低的ABI目录(包括其它module中的ABI目录),都无法安装。例如:在cpu是ARMv7架构的手机上,如果检测到armeabi-v7a,就会选择安装armeabi-v7a,则armeabi下的文件,都无法安装了。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/132959
推荐阅读
相关标签
  

闽ICP备14008679号