Estoy tratando de migrar un proyecto desde Eclipse, pero nada de lo que he intentado funciona. En Eclipse tengo 3 proyectos (2 proyectos de aplicaciones de Android y 1 proyecto de biblioteca de Android). Los 2 proyectos de la aplicación dependen del proyecto de la biblioteca. Cuando hago la exportación de Gradle obtengo 3 proyectos que no funcionan. Estoy abierto a reestructurar el proyecto, pero no he encontrado ninguna documentación sobre cómo debería hacerse.
¿Hay alguna manera de hacer que los 3 proyectos que Eclipse exporta trabajen juntos? ¿Estoy mejor reestructurando las cosas y, si es así, hay documentación sobre cómo debería hacerse?
Actualizar
He subido todo el proyecto a GitHub https://github.com/respectTheCode/android-studio-library-example
Actualización 1
Basado en las sugerencias de Padma Kumar, esto es lo que he intentado.
- Crea un nuevo proyecto llamado
MyApp
- Haga clic
File > New Module
, elijaAndroid Library
y nómbreloMyLib
- Hacer clic
Build > Make Project
La compilación falla con este error
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.
Luego agregué un package
atributo al manifiesto haciéndolo
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mylib" >
Después de construir me sale este error
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
Agregar dependencia no parece tener ningún impacto en el error. Continuando desde arriba
- Hacer clic
File > Project Structure > Modules > MyApp-MyApp
- Cambiar a
Dependencies
pestaña - Haga clic
+ > Module Dependency
y escojaMyLib
- Haga clic
Apply
yOK
- Hacer clic
Build > Make Project
Actualización 2
Basado en las sugerencias de Ethan, aquí es donde obtenemos
El subproyecto 2 build.gradle
parece tener todas las partes correctas y la única diferencia es que la línea de complemento que se encuentra debajo es 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
}
}
El proyecto raíz build.gradle
estaba vacío, así que agregué dos proyectos como este
dependencies {
compile project(":MyLib")
compile project(":MyApp")
}
Ahora recibo este error al construir
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.
Actualización 3
Muchas gracias Ethan por resolver esto.
- Añadir
compile project(':SubProjects:MyLib')
a laMyLib/build.gradle
- Eliminar
compile files('libs/android-support-v4.jar')
de laMyLib/build.gradle
- Cierre el proyecto e importe el proyecto raíz desde gradle
Actualización 4
A partir de 0.1.2 ahora puede incluir en compile "com.android.support:support-v4:13.0.0"
lugar de compile files('libs/android-support-v4.jar')
. Dado que ahora proviene de mavin, puede incluir esto en múltiples proyectos sin problemas.
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')
}
Actualización 5
A partir de la 0.1.3 ahora hay un botón "Sincronizar proyecto" en la barra de herramientas. Puede hacer clic en eso en lugar de volver a importar su proyecto después de realizar cambios en los .gradle
archivos.
compile 'com.google.android:support-v4:r6'
a cada uno de sus proyectos y al complemento Maven (como en el ejemplo build.gradle a continuación) en lugar de la compile files('libs/android-support-v4.jar')
gradle, se dará cuenta de que ambos proyectos incluyen lo mismo y solo lo incluirán una vez.