Я не уверен, что это произошло раньше, но я думаю, что это произошло после недавних обновлений Android Studio и Gradle.Почему Gradle игнорирует выпуск {} и реализует правило для сборки отладки?
А именно, я пытаюсь установить выходной путь для выпуска 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)
}
}
}
}
Это переместит APK из расположения по умолчанию (/build/outputs/apk
) и поместить его рядом с файлом build.gradle
.
Однако игнорируется release{}
, и Android Studio перемещает сборку отладки в это место, а также переименовывает его. Поэтому либо я создаю подписанный APK, либо нажимаем значок отладки, чтобы протестировать отладочную версию, APK перемещается и переименовывается. И он должен оставаться в своем месте по умолчанию, не так ли?
Почему это происходит? Ошибка в Android Studio Gradle или ошибка в моем коде?
ПРИМЕЧАНИЕ. Я заметил, что то же самое происходит и в моем другом проекте, в котором я создаю собственное имя для APK. Он также переименует debug APK и таким же образом игнорирует release{}
.
Версия для Android для Android: 1.3. Просмотр 5
Это не пренебрежение 'release {}'; это то, что он не работает так, как вы ожидаете. В фазе конфигурации сборки он выполняет весь скрипт в этом блоке независимо от того, какой тип сборки вы делаете; фактически, на этапе конфигурации он еще даже не знает. Это происходит только тогда, когда он переходит на этап выполнения, где он запускает задачи, которые тип сборки более известен. –
@ScottBarta Спасибо шотландец. Да, я понял это неправильно, поскольку я не знал о времени выполнения. Я думал, что это во время процесса сборки. CommonsWare хорошо объяснил это. – sandalone