构建多个APK

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/www851903307/article/details/80168601

一、支持的ABI

ABI 管理
1、ABI管理:
不同 Android 手机使用不同的 CPU,因此支持不同的指令集。 ABI 可以非常精确地定义应用的机器代码在运行时如何与系统交互。
ABI 包含以下信息:
* 机器代码应使用的 CPU 指令集。
* 运行时内存存储和加载的字节顺序。
* 可执行二进制文件(例如程序和共享库)的格式,以及它们支持的内容类型。
* 用于解析内容与系统之间数据的各种约定。这些约定包括对齐限制,以及系统如何使用堆栈和在调用函数时注册。
* 运行时可用于机器代码的函数符号列表 - 通常来自非常具体的库集。
2、ABI分类:
这里写图片描述

二、为CPU不同的ABI配置多APK

Build Multiple APKs
1、配置
在app所在module在的build.gradle中配置splites块。

android {
   ......
    splits{
        abi {
            enable = true
            reset()
            include "armeabi","armeabi-v7a"
        }
    }
}
  • enable
    如果您将此元素设置为true,Gradle会根据您定义的ABI生成多个APK。默认值是false
  • exclude
    指定用逗号分隔的ABI的名单不生成单独的APK。
  • reset
    清除ABI的默认列表。仅在与include元素结合使用时才使用, 以指定要添加的ABI。
  • include
    指定Gradle应为其生成APK的ABI的逗号分隔列表。只能结合使用reset()来指定ABI的确切列表。
  • universalApk
    如果true,除了per-ABI APK,Gradle还生成通用APK。通用APK包含单个APK中所有ABI的代码和资源。默认值是false。请注意,该选项仅在该splits.abi块中可用。当根据屏幕密度构建多个APK时,Gradle始终会生成一个通用APK,其中包含用于所有屏幕密度的代码和资源。

2、build
单击“ Build”>“Build APK” 。Gradle会为每个密度或ABI创建APK到项目build/outputs/apk/目录中。

三、为屏幕密度配置多APK

1、配置

android {
  ...
  splits {
    density {
      enable true
      exclude "ldpi", "xxhdpi", "xxxhdpi"
      compatibleScreens 'small', 'normal', 'large', 'xlarge'
    }
  }
}
  • enable
    如果您将此元素设置为true,Gradle会根据您定义的屏幕密度生成多个APK。默认值是false。
  • exclude
    指定用逗号分隔的屏幕密度的名单不 生成单独的APK。如果需要排除您的应用不支持的一些密度。
  • reset
    清除屏幕密度的默认列表。仅在与include元素结合使用时才使用, 以指定要添加的密度。
  • include
    指定Gradle应为其生成APK的密度列表。只能结合使用reset()来指定密度的确切列表。
  • compatibleScreens
    指定兼容屏幕尺寸的逗号分隔列表。这会为每个APK在清单中注入一个匹配节点。
    2、根据ABI和屏幕密度构建多APK
  splits {
    density {
      enable true
      reset()
      include "mdpi", "hdpi"
    }
    abi {
      enable true
      reset()
      include "x86", "x86_64"
    }
  }

猜你喜欢

转载自blog.csdn.net/www851903307/article/details/80168601
今日推荐