制作签名发布版App Bundle时遇到':app:produceReleaseBundleIdeListingFile'任务配置错误求助
搞定':app:produceReleaseBundleIdeListingFile'的文件不存在问题
老哥,你遇到的这个错误我之前也踩过坑,本质就是Gradle执行Bundle生成任务时,找不到它预期的app-release.aab文件,大概率是签名配置缺漏、构建流程没走对,或者路径没匹配上。结合你的Android Studio 4.2.2版本和给出的Gradle代码,给你几个靠谱的解决步骤:
1. 先补全签名配置(最关键!)
你的Gradle代码里完全没看到签名相关的配置啊!生成签名版App Bundle必须要配置签名信息,不然AS根本没法生成合法的签名包。在android代码块里加上这段:
android { // ... 你原来的defaultConfig、bundle这些配置 ... // 新增签名配置 signingConfigs { release { storeFile file("你的签名文件路径.jks") // 比如填../keystore/my-app-key.jks,注意相对路径或者绝对路径 storePassword "你的密钥库密码" keyAlias "你的密钥别名" keyPassword "你的密钥密码" } } // 把签名配置关联到release构建类型 buildTypes { release { signingConfig signingConfigs.release minifyEnabled false // 如果需要混淆可以改成true,记得配proguard规则 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
要是不想把密码硬编码在Gradle里(避免提交到Git),可以把敏感信息放到项目根目录的gradle.properties里:
RELEASE_STORE_FILE=../keystore/my-app-key.jks RELEASE_STORE_PASSWORD=你的密钥库密码 RELEASE_KEY_ALIAS=你的密钥别名 RELEASE_KEY_PASSWORD=你的密钥密码
然后Gradle里改成引用这些变量:
signingConfigs { release { storeFile file(RELEASE_STORE_FILE) storePassword RELEASE_STORE_PASSWORD keyAlias RELEASE_KEY_ALIAS keyPassword RELEASE_KEY_PASSWORD } }
2. 手动跑一遍完整的bundleRelease任务
有时候IDE的自动构建会跳过一些步骤,不如手动触发完整的构建:
- 打开AS右侧的
Gradle面板,找到你的项目 →Tasks→build→ 双击bundleRelease - 或者直接在终端敲命令:Windows用
gradlew.bat bundleRelease,Mac/Linux用./gradlew bundleRelease
构建完之后,先去E:\E drive\myproject\app\build\outputs\bundle\release\看看有没有app-release.aab——默认生成路径是模块下的build文件夹,不是根目录的release文件夹!如果这里有文件,那就是路径不匹配,你可以指定输出路径到根目录的release:
在buildTypes的release块里加:
release { // ... 其他配置 ... bundle { outputDirectory = file("$rootDir/release") } }
这样生成的aab就会跑到你错误提示的路径里了。
3. 清缓存重新构建试试
有时候AS的缓存抽风也会导致这种找不到文件的问题:
- 点顶部菜单
Build→Clean Project - 然后再点
Build→Rebuild Project - 之后再尝试生成签名Bundle
4. 确认Gradle插件版本和AS匹配
Android Studio 4.2.2对应的Gradle插件版本最好是4.2.0到4.2.2之间,去项目根目录的build.gradle里看看:
buildscript { repositories { google() mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:4.2.2" // 和AS版本对应上 // ... 其他依赖比如firebase、bugsnag这些 ... } }
版本不匹配也可能导致各种奇怪的构建问题,尽量保持一致。
内容的提问来源于stack exchange,提问作者sanket Thakare




