将库和应用程序从Eclipse迁移到Android Studio

时间:2015-02-24 16:04:04

标签: android eclipse android-studio adt

在我的团队中,我们使用ADT插件在Eclipse中开发了一个库 我们有一个"大"演示应用程序和几个" mini"使用该库测试不同方面的应用程序。

由于Android的官方IDE现在是Android Studio,而ADT插件似乎已被放弃(last update on October '14),我们正在研究迁移到Android Studio。

在Eclipse上,我们可以在同一工作区内的磁盘中的不同位置加载项目。我们喜欢这个,因为这允许我们将我们的库项目与我们的演示一起加载,我们还可以在引用项目库的同一工作空间中加载时态项目。

我看到有two ways to migrate,但我发现两者都有缺点:

  

直接将Eclipse项目导入Studio

此选项有效但是:

  1. 这会更改所有项目的文件夹结构。它将eclipse项目复制到Android Studio项目文件夹中,这意味着要对我们的内部存储库进行更改。

  2. 如果我们想要添加一个临时项目来使用我们的库进行测试,我们需要将其导入,以便它也会被复制到" main"图书馆和演示。

  3.   

    从Eclipse导出Eclipse项目作为Gradle项目。

    此选项保留Eclipse项目的文件夹结构(上面的#1),但上面的#2在这里仍然有效,当我尝试从其他位置导入项目时,我也会收到此错误。

      

    错误:FAILURE:构建因异常而失败。 *出了什么问题:任务   ' compileDebugSources'没有在项目中找到':TestMemCons'。 *尝试:跑   gradle任务以获取可用任务列表。使用--stacktrace运行   获取堆栈跟踪的选项。使用--info或--debug选项运行   获得更多的日志输出。

    那么,我们可以迁移到Android Studio保留文件夹结构并允许我们在同一个实例中加载其他Eclipse / Android Studio项目,以便他们可以引用我们的库项目吗?

1 个答案:

答案 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项目”,并仍按上述方式加载测试/时间项目。

我在这里看到的唯一问题是:

  • 这不像Eclipse那样自动化。
  • 在Eclipse中,您可以在完成后删除测试项目,并且项目仍在磁盘中,但工作区再次清理。在Android Studio中,使用上述技术,您应该从主项目中的settings.gradle中删除测试条目,并删除测试项目文件夹,以便在测试之前清理主项目。