Estou tentando migrar um projeto do Eclipse, mas nada que tentei está funcionando. No Eclipse, tenho 3 projetos (2 projetos de aplicativos para Android e 1 projeto de biblioteca para Android). Os 2 projetos de aplicativos dependem do projeto da biblioteca. Quando faço a exportação do gradle, recebo 3 projetos que não funcionam. Estou aberto à reestruturação do projeto, mas não encontrei nenhuma documentação sobre como isso deve ser feito.
Existe uma maneira de fazer com que os três projetos que as exportações do Eclipse funcionem juntos? Estou melhor reestruturando as coisas e, em caso afirmativo, há documentação sobre como isso deve ser feito?
Atualizar
Fiz o upload de todo o projeto no GitHub https://github.com/respectTheCode/android-studio-library-example
Atualização 1
Com base nas sugestões de Padma Kumar, é isso que tentei.
- Crie um novo projeto chamado
MyApp
- Clique
File > New Module
, escolhaAndroid Library
e nomeie-oMyLib
- Clique
Build > Make Project
A construção falha com este erro
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.
Em seguida, adicionei um package
atributo ao manifesto, tornando-o
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mylib" >
Após a construção, recebo este erro
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
Adicionar dependência não parece ter nenhum impacto no erro. Continuando de cima
- Clique
File > Project Structure > Modules > MyApp-MyApp
- Mudar para o
Dependencies
separador - Clique
+ > Module Dependency
e escolhaMyLib
- Clique
Apply
eOK
- Clique
Build > Make Project
Atualização 2
Com base nas sugestões de Ethan, é aqui que chegamos
O sub-projeto 2 build.gradle
parece ter todas as partes corretas e a única diferença é a linha de plug-in abaixo 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
}
}
O projeto raiz build.gradle
estava vazio, então eu adicionei os dois projetos como este
dependencies {
compile project(":MyLib")
compile project(":MyApp")
}
Agora recebo esse erro ao criar
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.
Atualização 3
Muito obrigado Ethan por resolver isso.
- Adicione
compile project(':SubProjects:MyLib')
aoMyLib/build.gradle
- Retire
compile files('libs/android-support-v4.jar')
doMyLib/build.gradle
- Feche o projeto e importe o projeto raiz da gradle
Atualização 4
A partir da versão 0.1.2, agora você pode incluir em compile "com.android.support:support-v4:13.0.0"
vez de compile files('libs/android-support-v4.jar')
. Como é proveniente do mavin, agora você pode incluí-lo em vários projetos sem 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')
}
Atualização 5
A partir da versão 0.1.3, agora existe um botão "Sync Project" na barra de ferramentas. Você pode clicar nele em vez de reimportar seu projeto depois de fazer alterações nos .gradle
arquivos.
compile 'com.google.android:support-v4:r6'
a cada um de seus projetos e o plug-in maven (como no exemplo build.gradle abaixo) em vez do compile files('libs/android-support-v4.jar')
gradle, perceberá que os dois projetos incluem a mesma coisa e a incluirão apenas uma vez.