我不确定这是否发生过,但我认为它发生在Android Studio及其Gradle的最新更新之后。为什么Gradle会忽略release {}并在调试版本上实现规则?
即,我试图设置释放APK的输出路径。所以我做了这样的
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
def outputPathName = "./apk-release.apk"
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = file(outputPathName)
}
}
}
}
这是一个代码将从其默认位置(/build/outputs/apk
)移动APK和旁边的build.gradle
文件放置。
但是,release{}
被忽略,Android Studio将调试构建移到此位置并重命名它。因此,无论是创建签名APK还是按调试图标来测试调试版本,APK都会被移动并重命名。它应该保持在默认位置,对吧?
这是怎么发生的? Android Studio Gradle中的错误还是我的代码中的错误?
注意:我注意到在我为其创建APK的自定义名称的其他项目中也发生了同样的情况。它也将重命名调试APK,并以相同的方式忽略release{}
。
Android Studio版本:1.3。预览5
这不是无视'release {}';这是它不按照你期望的方式工作。在构建的配置阶段,无论您正在做什么构建,它都会执行该块中的所有脚本;事实上,在配置阶段,它甚至不知道。直到它开始运行任务的执行阶段,构建类型才更为传统。 –
@ScottBarta谢谢苏格兰人。是的,我错误地理解它,因为我不知道执行时间。我认为这是在构建过程中。 CommonsWare也很好地解释了这一点。 – sandalone