如何仅为APK配置assets.srcDirs而不影响App Bundle?
解决方案
你可以通过Gradle的任务判断逻辑,仅在构建APK时动态设置assets.srcDirs,避免App Bundle打包时包含重复资源。
在应用模块的build.gradle中添加以下配置:
android { // 保留你原有的Play Asset Delivery相关配置 sourceSets { main { // 默认不额外配置assets目录,确保App Bundle构建时仅使用Play Asset Delivery的资源 } } // 判断当前是否为APK构建任务 def isApkBuild = !gradle.startParameter.taskNames.any { taskName -> taskName.startsWith("bundle") } if (isApkBuild) { sourceSets.main.assets.srcDirs = ['../assets/src/main/assets'] } }
原理说明
- 当执行
bundleDebug、bundleRelease等App Bundle构建任务时,isApkBuild会返回false,不会添加额外的assets目录,避免与Play Asset Delivery的资源冲突。 - 当执行
assembleDebug、assembleRelease等APK构建任务时,isApkBuild返回true,会将指定的常规资源目录添加到assets.srcDirs中,满足APK的资源需求。
内容的提问来源于stack exchange,提问作者Henste93
相关产品推荐
相关产品推荐

