首页 > 解决方案 > 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。我不确定为什么会生成这些,以及它的原因是什么。有没有办法不生成这些?

标签: androidgradleandroid-gradle-plugin

解决方案


当您按密度拆分时,Android 插件将始终为不支持屏幕密度的设备(至少目前)生成一个“附加”APK。

根据他们的文档

因为每个基于屏幕密度的 APK 都包含一个标签,该标签对 APK 支持的屏幕类型有特定限制,即使您发布了多个 APK,一些新设备也不会匹配您的多个 APK 过滤器。因此,Gradle 始终会生成一个额外的通用 APK,其中包含适用于所有屏幕密度的资产并且不包含标签。您应该将这个通用 APK 与您的每密度 APK 一起发布,以便为与标签不匹配 APK 的设备提供备用。

在您的情况下,因为您还按 ABI 拆分,所以您会获得两个“附加”APK,而不仅仅是一个。


推荐阅读