我正在尝试从Eclipse迁移项目,但是我没有尝试过。在Eclipse中,我有3个项目(2个android应用程序项目和1个android库项目)。2个应用程序项目取决于库项目。当我执行gradle导出时,我得到3个无效的项目。我愿意对项目进行重组,但没有找到有关如何完成此工作的任何文档。
有没有办法使Eclipse导出的3个项目一起工作?我最好重新组织一下事情,如果可以的话,是否提供有关如何完成此工作的文档?
更新资料
我已将整个项目上传到GitHub https://github.com/respectTheCode/android-studio-library-example
更新1
根据Padma Kumar的建议,这就是我尝试过的方法。
- 创建一个名为
MyApp
- 点击
File > New Module
,选择Android Library
并命名MyLib
- 请点击
Build > Make Project
构建因此错误而失败
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.
然后,我package
在清单中添加了一个属性
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mylib" >
建立后,我得到这个错误
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
添加依赖性似乎对该错误没有任何影响。从上面继续
- 请点击
File > Project Structure > Modules > MyApp-MyApp
- 切换至
Dependencies
标签页 - 点击
+ > Module Dependency
选择MyLib
- 点击
Apply
并OK
- 请点击
Build > Make Project
更新2
根据伊桑(Ethan)的建议,我们可以从这里得到
2个子项目build.gradle
似乎具有所有正确的部分,唯一的区别是插件行在下面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
}
}
根项目build.gradle
是空的,所以我像这样添加了两个项目
dependencies {
compile project(":MyLib")
compile project(":MyApp")
}
我现在在构建时收到此错误
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.
更新3
非常感谢Ethan解决了这个问题。
- 添加
compile project(':SubProjects:MyLib')
到MyLib/build.gradle
compile files('libs/android-support-v4.jar')
从中删除MyLib/build.gradle
- 关闭项目并从gradle导入根项目
更新4
从0.1.2版开始,您现在可以compile "com.android.support:support-v4:13.0.0"
代替compile files('libs/android-support-v4.jar')
。由于它来自mavin,因此您可以毫无问题地将其包含在多个项目中。
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')
}
更新5
从0.1.3开始,工具栏中现在有一个“同步项目”按钮。您可以单击该.gradle
文件,而不是在更改文件后重新导入您的项目。
compile 'com.google.android:support-v4:r6'
到每个项目和maven插件(如下面的build.gradle示例中),而不是compile files('libs/android-support-v4.jar')
gradle,您将意识到两个项目都包含相同的内容,并且只会包含一次。