android - Gradle 密度 abi APK
问题描述
我正在使用带有拆分的 gradle 生成 android apk。
以下是我使用的示例:
splits {
density {
enable true
reset()
include "mdpi", "hdpi"
}
abi {
enable true
reset()
include "x86", "arm64-v8"
}
}
根据文档,它应该生成 4 个 apks mdpi-x86、mdpi-arm64-v8、hdpi-x86 和 hpdi-arm64-v8。
但是,当我运行 gradle 脚本时,会生成 6 个 apk,上面的 4 个和另外两个:x86.apk 和 arm64-v8.apk。我不确定为什么会生成这些,以及它的原因是什么。有没有办法不生成这些?
解决方案
当您按密度拆分时,Android 插件将始终为不支持屏幕密度的设备(至少目前)生成一个“附加”APK。
根据他们的文档:
因为每个基于屏幕密度的 APK 都包含一个标签,该标签对 APK 支持的屏幕类型有特定限制,即使您发布了多个 APK,一些新设备也不会匹配您的多个 APK 过滤器。因此,Gradle 始终会生成一个额外的通用 APK,其中包含适用于所有屏幕密度的资产并且不包含标签。您应该将这个通用 APK 与您的每密度 APK 一起发布,以便为与标签不匹配 APK 的设备提供备用。
在您的情况下,因为您还按 ABI 拆分,所以您会获得两个“附加”APK,而不仅仅是一个。
推荐阅读
- javascript - 为什么改变一个数组会以某种方式改变另一个?
- haskell - Haskell:将正常功能提升到镜头
- javascript - JavaScript/CSS 在从网格单击时显示相应的 div
- html - 如何根据图像大小将文本垂直放置在图像旁边?
- java - @JoinTable 的 JPA 查询
- facebook - fb 受众网络未显示真实广告
- c# - Xamarin 表单在启动应用程序时读取文件并在关闭时保存
- javascript - 如何展平嵌套数组?
- mathematical-optimization - CPLEX 或 Gurobi 数学编程包可以处理这个目标函数吗?
- sql - 如何修复 SQL Server Json 文本格式不正确。在位置 151 发现意外字符