我不確定這是否發生過,但我認爲它發生在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