You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建仅适配指定ABI的Android安装时Asset Pack?

关于ABI条件下安装时Asset Pack配置的可行性问题

我希望为Android App Bundle(AAB)创建多个Asset Pack,要求这些Asset Pack在应用安装时下载并安装,但仅当目标设备匹配指定ABI时才执行该操作。我计划为每个支持的ABI各创建一个Asset Pack,共4个。

由于是首次接触Asset Pack,想询问如下的Asset Pack APK清单文件是否可行?

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:dist="http://schemas.android.com/apk/distribution" package="org.some.package" split="assetsfeature">
  <dist:module dist:type="asset-pack">
    <dist:delivery>
      <dist:install-time/>
    </dist:delivery>
    <dist:conditions>
        <dist:abi dist:value="arm64-v8a" />
     </dist:conditions>
    <dist:fusing dist:include="true" />
  </dist:module>
</manifest>

我重点关注的是其中的dist:conditions节点:

<dist:conditions>
     <dist:abi dist:value="arm64-v8a" />
</dist:conditions>

请问这种配置方案是否可行?


配置方案可行,需注意以下关键点

  • 核心逻辑完全正确:通过<dist:install-time/>指定安装时交付,搭配<dist:abi>条件,Google Play会自动识别设备ABI,仅为匹配的设备下发对应Asset Pack,实现你想要的按需安装逻辑。
  • 每个ABI对应的Asset Pack需单独配置清单,修改split属性为唯一值(如assets-arm64-v8a、assets-armeabi-v7a等),避免命名冲突;package属性可与主应用保持一致,或使用主应用包名的子路径。
  • <dist:fusing dist:include="true"/>的设置合理:当构建通用APK(用于本地测试或非Play渠道分发)时,该配置会将符合条件的Asset Pack融合进主APK,保证兼容性。
  • 主应用的build.gradle中必须正确声明所有Asset Pack依赖,示例如下:
android {
    bundle {
        assetPacks = [":asset-pack-arm64", ":asset-pack-armeabi-v7a", ":asset-pack-x86", ":asset-pack-x86_64"]
    }
}
  • 测试阶段可使用bundletool生成指定ABI的APK集,验证Asset Pack的分发逻辑:
bundletool build-apks --bundle=./app.aab --output=./app.apks --abi=arm64-v8a

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 09:57:39