После обновления до Android Studio 2.2 / Gradle plugin 2.2.0: "не удалось получить неизвестное свойство 'assembleRelease'"
после обновления Android Studio to версия 2.2 и Gradle-plugin to 2.2.0, Я получаю следующую ошибку:
"не удалось получить неизвестное свойство "assembleRelease" для проекта": app " типа org.градля.прикладной программный интерфейс.Проект."
когда я изменяю версию плагина на 2.1.3 код все еще работает, но это не долгосрочный вариант для меня.
мой код:
apply plugin: 'com.android.application'
dependencies {
...
}
android {
...
}
...
assembleRelease.doLast {
file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
}
подсказка: проект.доб.androidVersionCode-это определенная переменная ушла и содержит номер сборки. Код в assembleRelease.доласт будем просто перемещать/переименовать созданный файл APK.
Спасибо за советы! тангенс!--10-->
6 ответов
вы можете немного переписать свою задачу и попробовать так:
task renameBuildTask() << {
file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
dependsOn 'assembleRelease'
}
и этой вопрос, чтобы получить лучшее понимание.
редактировать
как сказал @tangens в комментарии:
он работает, когда я заменяю вызов gradle assemble, например gradle renameBuildTask. Спасибо! Ответ содержит ошибку. Правильно было бы: task renameBuildTask ()
tasks.whenTaskAdded { task ->
if (task.name == 'assembleRelease') {
task.finalizedBy 'yourRenameTasks'
}
}
возможно, обернуть код в afterEvaluate{} будет работать:
afterEvaluate {
assembleRelease.doLast {
file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
}
}
gradle-2.14.1 и Android gradle плагин 2.2.0
подробности: не удалось получить неизвестное свойство ' assembleDebug '(2.2-beta)
У меня была такая же проблема после обновления Android Studio до 2.2 и Gradle до 2.2. У меня есть задача copyApk, которую нужно запустить в конце построения. Для краткости позвольте мне пропустить то, что работало раньше, и опубликовать только то, что работает прямо сейчас:
tasks.create(name: 'copyApk', type: Copy) {
from 'build/outputs/apk/myapp-official-release.apk'
into '.../mobile'
rename('myapp-official-release.apk', 'myapp.apk')
}
tasks.whenTaskAdded { task ->
if (task.name == 'assembleRelease') {
task.dependsOn 'copyApk'
}
}
консоль Gradle показывает, что copyApk был запущен в конце после packageOfficialRelease, assembleOfficialRelease, прямо перед последней задачей assembleRelease. "Официальный" - это аромат приложения. Я получил обходной путь от этот Так пост. Я по сути скопировал ответ здесь для вашего удобства. Все кредиты идут автору этого поста.
внутри метода buildTypes {} я поместил этот код: работал как шарм
task setEnvRelease << {
ant.propertyfile(
file: "src/main/assets/build.properties") {
entry(key: "EO_WS_DEPLOY_ADDR", value: "http://PRODUCTION IP")
}
}
task setEnvDebug << {
ant.propertyfile(
file: "src/main/assets/build.properties") {
entry(key: "EO_WS_DEPLOY_ADDR", value: "http://DEBUG IP TEST")
}
}
tasks.whenTaskAdded { task ->
if (task.name == 'assembleDebug') {
task.dependsOn 'setEnvDebug'
} else if (task.name == 'assembleRelease') {
task.dependsOn 'setEnvRelease'
}
}
можно сделать так:
task copyApk(dependsOn: "assembleRelease") << {
file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
}