En la Parte 1 de este tutorial, aprendió cómo leer y compilar archivos Gradle y cómo administrar dependencias de múltiples maneras. En esta parte, aprenderá sobre partes un poco más complejas de Gradle. Al final, podrás: Firmar tus lanzamientos y tener diferentes tipos de compilación. Cree tareas y complementos de Gradle. Cree sabores de construcción con fines de lucro. Primeros pasos Descargue el proyecto inicial haciendo clic en el enlace Descargar materiales en la parte superior o inferior del tutorial. Continuará donde lo dejó en la Parte 1. Esta parte del tutorial se centrará en cómo usar el script Kotlin, ya que ahora es la forma preferida de escribir archivos Gradle. Sin embargo, cada fragmento de código de script de Kotlin tendrá su equivalente en Groovy, por lo que también podrás conocerlo. Si la versión alternativa de Groovy no existe, puedes asumir que el fragmento de código específico que estás viendo es idéntico en ambos casos. Preparándose para publicar: trabajar con tipos de productos y tipos de compilación En el último artículo, terminó de crear su aplicación. Ahora estás pensando en maneras de sacar provecho de ella :]Una solución es tener múltiples versiones de tu aplicación: una versión gratuita y una versión paga. Afortunadamente, Gradle admite esto a nivel de compilación y le permite definir los límites de diferentes tipos de compilación. Pero antes de comenzar, debes comprender cómo Gradle te permite trabajar con diferentes versiones de aplicaciones. Introducción de tipos de compilación De forma predeterminada, hay dos tipos de compilación: depuración y lanzamiento. La única diferencia entre ellos es el valor del parámetro depurable. En otras palabras, puede usar la versión de depuración para revisar registros y depurar la aplicación, pero el tipo de versión se usa para publicar su aplicación en Google Play Store. Configure las propiedades de los tipos de compilación agregando el siguiente código en el bloque de Android de su archivo build.gradle.kts a nivel de módulo: buildTypes { lanzamiento { } depuración { } } Especifique la configuración específica del tipo de su aplicación en la versión de depuración y lanzamiento bloques. Aprenda sobre la firma de compilación Una de las configuraciones más importantes de la compilación es su firma. Sin una firma, no podrá publicar su aplicación porque es necesario verificarlo como propietario de la aplicación específica. Si bien no es necesario firmar la versión de depuración (Android Studio lo hace automáticamente), la versión de lanzamiento debe estar firmada por un desarrollador. Nota: Para continuar, debe generar el almacén de claves para su versión de lanzamiento. Echa un vistazo a este tutorial para encontrar una guía paso a paso. Cuando su almacén de claves esté listo, agregue el código a continuación en el bloque de Android y encima del bloque buildTypes (el orden de la declaración importa) del archivo build.gradle.kts a nivel de módulo: signingConfigs { create(«release») { storeFile = file («ruta a su archivo de almacén de claves») storePassword = «su contraseña de tienda» keyAlias ​​= «su alias de clave» keyPassword = «su contraseña de clave» } } Si está usando Groovy, agregue este código en su lugar: signingConfigs { release { storeFile file («ruta a su archivo de almacén de claves») storePassword «su contraseña de tienda» keyAlias ​​»su alias de clave» keyPassword «su contraseña de clave» } } En el bloque signingConfigs, especifique la información de su firma para los tipos de compilación. Preste atención a la ruta del archivo del almacén de claves. Especifíquelo con respecto al directorio del módulo. En otras palabras, si creó un archivo de almacén de claves en el directorio del módulo y lo llamó «keystore.jks», el valor que debe especificar será igual al nombre del archivo. Actualice el bloque buildTypes para firmar su versión de lanzamiento automáticamente: lanzamiento { signingConfig = signingConfigs.getByName(«release») } Y la versión de Groovy: lanzamiento { signingConfig signingConfigs.release } O, si está usando Groovy: Entonces, asegúrese de mantenga keystorePassword.gradle.kts ignorado por su sistema de control de versiones. Otras técnicas incluyen mantener la contraseña en una variable de entorno a nivel del sistema operativo, especialmente en su sistema remoto de Integración Continua, como CircleCI. Una vez que haya publicado su aplicación en Google Play Store, los envíos posteriores deben utilizar el mismo archivo de almacén de claves y contraseña, así que manténgalos seguros. Asegúrese de NO enviar las contraseñas de su almacén de claves a un sistema de control de versiones como GitHub. Puede hacerlo manteniendo la contraseña en un archivo separado de build.gradle.kts, digamos keystorePassword.gradle.kts en un directorio de firma y luego haciendo referencia al archivo desde el nivel de módulo de la aplicación build.gradle.kts mediante: apply( from = «../Signing/keystorePassword.gradle.kts») aplicar desde: «../Signing/keystorePassword.gradle» Nota: Hay dos consideraciones importantes relacionadas con su archivo de almacén de claves: apply(from = «../Signing /keystorePassword.gradle.kts») se aplica desde: «../Signing/keystorePassword.gradle» Uso de tipos de compilación Para crear varias versiones de su aplicación, debe utilizar tipos de productos. Los tipos son una forma de diferenciar las propiedades de una aplicación, ya sea gratuita/paga, puesta en escena/producción, etc. Distinguirá los tipos de su aplicación con diferentes nombres de aplicación. Primero, agregue los siguientes nombres como cadenas en el archivo strings.xml:
Socializar gratis
Socializar PagadoY eliminar lo existente:
SocializarAhora que la cadena app_name original ya no está disponible, edite su archivo AndroidManifest.xml y reemplace android:label=»@string/app_name» con android:label=»${appName}» dentro de la etiqueta de la aplicación. A continuación, agregue el siguiente código en el bloque de Android de su archivo build.gradle.kts a nivel de módulo: // 1 flavourDimensions.add(«appMode») // 2 productFlavors { // 3 create(«free») { // 4 dimensiones = «appMode» // 5 applicationIdSuffix = «.free» // 6 manifestPlaceholders[«appName»] = «@string/app_name_free» } create(«paid») { dimensión = «appMode» applicationIdSuffix = «.paid» manifestPlaceholders[«appName»] = «@string/app_name_paid» } } Esto es lo que sucede en el código anterior: debe especificar las dimensiones del tipo para que coincidan correctamente con los tipos de compilación. En este caso, sólo necesita una dimensión: el modo de aplicación. En productFlavors, especifique una lista de sabores y sus configuraciones. En este caso, gratis y de pago. Especifique el nombre del primer sabor del producto: gratis. Es obligatorio especificar el valor del parámetro de dimensión. La versión gratuita pertenece a la dimensión appMode. Dado que desea crear aplicaciones separadas para funciones gratuitas y de pago, necesita que tengan identificadores de aplicación diferentes. El parámetro applicationIdSuffix define una cadena que se agregará al applicationId, lo que le otorgará a su aplicación identificadores únicos. manifestPlaceholders le permite modificar las propiedades en su archivo AndroidManifest.xml en el momento de la compilación. En este caso, modifique el nombre de la aplicación dependiendo de su versión. El equivalente de Groovy sería: // 1 FlavorDimensions = [«appMode»]// 2 productFlavors { // 3 gratis { // 4 dimensión «appMode» // 5 applicationIdSuffix «.free» // 6 manifestPlaceholders.appName = «@string/app_name_free» } pagado { dimensión «appMode» applicationIdSuffix «.paid» manifestPlaceholders.appName = «@string/app_name_paid» } } Sincroniza tu proyecto con Gradle nuevamente. Después de la sincronización del proyecto, ejecute el comando de tareas y vea si puede detectar lo que ha cambiado: ./gradlew task Obtendrá una lista de tareas similar a la que obtuvo cuando ejecutó este comando la primera vez: … Build tareas ———– … ensamblarDebug: reúne las salidas principales para todas las variantes de depuración. ensamblarFree: reúne las salidas principales para todas las variantes gratuitas. ensamblarPaido: reúne las salidas principales para todas las variantes pagadas. ensamblarRelease: reúne las salidas principales para todas las variantes de lanzamiento. … ¿Encuentra la diferencia? Mire las tareas en la sección Crear tareas y verá algunas nuevas allí. Ahora tiene comandos separados para cada tipo y tipo de compilación. Ejecute el comando: ./gradlew ensamblaDebug Cuando se complete el comando, verifique el directorio de salida: ls -R app/build/outputs/apk Esto es lo que verá: aplicación de pago gratuita/build/outputs/apk/free: debug app/ build/outputs/apk/free/debug: app-free-debug.apk output-metadata.json app/build/outputs/apk/paid: depuración app/build/outputs/apk/paid/debug: app-paid-debug .apk output-metadata.json Deberías generar dos compilaciones: freeDebug ypaidDebug.

Source link