在我的团队中,我们使用ADT插件在Eclipse中开发了一个库 我们有一个"大"演示应用程序和几个" mini"使用该库测试不同方面的应用程序。
由于Android的官方IDE现在是Android Studio,而ADT插件似乎已被放弃(last update on October '14),我们正在研究迁移到Android Studio。
在Eclipse上,我们可以在同一工作区内的磁盘中的不同位置加载项目。我们喜欢这个,因为这允许我们将我们的库项目与我们的演示一起加载,我们还可以在引用项目库的同一工作空间中加载时态项目。
我看到有two ways to migrate,但我发现两者都有缺点:
直接将Eclipse项目导入Studio
此选项有效但是:
这会更改所有项目的文件夹结构。它将eclipse项目复制到Android Studio项目文件夹中,这意味着要对我们的内部存储库进行更改。
如果我们想要添加一个临时项目来使用我们的库进行测试,我们需要将其导入,以便它也会被复制到" main"图书馆和演示。
从Eclipse导出Eclipse项目作为Gradle项目。
此选项保留Eclipse项目的文件夹结构(上面的#1),但上面的#2在这里仍然有效,当我尝试从其他位置导入项目时,我也会收到此错误。
错误:FAILURE:构建因异常而失败。 *出了什么问题:任务 ' compileDebugSources'没有在项目中找到':TestMemCons'。 *尝试:跑 gradle任务以获取可用任务列表。使用--stacktrace运行 获取堆栈跟踪的选项。使用--info或--debug选项运行 获得更多的日志输出。
那么,我们可以迁移到Android Studio保留文件夹结构并允许我们在同一个实例中加载其他Eclipse / Android Studio项目,以便他们可以引用我们的库项目吗?
答案 0 :(得分:1)
回答我自己的问题......
那么,我们可以迁移到Android Studio保持文件夹结构和 允许我们在其中加载其他Eclipse / Android Studio项目 实例,所以他们可以参考我们的图书馆项目?
我发现你可以添加一个时态项目如下:
将时态测试项目复制到您想要的位置,它只需要在您的主项目树中。
将测试项目相对路径添加到主项目的settings.gradle
文件中。即,如果您将测试项目移至\Demos\Tests\Test1
:
include ':Demos:Tests:Test1'
所以你可以这样:
include ':Sources:Android' //library
include ':Demos:Android' //Features Demo
include ':Demos:Tests:Test1' //Test1
为测试项目创建build.gradle
文件。即,\Demos\Tests\Test1\build.gradle
:
apply plugin: 'android'
dependencies {
compile fileTree(include: '*.jar', dir: 'libs')
compile project(':Sources:Android')
}
android {
compileSdkVersion 7
buildToolsVersion "21.1.2"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}
在这种情况下,我在我的库中添加了一个依赖项,即\Sources\Android
主项目中的库模块。
因此,如果您想保留文件夹结构,可以选择2“将Eclipse项目从Eclipse导出为Gradle项目”,并仍按上述方式加载测试/时间项目。
我在这里看到的唯一问题是:
settings.gradle
中删除测试条目,并删除测试项目文件夹,以便在测试之前清理主项目。