После обновления до Android Studio 2.2 / gradle plugin 2.2.0: «невозможно получить неизвестное свойство« assembleRelease »»

После обновления Android Studio до версии 2.2 и Gradle-plugin до версии 2.2.0 я получаю следующую ошибку:

«Не удалось получить неизвестное свойство» assembleRelease 'для проекта': app 'типа org.gradle.api.Project. "

Когда я меняю версию плагина на 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") } 

Подсказка: project.ext.androidVersionCode – это переменная, определенная в другом месте и содержащая номер сборки. Код в assembleRelease.doLast должен просто переместить / переименовать сгенерированный файл apk.

Спасибо за советы! Тангенс

Solutions Collecting From Web of "После обновления до Android Studio 2.2 / gradle plugin 2.2.0: «невозможно получить неизвестное свойство« assembleRelease »»"

Вы можете немного переписать свою задачу и попробовать следующее:

 task renameBuildTask() << { file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk") dependsOn 'assembleRelease' } 

Также вы можете проверить этот вопрос, чтобы лучше понять.

РЕДАКТИРОВАТЬ

Как сказал @tangens в комментарии:

Он работает, когда я заменяю градиент вызова, например, gradle renameBuildTask. Спасибо! Ответ содержит ошибку. Правильно было бы: task renameBuildTask () << {…}

 tasks.whenTaskAdded { task -> if (task.name == 'assembleRelease') { task.finalizedBy 'yourRenameTasks' } } 

У меня была такая же проблема после обновления Android Studio до версии 2.2 и Gradle до версии 2.2. У меня есть task 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 запускался ближе к концу после пакетаOfficialRelease, assembleOfficialRelease, прямо перед последней задачей assembleRelease. «Официальный» – это привкус приложения. Я получил обходной путь с этой должности . Я по существу копировал ответ здесь для вашего удобства. Все кредиты принадлежат автору этого сообщения.

Возможно, код wrap в 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-бета)

Внутри метода 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") }