Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Agregar claves de liberación en el complemento experimental de Gradle para Android

Hey estoy teniendo algunos problemas al agregar una firma de mi versión de lanzamiento variante. Actualmente estoy usando el gradle experimental 2.5 con el nuevo androide gradle plugin versión 0.1.0.

Build.gradle:

apply plugin: 'com.android.model.application' model { android { compileSdkVersion = 15 buildToolsVersion = "22.0.1" defaultConfig.with { applicationId = "com.testcom.test" minSdkVersion.apiLevel = 14 targetSdkVersion.apiLevel = 14 versionCode = 1 versionName = "1.0" } compileOptions.with { sourceCompatibility JavaVersion.VERSION_1_6 targetCompatibility JavaVersion.VERSION_1_6 } } android.ndk { ... } android.signingConfigs { signed { keyAlias = "meow" keyPassword = "**" storeFile = file("meow-key.keystore") storePassword = "**" } } android.buildTypes { release { isMinifyEnabled = false proguardFiles += file('proguard-rules.pro') signingConfig = signingConfigs.signed } debug { isDebuggable = true isJniDebuggable = true } } // You can modify the NDK configuration for each variant. components.android { binaries.afterEach { binary -> binary.mergedNdkConfig.cppFlags.add( "-DVARIANT=\"" + binary.name + "\"") } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) } 

Mi raíz build.gradle:

 buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle-experimental:0.1.0' } } allprojects { repositories { jcenter() } } 

El error que estoy consiguiendo al ejecutar. / ./gradlew assembleRelease es:

 > Exception thrown while executing model rule: model.android.buildTypes > named(release) > Attempt to read a write only view of model of type 'java.lang.Object' given to rule 'model.android.buildTypes' 

¿Alguien ha tenido un problema similar con el complemento gradle experimental? La ayuda sería muy apreciada. 🙂

3 Solutions collect form web for “Agregar claves de liberación en el complemento experimental de Gradle para Android”

Esta solución funciona para mí y no requiere -Dorg.gradle.model.dsl = true

 model { def signConf android.buildTypes { release { signingConfig = signConf } } android.signingConfigs { create("signed") { keyAlias = "meow" keyPassword = "**" storeFile = file("meow-key.keystore") storePassword = "**" storeType = "jks" signConf = it } } } 

Sin embargo, sólo funciona si sólo tiene un signedConfig.

Debe ser capaz de agregar las claves de liberación con un script como este:

 model { android.buildTypes { release { signingConfig = $("android.signingConfigs.signed") } } android.signingConfigs { create("signed") { keyAlias = "meow" keyPassword = "**" storeFile = file("meow-key.keystore") storePassword = "**" storeType = "jks" } } } 

Actualmente parece ser un error en el complemento.
-Dorg.gradle.model.dsl=true especificar -Dorg.gradle.model.dsl=true cuando ejecute el comando gradle.

También debe tener un problema con proguard. En este caso, puede utilizar el new File("path/to/proguard-rules.pro") lugar de file('proguard-rules.pro')

La forma correcta de hacerlo con la última versión del complemento de Android ( 0.6.0-alpha3 ) es la siguiente:

 android.signingConfigs { create("release") { storeFile = file("../keys.keystore") storePassword = "st0r3pa$$" keyAlias = "SecretKey" keyPassword = "k3ypa$$" } } android.buildTypes { release { signingConfig = $.android.signingConfigs.get("release") } } 

En Gradle 2.9 que es usado por esta versión del plugin, las reglas declaradas pueden depender entre sí usando una sintaxis especial: $.<path-to-element> . El truco consiste en crear la configuración de firma como de costumbre, y luego asignarla a un campo en una regla diferente utilizando esta sintaxis. Gradle se dará cuenta de que la configuración de firma es una dependencia de entrada y le permitirá acceder a ella.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.