Guide de Compilation pour Projets Android Hérités

La compilation de projets Android plus anciens peut souvent présenter des défis en raison de l'évolution rapide des outils et des dépendances. Ce guide explore diverses stratégies et solutions pour résoudre les problèmes de compilation courants.

  1. Gestion des Versions du JDK

Les environnements de développement Android modernes, notamment les dernières versions d'Android Studio, utilisent par défaut des versions récentes du Java Development Kit (JDK). Cependant, les projets Android plus anciens peuvent nécessiter des versions spécifiques du JDK pour compiler correctement. Il est fréquent de devoir basculer antre les JDK 8, 11, 17 et 21. La configuration de la version du JDK peut généralement être ajustée dans les préférences d'Android Studio (par exemple, dans File > Project Structure > SDK Location > Gradle Settings).

  1. Compilation via la Ligne de Commande

Pour contourner les problèmes potentiels liés à l'IDE ou pour automatiser les builds, la compilation par ligne de commande est une approche robuste. Pour les tests et le développement, la tâche assembleDebug est généralement suffisante et ne requiert pas de keystore. Pour les versions de production, assembleRelease est utilisée mais nécessite une configuration de signature.

./gradlew assembleDebug

  1. Remplacement des Dépôts de Bibliothèques

Avec l'arrêt de JCenter, de nombreux projets hérités échoueront à télécharger leurs dépendances. Il est impératif de remplacer JCenter par des dépôts alternatifs fiables dans les fichiers de configuration Gradle de votre projet (généralement build.gradle au niveau du projet ou settings.gradle).

Format Gradle Groovy

Dans build.gradle (projet) ou settings.gradle:

// Dans 'repositories' ou 'dependencyResolutionManagement { repositories { ... } }'
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://repo.huaweicloud.com/repository/maven' }

Format Gradle Kotlin DSL (KTS)

Dans build.gradle.kts (projet) ou settings.gradle.kts:

// Dans 'repositories' ou 'dependencyResolutionManagement { repositories { ... } }'
maven {
   url = uri("https://maven.aliyun.com/repository/jcenter")
}
maven {
   url = uri("https://maven.aliyun.com/repository/google")
}
maven {
   url = uri("https://repo.huaweicloud.com/repository/maven")
}

  1. Intégration de Dépendances Locales

Si une bibliothèque est introuvable, dépréciée ou si vous avez besoin de modifications spécifiques, vous pouvez l'intégrer en tant que module local ou fichier JAR.

Intégration d'un Module Git

Cloner le dépôt de la bibliothèque dans le répertoire racine de votre projet. Ensuite, incluez-le dans settings.gradle (ou settings.gradle.kts) et ajoutez-le comme dépendance dans le module app.

Dans settings.gradle:

// Remplacez 'nom_du_module_lib' par le chemin de votre bibliothèque clonée
include ':nom_du_module_lib'

Dans app/build.gradle:

dependencies {
   implementation project(':nom_du_module_lib')
}

Intégration de Fichiers JAR Locaux

Placez le fichier JAR dans un dossier comme lib/ au sein de votre module et référencez-le directement.

Format Gradle Kotlin DSL:

dependencies {
   implementation(files("lib/mon-api-locale-1.0.jar"))
}

Format Gradle Groovy:

dependencies {
   implementation files("lib/mon-api-locale-1.0.jar")
}

  1. Vérification des Dépendances avec JitPack.io

JitPack.io est un service utile pour compiler des dépôts GitHub directement en artefacts Maven. Si une dépendance est manquante et provient d'un projet GitHub, collez l'URL du dépôt sur JitPack.io pour vérifier si des versions sont compilables et disponibles.

  1. Résolution des Problèmes Spécifiques aux Projets Flutter

Les projets Flutter, en raison de leur dépendance à l'écosystème Android sous-jacent, peuvent rencontrer des problèmes de compilation similaires :

  1. Mise à jour du SDK Flutter: Assurez-vous que la version de votre SDK Flutter correspond aux exigences du fichier pubspec.yaml.

  2. Mise à jour du Wrapper Gradle: Le fichier android/gradle/wrapper/gradle-wrapper.properties doit spécifier une version de Gradle compatible avec votre environnement JDK. ```

    Exemple de mise à jour pour une version récente de Gradle

    distributionUrl=https://services.gradle.org/distributions/gradle-8.8-all.zip

  3. Mise à jour du Plugin Android Gradle (AGP): Le fichier android/build.gradle (au niveau du projet) doit contenir une version d'AGP compatible avec votre version de Gradle et votre configuration.

  4. Mise à jour du Plugin Kotlin: Assurez-vous que la version du plugin Kotlin est compatible avec l'AGP et la version de Kotlin utilisée dans votre projet. ``` // Dans 'android/build.gradle' (au niveau du projet) plugins { id "com.android.application" version "8.3.0" apply false id "org.jetbrains.kotlin.android" version "1.9.20" apply false }

    
    
  5. Correction des Chemins d'Environnement


ANDROID_HOME Introuvable

Si Gradle ne trouve pas votre SDK Android, créez un fichier local.properties à la racine de votre projet (s'il n'existe pas) et spécifiez le chemin du SDK :

sdk.dir=/home/utilisateur/Android/Sdk

Pour Windows, le chemin ressemblerait à :

sdk.dir=C\:\\Users\\VotreNom\\AppData\\Local\\Android\\Sdk

Incompatibilité JDK/Plugin Gradle

Si le plugin Gradle utilisé ne prend pas en charge la version du JDK configurée par défaut, vous pouvez forcer une version spécifique en définissant org.gradle.java.home. Ceci peut être fait dans gradle.properties (généralement dans le dossier android/ du projet Flutter, ou à la racine pour les projets Android natifs) ou dans local.properties.

org.gradle.java.home=/home/utilisateur/opt/jdk-17.0.10

  1. Dépannage: "Toolchain installation does not provide the required capabilities"

Cette erreur indique que la JVM détectée par Gradle n'est pas complète ou ne fournit pas les outils nécessaires (comme le compilateur Java javac). Cela arrive fréquemment sur les systèmes Linux où plusieurs JDK peuvent être installés (par exemple, des versions openjdk fournies par le système d'exploitation qui peuvent être minimalistes ou mal configurées).

Pour résoudre ce problème, il est recommandé de s'assurer qu'un JDK complet et fonctionnnel est installé et de le spécifier explicitement dans local.properties. Il est parfois préférable de désinstaller les JDK système pour éviter les conflits et d'utiliser une distribution de JDK officielle (par exemple, OpenJDK de Adoptium, Oracle, Zulu).

Exemple de configuration dans local.properties pour Linux :

sdk.dir=/home/utilisateur/Android/Sdk
org.gradle.java.home=/home/utilisateur/tools/jdk/zulu17.48.15-ca-jdk17.0.10-linux_x64/

Étiquettes: Android gradle JDK Flutter compilation

Publié le 13 juin à 04h48