I am trying to migrate a project from Eclipse but nothing I have tried is working. In Eclipse I have 3 projects (2 android app projects and 1 android library project). The 2 app projects depend on the library project. When I do the gradle export I get 3 projects that don't work. I am open to restructuring the project but haven't found any documentation on how this should be done.
Is there a way to make the 3 projects that Eclipse exports work together? Am I better off restructuring things and if so is documentation for how this should be done?
Update
I have uploaded the entire project to GitHub https://github.com/respectTheCode/android-studio-library-example
Update 1
Based the suggestions from Padma Kumar this is what I have tried.
- Create a new Project called
MyApp
- Click
File > New Module
, chooseAndroid Library
and name itMyLib
- Click
Build > Make Project
The build fails with this 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.
I then added a package
attribute to the manifest making it
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mylib" >
After building I get this 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
Adding dependency doesn't seem to have any impact on the error. Continuing from above
- Click
File > Project Structure > Modules > MyApp-MyApp
- Switch to
Dependencies
Tab - Click
+ > Module Dependency
and pickMyLib
- Click
Apply
andOK
- Click
Build > Make Project
Update 2
Based the suggestions from Ethan this is where we get
The 2 sub project build.gradle
seem to have all of the correct parts and the only difference is the plugin line bellow is the 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
}
}
The root project build.gradle
was empty so I added the two projects like this
dependencies {
compile project(":MyLib")
compile project(":MyApp")
}
I now get this error when building
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.
Update 3
Big thanks Ethan for solving this.
- Add
compile project(':SubProjects:MyLib')
to theMyLib/build.gradle
- Remove
compile files('libs/android-support-v4.jar')
from theMyLib/build.gradle
- Close project and Import the root project from gradle
Update 4
As of 0.1.2 you can now include compile "com.android.support:support-v4:13.0.0"
instead of compile files('libs/android-support-v4.jar')
. Since it is coming from mavin now you can include this in multiple projects without problems.
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')
}
Update 5
As of 0.1.3 there is now a "Sync Project" button in the toolbar. You can click that instead of reimporting your project after making changes to .gradle
files.