J'essaye de migrer un projet d'Eclipse mais rien de ce que j'ai essayé ne fonctionne. Dans Eclipse, j'ai 3 projets (2 projets d'application Android et 1 projet de bibliothèque Android). Les 2 projets d'application dépendent du projet de bibliothèque. Quand je fais l'exportation gradle, j'obtiens 3 projets qui ne fonctionnent pas. Je suis ouvert à la restructuration du projet mais je n'ai trouvé aucune documentation sur la façon dont cela devrait être fait.
Existe-t-il un moyen de faire fonctionner ensemble les 3 projets exportés par Eclipse? Est-ce que je ferais mieux de restructurer les choses et, dans l'affirmative, la documentation expliquant comment cela devrait être fait?
Mettre à jour
J'ai téléchargé l'intégralité du projet sur GitHub https://github.com/respectTheCode/android-studio-library-example
Mise à jour 1
Basé sur les suggestions de Padma Kumar, c'est ce que j'ai essayé.
- Créez un nouveau projet appelé
MyApp
- Cliquez
File > New Module
, choisissezAndroid Library
et nommez-leMyLib
- Cliquez sur
Build > Make Project
La construction échoue avec cette erreur
Module "MyLib" was fully rebuilt due to project configuration/dependencies changes
Compilation completed with 1 error and 0 warnings in 19 sec
1 error
0 warnings
/.../MyApp/MyLib/build/bundles/debug/AndroidManifest.xml
Gradle: <manifest> does not have package attribute.
J'ai ensuite ajouté un package
attribut au manifeste en le faisant
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mylib" >
Après la construction, j'obtiens cette erreur
Module "MyApp" was fully rebuilt due to project configuration/dependencies changes
Compilation completed with 2 errors and 0 warnings in 13 sec
2 errors
0 warnings
/.../MyApp/MyLib/src/main/java/com/example/mylib/MainActivity.java
Gradle: package R does not exist
Gradle: package R does not exist
L'ajout d'une dépendance ne semble pas avoir d'impact sur l'erreur. Continuant d'en haut
- Cliquez sur
File > Project Structure > Modules > MyApp-MyApp
- Passer à l'
Dependencies
onglet - Cliquez
+ > Module Dependency
et choisissezMyLib
- Cliquez
Apply
etOK
- Cliquez sur
Build > Make Project
Mise à jour 2
Sur la base des suggestions d'Ethan, voici où nous obtenons
Les 2 sous-projets build.gradle
semblent avoir toutes les parties correctes et la seule différence est que la ligne de plugin ci-dessous est le MyApp/build.gradle
.
buildscript {
repositories {
maven { url 'http://repo1.maven.org/maven2' }
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
dependencies {
compile files('libs/android-support-v4.jar')
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 16
}
}
Le projet racine build.gradle
était vide, j'ai donc ajouté les deux projets comme celui-ci
dependencies {
compile project(":MyLib")
compile project(":MyApp")
}
J'obtiens maintenant cette erreur lors de la construction
Gradle:
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/kevin/GitHub/AppPress/MyApp/build.gradle' line: 2
* What went wrong:
A problem occurred evaluating root project 'MyApp'.
> Could not find method compile() for arguments [project ':MyLib'] on root project 'MyApp'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Mise à jour 3
Un grand merci Ethan pour avoir résolu cela.
- Ajouter
compile project(':SubProjects:MyLib')
auMyLib/build.gradle
- Retirer
compile files('libs/android-support-v4.jar')
duMyLib/build.gradle
- Fermer le projet et importer le projet racine à partir de gradle
Mise à jour 4
À partir de la version 0.1.2, vous pouvez désormais inclure compile "com.android.support:support-v4:13.0.0"
au lieu de compile files('libs/android-support-v4.jar')
. Comme il vient de mavin, vous pouvez désormais l'inclure dans plusieurs projets sans problème.
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4.2'
}
}
apply plugin: 'android'
dependencies {
compile "com.android.support:support-v4:13.0.0"
compile project(':SubProjects:MyLib')
}
Mise à jour 5
Depuis la version 0.1.3, il y a maintenant un bouton "Sync Project" dans la barre d'outils. Vous pouvez cliquer dessus au lieu de réimporter votre projet après avoir apporté des modifications aux .gradle
fichiers.
compile 'com.google.android:support-v4:r6'
à chacun de vos projets et que le plugin maven (comme dans l'exemple build.gradle ci-dessous) au lieu du compile files('libs/android-support-v4.jar')
gradle, vous vous rendrez compte que les deux projets incluent la même chose et ne l'incluront qu'une seule fois.