type tutorial studio que flavors flavor ext debug android gradle android-gradle android-keystore

studio - flavors android tutorial



MĂșltiples signingConfigs para mĂșltiples variantes (1)

La respuesta vinculada está funcionando realmente bien. Lo compilé así (con buildTools 1.3.1 y gradle-wrapper 2.7). El error que estaba teniendo (No se pudo encontrar la propiedad "gratis" en el contenedor ProductFlavor) se debe seguramente al hecho de que sus tipos de compilación están definidos antes de los productFlavors en su build.gradle

Esto no funcionará

signingConfigs { freeBeta {} freeRelease {} paidBeta {} paidRelease {} } buildTypes { debug {} beta {} release {} } productFlavors { free {} paid {} }

Esto funcionaría (simplemente cambiando el orden de definición de productFlavors y buildType)

signingConfigs { freeBeta {} freeRelease {} paidBeta {} paidRelease {} } productFlavors { free {} paid {} } buildTypes { debug {} beta {} release {} }

Aquí hay un ejemplo completo de trabajo:

signingConfigs { freeBeta { keyAlias ''freeBeta'' keyPassword ''test'' storeFile file(''C:/keystore.jks'') storePassword ''test'' } freeRelease { keyAlias ''freeRelease'' keyPassword ''test'' storeFile file(''C:/keystore.jks'') storePassword ''test'' } paidBeta { keyAlias ''paidBeta'' keyPassword ''test'' storeFile file(''C:/keystore.jks'') storePassword ''test'' } paidRelease { keyAlias ''paidRelease'' keyPassword ''test'' storeFile file(''C:/keystore.jks'') storePassword ''test'' } } productFlavors { free { } paid { } } buildTypes { debug { } beta { productFlavors.free.signingConfig signingConfigs.freeBeta productFlavors.paid.signingConfig signingConfigs.paidBeta } release { productFlavors.free.signingConfig signingConfigs.freeRelease productFlavors.paid.signingConfig signingConfigs.paidRelease } }

¿Cómo puedo configurar diferentes configuraciones de firma para diferentes variantes?

Por ejemplo, actualmente tenemos buildtypes Debug / Beta / Release con 2 sabores, gratuitos y de pago, lo que da como resultado 6 variantes. Para hacerlo un poco más fácil, olvidemos las variantes de Debug y solo nos enfocamos en freeBeta / paidBeta / freeRelease / paidRelease.

Lo que me gustaría, es que cada variante use un diferente signingConfig diferente.

Hasta ahora, las únicas soluciones que he podido encontrar es colocar firmSfigs en BuildTypes para que todas las variantes de Beta tengan los mismos signingConfigs:

buildTypes { beta { signingConfigs.beta } release { signingConfigs.release } }

Alternativamente, usando los sabores, en cuyo caso todas las variantes gratuitas tendrían los mismos signingConfigs:

productFlavors { free { signingConfig signingConfigs.free applicationId ''com.example.free'' } paid { signingConfig signingConfigs.paid applicationId ''com.example.paid'' } }

¿Hay alguna manera de hacer esto en el producto actual Cierre de fragancias? ¿Puede esto solo solucionarse sobrescribiendo android.applicationVariants.all { variant -> y aplicando manualmente un signingConfig para cada variante de aplicación en función de algún esquema de nombres u otro feo truco?

También encontré esta respuesta , pero no parece funcionar en las últimas herramientas de compilación; al compilar recibo el siguiente error:

FALLO: la compilación falló con una excepción.

  • Donde: línea del archivo de compilación ''/home/dev/projects/app/build.gradle'': 61

  • ¿Qué salió mal? Se produjo un problema al evaluar el proyecto '': aplicación''.

    No se pudo encontrar la propiedad ''gratis'' en el contenedor ProductFlavor.