我试图从 Eclipse 迁移一个项目,但是没有一个是可行的。在 Eclipse 中,我有3个项目(2个 android 应用程序项目和1个 android 库项目)。这两个应用程序项目依赖于库项目。当我做梯度出口我得到3个项目,不工作。我愿意重组这个项目,但是还没有找到任何关于如何完成这个项目的文档。
是否有办法使 Eclipse 导出的3个项目一起工作?我是否可以更好地进行重组,如果是的话,是否可以编写文档说明应该如何进行重组?
更新
我已经将整个项目上传到 GitHub https://github.com/respectTheCode/android-studio-library-example
更新1
根据帕德玛库马尔的建议,这是我所尝试的。
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
根据伊森的建议,我们从这里开始
在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
非常感谢伊森解决了这个问题。
compile project(':SubProjects:MyLib')
添加到 MyLib/build.gradle
MyLib/build.gradle
中删除 compile files('libs/android-support-v4.jar')
更新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
文件进行更改之后,您可以单击该命令,而不必重新导入项目。