集成Google Asset Delivery(Install-Time)导入asset-pack插件报错怎么办
核心错误原因
两个报错均由Asset Pack模块配置逻辑错误导致:
com.android.asset-pack是独立Asset Pack模块的专属插件,不能与com.android.library、com.android.application、kotlin-android等普通模块插件共存在同一个模块的plugins配置中,直接在现有库模块加该插件,会触发插件重复注册kotlinOptions扩展的冲突,也就是你看到的第一个报错。- 清空其他插件只保留asset-pack配置时出现errorCode=-2,是因为你操作的模块本质还是普通Android Library模块,没有被Gradle识别为合法的Asset Pack类型模块,插件无法完成初始化。
正确配置流程
- 第一步:创建独立的Asset Pack模块
不要在现有库模块/主应用模块上修改配置,通过IDE新建模块入口选择Asset Pack类型创建独立模块,IDE会自动生成模块的基础合法配置,生成的build.gradle默认仅引入com.android.asset-pack插件,不要手动往这个模块的plugins块中添加任何其他普通模块插件。你之前写的assetPack配置块可以直接迁移到这个新建模块的build.gradle中,修改packName为你实际的模块名即可。 - 第二步:对齐版本匹配关系
你当前使用的Gradle 7.1.3版本,必须搭配7.1.x系列的Android Gradle Plugin(AGP)使用,com.android.asset-pack插件版本和AGP版本严格绑定,不需要单独指定版本,和项目级AGP版本保持一致即可,版本不匹配会出现各类同步、编译错误。 - 第三步:补全主应用模块配置
Asset Pack最终要关联到主application模块上,不能关联到库模块:- 在主app模块的dependencies中添加Asset Delivery核心依赖
dependencies { implementation 'com.google.android.play:asset-delivery:2.2.2' // kotlin开发场景可补充对应ktx扩展 implementation 'com.google.android.play:asset-delivery-ktx:2.2.2' } - 在主app模块的android配置块中声明关联的Asset Pack模块
android { // 保留你原有的其他配置 assetPacks = [":你新建的Asset Pack模块名称"] } - 检查项目根目录下的settings.gradle文件,确认新建的Asset Pack模块已经被正确include。
- 在主app模块的dependencies中添加Asset Delivery核心依赖
- 第四步:本地调试注意事项
install-time类型的Asset Pack不会在你直接运行debug apk时被打包进去,本地验证需要通过bundletool构建出包含所有asset pack的apks文件再安装到设备,否则调用API时会因为找不到资源包返回错误。
内容的提问来源于stack exchange,提问作者Eco L. Ken
相关产品推荐
相关产品推荐

