Sto cercando di migrare un progetto da Eclipse ma nulla che ho provato sta funzionando. In Eclipse ho 3 progetti (2 progetti di app Android e 1 progetto di libreria Android). I 2 progetti di app dipendono dal progetto di libreria. Quando eseguo l'esportazione gradle ottengo 3 progetti che non funzionano. Sono aperto a ristrutturare il progetto ma non ho trovato alcuna documentazione su come farlo.
C'è un modo per far lavorare insieme i 3 progetti che le esportazioni di Eclipse? Sto meglio ristrutturando le cose e, in caso affermativo, c'è documentazione per come farlo?
Aggiornare
Ho caricato l'intero progetto su GitHub https://github.com/respectTheCode/android-studio-library-example
Aggiornamento 1
Sulla base dei suggerimenti di Padma Kumar questo è quello che ho provato.
- Crea un nuovo progetto chiamato
MyApp
- Fare clic
File > New Module
, scegliereAndroid Library
e denominarloMyLib
- Clic
Build > Make Project
La compilazione non riesce con questo errore
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.
Ho quindi aggiunto un package
attributo al manifest rendendolo
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mylib" >
Dopo la costruzione ottengo questo errore
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'aggiunta di dipendenza non sembra avere alcun impatto sull'errore. Continuando dall'alto
- Clic
File > Project Structure > Modules > MyApp-MyApp
- Passa alla
Dependencies
scheda - Fare clic
+ > Module Dependency
e selezionareMyLib
- Clicca
Apply
eOK
- Clic
Build > Make Project
Aggiornamento 2
Sulla base dei suggerimenti di Ethan, qui è dove arriviamo
Il 2 sotto-progetto build.gradle
sembra avere tutte le parti corrette e l'unica differenza è che la seguente linea di plugin è la 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
}
}
Il progetto di root build.gradle
era vuoto, quindi ho aggiunto i due progetti in questo modo
dependencies {
compile project(":MyLib")
compile project(":MyApp")
}
Ora ricevo questo errore durante la costruzione
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.
Aggiornamento 3
Grazie mille Ethan per aver risolto questo.
- Aggiungi
compile project(':SubProjects:MyLib')
aMyLib/build.gradle
- Rimuovere
compile files('libs/android-support-v4.jar')
dalMyLib/build.gradle
- Chiudi il progetto e importa il progetto radice dal gradle
Aggiornamento 4
A partire da 0.1.2 ora puoi includere compile "com.android.support:support-v4:13.0.0"
invece di compile files('libs/android-support-v4.jar')
. Dal momento che proviene da mavin ora puoi includerlo senza problemi in più progetti.
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')
}
Aggiornamento 5
A partire da 0.1.3 ora c'è un pulsante "Sincronizza progetto" nella barra degli strumenti. È possibile fare clic su questo invece di reimportare il progetto dopo aver apportato modifiche ai .gradle
file.
compile 'com.google.android:support-v4:r6'
a ciascuno dei tuoi progetti e il plugin maven (come nell'esempio build.gradle di seguito) invece del compile files('libs/android-support-v4.jar')
gradle realizzerai che entrambi i progetti includono la stessa cosa e lo includeranno solo una volta.