Après avoir mis à jour Android Studio à version 2.2 et le Gradle-plugin à 2.2.0 , le message d'erreur suivant s'affiche:
"Impossible d'obtenir la propriété inconnue 'assembleRelease' pour le projet ': app' de type org.gradle.api.Project."
Quand je change la version du plugin en 2.1.3, le code fonctionne toujours, mais ce n'est pas une option à long terme pour moi.
Mon code:
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")
}
Astuce: Project.ext.androidVersionCode est une variable définie ailleurs et contient un numéro de build. Le code dans assembleRelease.doLast doit simplement déplacer/renommer le fichier apk généré.
Merci pour vos conseils! Tangens
Vous pouvez réécrire un peu votre tâche et essayer comme ceci:
task renameBuildTask() << {
file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
dependsOn 'assembleRelease'
}
Vous pouvez aussi vérifier ceci question pour mieux comprendre.
MODIFIER
Comme @tangens a déclaré dans un commentaire:
Cela fonctionne lorsque je remplace le graduel d’appel assemblé, par exemple. gradle renameBuildTask. Je vous remercie! La réponse contient une erreur. La correction serait: task renameBuildTask () << {...}
tasks.whenTaskAdded { task ->
if (task.name == 'assembleRelease') {
task.finalizedBy 'yourRenameTasks'
}
}
peut-être que le code dans afterEvaluate {} sera un travail:
afterEvaluate {
assembleRelease.doLast {
file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
}
}
gradle-2.14.1 et le plugin Android Gradle 2.2.0
détails: Impossible d'obtenir la propriété inconnue 'assembleDebug' (2.2-beta)
J'ai eu le même problème après la mise à niveau d'Android Studio vers 2.2 et de Gradle vers 2.2 . J'ai une tâche copyApk qui doit être exécutée à la fin de la construction. Par souci de brièveté, laissez-moi ignorer ce qui fonctionnait auparavant et ne publier que ce qui fonctionne actuellement:
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'
}
}
La console Gradle indique que copyApk a été exécuté près de la fin après packageOfficialRelease, assembleOfficialRelease, juste avant la dernière tâche assembleRelease. "Officiel" est un aperçu de l'application . J'ai eu la solution de contournement de ce SO post . J'ai essentiellement copié la réponse ici pour votre commodité. Tous les crédits vont à l'auteur de ce post.
tu peux le faire:
task copyApk(dependsOn: "assembleRelease") << {
file('build/outputs/apk/app-release.apk').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
}
dans la méthode buildTypes {}, j'ai mis ce code: travaillé comme un charme
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'
}
}