Después de actualizar a Android Studio 2.2/gradle plugin 2.2.0: "no se pudo obtener la propiedad desconocida ''assembleRelease''"
android-studio-2.2 (6)
Después de actualizar Android Studio a la versión 2.2 y el complemento de Gradle a 2.2.0 , recibo el siguiente error:
"No se pudo obtener la propiedad desconocida ''assembleRelease'' para el proyecto '': aplicación'' de tipo org.gradle.api.Project".
Cuando vuelvo a cambiar la versión del complemento a 2.1.3, el código todavía funciona, pero esa no es una opción a largo plazo para mí.
Mi código:
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")
}
Sugerencia: project.ext.androidVersionCode es una variable definida en otro lugar y contiene un número de compilación. El código en assembleRelease.doLast solo moverá / renombrará el archivo apk generado.
Gracias por los consejos! tangens
Dentro del método buildTypes {}, puse este código: funcionó a la perfección
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''
}
}
Puede volver a escribir su tarea un poco e intentar esto:
task renameBuildTask() << {
file(''build/outputs/apk/app-release.apk'').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
dependsOn ''assembleRelease''
}
También puedes consultar this pregunta para comprender mejor.
EDITAR
Como dijo @tangens en un comentario:
Funciona cuando sustituyo el ensamblaje de gradle de llamada, por ejemplo, gradle renameBuildTask. ¡Gracias! La respuesta contiene un error. Correcto sería: tarea renameBuildTask () << {...}
Puedes hacerlo:
task copyApk(dependsOn: "assembleRelease") << {
file(''build/outputs/apk/app-release.apk'').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
}
Tal vez el código de ajuste en afterEvaluate {} será un trabajo:
afterEvaluate {
assembleRelease.doLast {
file(''build/outputs/apk/app-release.apk'').renameTo("AppName-1.0.0-${project.ext.androidVersionCode}.apk")
}
}
gradle-2.14.1 y android gradle plugin 2.2.0
detalles: no se pudo obtener la propiedad desconocida ''assembleDebug'' (2.2-beta)
Tuve el mismo problema después de actualizar Android Studio a 2.2 y Gradle a 2.2. Tengo la tarea copyApk que debe ejecutarse al final de la construcción. Para mayor brevedad, permítame omitir lo que estaba funcionando antes y publicar solo lo que está funcionando en este momento:
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 consola de Gradle muestra que copyApk se ejecutó cerca del final después de packageOfficialRelease, assembleOfficialRelease, justo antes de la última tarea assembleRelease. "Oficial" es un sabor de la aplicación. Obtuve la solución de esta publicación SO . Esencialmente copié la respuesta aquí para su conveniencia. Todos los créditos van al autor de ese post.
tasks.whenTaskAdded { task ->
if (task.name == ''assembleRelease'') {
task.finalizedBy ''yourRenameTasks''
}
}