android gradle android-studio-2.2

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") }



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'' } }