Diferentes formas de lidiar con las dependencias de Android Gradle | de Pooja Shaji | marzo 2023
Como desarrollador de Android, usa Gradle para agregar dependencias, configuraciones, tareas, etc. relacionadas con su proyecto. Es fácil actualizar una aplicación básica. A medida que aumenta el tamaño de la aplicación, los desarrolladores también deben considerar el mantenimiento adecuado de las versiones, bibliotecas, complementos y paquetes que son la fuente principal de las aplicaciones. Como teoría común en la codificación, usamos la función para reutilizar un fragmento de código en varias secciones. Si queremos cambiar una sección específica, solo tenemos que cambiar la lógica en la función. Del mismo modo, podemos usar el catálogo de versiones, buildSrc y ext como fuente única que nos ayuda a mantener las dependencias de Gradle. Podemos ver un caso de uso de ejemplo para un proyecto de varios modelos. Por ejemplo, mira lo siguiente compilar: gradle archivos para el proyecto mencionado Muestra, que tiene dos módulos, uno módulo de aplicación, y un segundo submódulo.build.gradle(:aplicación)plugins {id ‘com.android.application’id ‘org.jetbrains.kotlin.android’}android {compileSdk 31defaultConfig {applicationId «com.example.sample»minSdk 21targetSdk 31versionCode 1versionName «0.1.0»testInstrumentationRunner «androidx.test.runner .AndroidJUnitRunner»}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile(‘proguard-android-optimize.txt’), ‘proguard-rules.pro’}}compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}kotlinOptions {jvmTarget = ‘1.8’} } dependencias { implementación ‘androidx.core:core-ktx:1.7.0’ implementación ‘androidx.appcompat:appcompat:1.4.1’ implementación ‘com.google.android.material:material:1.5.0’ }compilar.gradle(:sub)plugins {id ‘com.android.application’id ‘org.jetbrains.kotlin.android’}android {compileSdk 29defaultConfig {applicationId «com.example.sample»minSdk 21targetSdk 29versionCode 1versionName «0.1.0»testInstrumentationRunner «androidx.test.runner .AndroidJUnitRunner»}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile(‘proguard-android-optimize.txt’), ‘proguard-rules.pro’}}compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}kotlinOptions {jvmTarget = ‘1.8’} } dependencias { implementación ‘androidx.core:core-ktx:1.7.9’ implementación ‘androidx.appcompat:appcompat:1.6.1’ implementación ‘com.google.android.material:material:1.6.0’} Así que el caso de uso anterior hay dos archivos build.gradle: uno para el módulo de la aplicación y otro para el submódulo. Si miramos de cerca ambos archivos build.gradle, podemos ver que Ambos scripts de compilación usan la misma dependencia con una versión diferente y CompileSdk. Si construimos el proyecto, causará conflicto.
Contenidos
1. Liberación manual
Debe revisar cada módulo y actualizar cada compilación. Cree archivos Grails usted mismo. Si la actualización no se realiza correctamente, existe la posibilidad de un conflicto entre los módulos de compilación. Se siente muy tentador resolver proyectos pequeños, pero para proyectos más grandes se convierte en un dolor de cabeza para los desarrolladores resolver cada script de compilación.
2. externo
Con este enfoque, el script de compilación debe contener información sobre los componentes externos del proyecto, como versiones, dependencias, complementos y paquetes en el bloque ext. Estos componentes se pueden configurar de dos maneras: especificando el bloque ext en la compilación raíz. gradle o creando un nuevo archivo Gradle y haciendo referencia a él en build.gradle.
- build.gradle (nivel raíz) o crear por separado versión.gradle / versión.gradle.kts en el proyecto y escribir el siguiente script
ext { compileSdk = 31versiones = [core-ktx= «1.7.9»,appcompat = «1.6.1»,material = «1.6.0»]dependencia = [coreLib:»androidx.core:core-ktx:${versions.core-ktx}»,appcompatLib:»androidx.appcompat:appcompat:${versions.appcompat}»,materialLib:»com.google.android.material:material:${versions.material}»]} entonces llámalo construir.gradleaplicar desde: '$rootDir/version.gradle'plugins { id 'com.android.application'id 'org.jetbrains.kotlin.android'}android {dependencia de implementación .coreLibimplementation dependencia.appcompatLibimplementation dependencia.materia lLib}
3. buildSrc
Otro enfoque para resolver el problema es usar buidSrc. Podemos combinarlo con ADSL Kotlin para una mejor dependencia. Para hacer esto, podemos crear un directorio buildSrc con archivos adicionales Configuración.kt, que contiene detalles relacionados con la configuración, y dependencia.kt, que contiene scripts para crear dependencias. Con la activación del modo DSL en construir.gradle.kts por buildSrc.- Cree un nuevo directorio buildSrc en el proyecto, luego cree build.gradle.kts en el directorio buildSrc
- Cree el directorio src/main/kotlin y cree archivos como
4. Catálogo de versiones
El último método que mencionaré es usar el catálogo de versiones. Un catálogo de versiones contiene una lista de dependencias, representadas como coordenadas. Tenemos dos opciones de implementación. La primera es especificarlo en el archivo settings.gradle y otra forma es crear un archivo libs.versions.toml en la sección Gradle del proyecto.- settings.gradle agrega lo siguiente
- Versiones: esta sección proporciona detalles sobre las versiones.
- Bibliotecas: aquí se especifica la biblioteca que se utilizará en el proyecto.
- Paquete: La sección cubre los paquetes que se utilizarán en los proyectos.
- complementos: se utiliza para definir complementos para el proyecto.