Comment ajouter un projet de librairie à Android Studio ?

Il est possible avec Android Studio d'inclure un autre projet comme étant une dépendance, ce qui vous donne accès à ses méthodes. Voici comment.

Lorsque vous travaillez sur un projet Android, vous pouvez avoir besoin de méthodes ou de fonctionnalités que vous avez déjà développées au cours d'un autre projet. Il est possible avec Android Studio d'inclure un autre projet comme étant une dépendance, ce qui vous donne accès à ses méthodes. Vous pouvez le faire à l'aide de 2 moyens : avec l'interface graphique de Visual Studio, ou avec le moteur de production Gradle.

Via l'interface graphique de Visual Studio

Pour effectuer la manipulation avec l'interface graphique, ouvrez d'abord le projet dans lequel vous souhaitez ajouter la librairie. Dans le menu File, sélectionnez l'option Project Structure. Dans la fenêtre de gestion de la structure du projet, sélectionnez dans la colonne de gauche l'option Modules, puis Import Module. Sélectionnez alors la bibliothèque correspondant au projet que vous souhaitez importer. Ensuite, choisissez le module représentant le projet que vous développez puis l'option add dependency. Choisissez le module précédemment créé. Les méthodes de votre projet sont importées.

La manipulation peut varier selon les versions d'Android Studio, mais elle reste toujours proche de cette technique. Par exemple, pour Android Studio 0.8.2, la manipulation est plus rapide. Il faut, dans la fenêtre de gestion de la structure du projet, aller dans l'onglet Modules, puis cliquer sur le bouton plus. Choisissez l'option Import Existing Project, et sélectionnez votre projet.

Une fois le projet importé, synchronisez vos fichiers Gradle. Le message suivant peut apparaître : Error: The SDK Build Tools revision (XX.X.X) is too low. Minimum required is YY.Y.Y. Si c'est le cas, allez dans le répertoire du projet à importer, et ouvrez le fichier build.gradle. Modifiez dans le fichier la section buildToolsVersion pour indiquer la version d'Android suggérée par Android Studio :
buildToolsVersion 'YY.Y.Y'

Via le moteur de production Gradle

Le moteur de production Gradle peut être utilisé dans Android Studio pour importer votre projet en tant que bibliothèque. Si vous ne voulez pas dupliquer votre code et si le projet que vous souhaitez importer peut évoluer, vous pouvez ajouter le projet en tant que dépendance externe. Il suffit d'ajouter une ligne de code dans le fichier app/build.gradle de votre projet :

dependencies {
compile 'com.votreProjet.1.0.0'
}

Si vous préférez dupliquer le code pour que le projet reste indépendant, vous devez ajouter le projet en tant que bibliothèque. Dans votre dossier, créez un dossier libs. Cette étape n'est pas obligatoire, mais elle permet de bien ranger le projet. Ajoutez le projet à importer dans le dossier libs. À la racine de votre projet, éditez le fichier settings.gradle. Vous devez ajouter votre projet dans la section include. S'il est dans un dossier particulier, comme dans ce cas, il faut également indiquer le dossier avec une directive en plus :

include ':app', ':ProjetAImporter'
project(':ProjetAImporter').projectDir = new File('libs/ProjetAImporter')

Si vous obtenez l'erreur Default Configuration dans votre projet, alors il faut utiliser la syntaxe suivante :

include ':app' 
include ':libs:ProjetAImporter'

Dans le fichier build.gradle situé dans le dossier app, ajoutez votre projet en tant que dépendance :

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

 compile 'com.android.support:appcompat-v7:21.0.3'

compile project(:ProjetAImporter)
}

Si vous avez utilisé la deuxième notation pour ajouter le projet dans le fichier settings.gradle, alors la notation change :

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile project(:libs:ProjetAIporter)
}

Si votre projet n'a pas de fichier build.gradle situé à la racine, alors il faut en créer un. Voici un exemple de fichier :

apply plugin: 'com.android.library'
dependencies {
compile 'com.android.support:support-v4:21.0.3'
}
android {
compileSdkVersion 21
buildToolsVersion 21.1.2
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
res.srcDirs = ['res']
}
}
}

Il est possible d'utiliser des variables dans la configuration du fichier build.gradle. Il faut les ajouter dans le fichier gradle.properties :

ANDROID_BUILD_MIN_SDK_VERSION=14
ANDROID_BUILD_TARGET_SDK_VERSION=21
ANDROID_BUILD_TOOLS_VERSION=21.1.3
ANDROID_BUILD_SDK_VERSION=21

Il n'y a plus qu'à les utiliser dans le fichier build.gradle :

android {
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION)
buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
defaultConfig {
minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION)
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
}
}

Votre projet est maintenant prêt à être importé. Dans Android Studio, cliquez sur le bouton Sync project with Gradle. Le projet que vous voulez importer sera alors disponible comme bibliothèque.

Android