是否可以使用Eclipse的Gradle构建系统与Eclipse?

时间:2013-06-14 11:01:47

标签: android eclipse gradle

我的应用程序需要多次构建,并为不同的客户提供不同的资源(客户之间的品牌,配置和预先加载的数据更改)。

在今年的Google I / O之后,我听说过基于Gradle的新Android构建系统。所以我想,使用Gradle构建脚本实现这个单源/多apks场景是个好主意。

现在我的问题出现了:如何在坚持Eclipse的同时开始使用Gradle进行构建?我在网上发现的所有读取都指向将项目转换为仍然不成熟的Android Studio。我想推迟迁移到Android Studio,直到Google宣布“安全”生产用途为止。

理想情况下,我希望能够将构建脚本挂钩到Eclipse的调试和运行配置,这与我可以选择的方式非常相同,并选择不同的构建目标来在XCode中进行调试和存档。如果可能的话,需要采取哪些步骤才能完成这项工作?

我为这些问题的无聊质量道歉,但对我而言,这实际上是一个相当未被发现的国家。任何帮助表示赞赏。

修改 我们的团队已于2013年10月下旬迁移到Android Studio,因为0.4版本的错误越来越少。如果您的组织对于采用1.0版之前的环境进行开发并不十分保守,我建议您尽量避免使用Android Studio及其Gradle构建系统。缺少恕我直言的唯一重要的事情是对单元测试提供了不错的支持。

1 个答案:

答案 0 :(得分:24)

可以使用2个构建系统(基于Eclipse + gradle)。只需确保输出文件夹不同(ADT为bin,gradle为build)。 (更新TL; DR:检查Nodeclipse/Enide Gradle for Eclipsemarketplace))

File -> Export -> Generate Gradle build files只会添加build.gradle以下内容(但请检查版本)。没有现有文件被更改。

com.android.tools.build:gradle版本应为the latest。 对于http://tools.android.com/tech-docs/new-build-system/user-guide中所述的gradle类型gradle build。请尝试gradle tasks了解更多信息。 (在我缓慢的Internet连接上花了1个小时!为gradle下载所有必需的依赖项)

Vogella教程http://www.vogella.com/articles/AndroidBuild/article.html尚未准备就绪。其他在线教程尚未真正完成http://www.jayway.com/2013/02/26/using-gradle-for-building-android-applications/

Eclipse ADT尚未使用gradle,我认为它将首先在Android Studio中完善。在两个IDE中同时开始使用不断发展的技术并不是那么明智。

请参阅下面的build.gradle示例。如果你已经掌握了gradle,那么根本不需要巫师。 有关经典Android项目的最新build.gradle模板,请检查gh.c/N/n-1/b/m/o.n.e.e.g/docs/android/build.gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

android {
    compileSdkVersion 8
    buildToolsVersion "19.0.0"

    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')
    }
}

ADT-Bundle不随Eclipse Marketplace一起提供,因此可以使用更新站点。

更新Gradle Integration for Eclipse的p2存储库

http://dist.springsource.com/release/TOOLS/gradle

但是从版本3.4.0开始,它不为.gradle文件提供编辑器。 所以没有把它用于Android开发的感觉。

我会使用默认的ADT构建,将gradle作为实验的辅助构建 当http://tools.android.com/tech-docs/new-build-system上的虫子流动变得罕见时,要密切注意。 (这应该是正式的1.0版本)

更新时间:2014-04-15

Alex Ruiz's (from Android team) Blog about Android, Gradle & ADT

  

Android的Gradle模型

     

我们决定使用与Gradle项目无关的IDE表示,而不是创建特定于IDE的Android / Gradle模型。这样,我们就拥有了一个易于维护的单一信息源。 IDE集成将作为每个支持的IDE(在我们的例子中,Eclipse和IDEA)的插件实现。这种方法的主要好处是我们可以独立于IDE集成插件发布Gradle插件。例如,我们可以发布一个新版本的Eclipse插件,它有几个bug修复,而不会影响Android的Gradle端。

截至2014年4月,eclipse-gradle插件与android-gradle插件不兼容:

由Android团队Issue 57668回答(由@arcone提出)

  

项目成员#2 x ... @ android.com

     

eclipse插件与android插件不兼容。

     

您将无法使用Eclipse中的默认Gradle支持将Android gradle项目导入Eclipse。

     

要使它在Eclipse中运行,我们将不得不更改Eclipse的Gradle插件,就像我们在IntelliJ中修改Gradle支持一样

那就是Android团队正在开发IntelliJ的gradle插件,Eclipse的gradle插件也需要更新。

effort at Nodeclipse可以平滑过渡时间。并继续在Eclipse中开发,同时仍在试验或完全使用gradle。

Nodeclipse/Enide Gradle for Eclipsemarketplace

Gradle for Eclipse的一些截图: