23

我有一个应用程序需要为不同的客户使用不同的资源多次构建(品牌、配置和客户之间的预加载数据更改)。

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

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

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

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

编辑: 我们的团队已于 2013 年 10 月下旬迁移到 Android Studio,并且自 0.4 版以来遇到的错误越来越少。如果您的组织对采用 1.0 之前的环境进行开发不是非常保守,我鼓励您跳入冷水并尝试使用 Android Studio 及其 Gradle 构建系统。缺少恕我直言的唯一重要的事情是对单元测试的体面支持。

4

2 回答 2

24

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

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

com.android.tools.build:gradle版本应该是最新的对于http://tools.android.com/tech-docs/new-build-system/user-guidegradle build中所说的gradle 类型。尝试更多。(在我缓慢的 Internet 连接上花了 1 个小时!让 gradle 下载所有需要的依赖项)gradle tasks

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,那么可能根本不需要 Wizards。build.gradle有关经典 Android 项目的最新模板,请查看gh.c/N/n-1/b/m/oneeg/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')
    }
}

Eclipse Marketplace 不附带 ADT-Bundle,因此可以使用更新站点。

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(来自 Android 团队)关于 Android、Gradle 和 ADT 的博客

Android 的 Gradle 模型

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

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

正如 Android 团队在问题 57668中回答的那样(由@arcone 提出)

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

eclipse插件与android插件不兼容。

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

为了让它在 Eclipse 中工作,我们必须更改 Eclipse 的 Gradle 插件,就像我们在 IntelliJ 中修改 Gradle 支持一样

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

Nodeclipse努力平滑过渡时间。并继续在 Eclipse 中进行开发,同时仍在试验或完全使用 gradle。

Eclipse 的 Nodeclipse/Enide Gradle市场

Gradle for Eclipse 的一些屏幕截图:

于 2013-12-27T09:56:06.410 回答
1
  1. 安装 Gradle
    http://gradle.org/gradle-download/ b. 从以前的版本部分中选择 2.1。C。在方便的文件夹中解压缩。(例如:D:\Graddle\gradle-2.1) d. 设置系统环境变量。一世。GRADLE_HOME 为 D:\Graddle\gradle-2.1) ii. GRADLE_OPTS 为 -XX:MaxPermSize=512m iii. %GRADLE_HOME%\bin 到路径 iv。设置 ANDROID_HOME ( 例如:D:\android-sdk) v. 将“%ANDROID %\platform-tools”附加到路径。

e. 打开命令提示符并检查 gradle 是否已设置。可以使用 gradle -version 来检查。

  1. 安装 Gradle eclipse 插件:启动 Eclipse b. 帮助 > Eclipse 市场 c. 搜索“gradle” d. 在那选择“Nodeeclipse/enide” e。选择所有列出的,接受并安装。F。安装后重启eclipse。

  2. 设置 Gradle 和 Java 主页:启动日食。湾。窗口 > 首选项 > Gradle EnIDE c. 如果未设置,请设置这些:i。设置使用的 Gradle 主页(例如:D:\Graddle\gradle-2.1)设置要使用的备用 JAVA_HOME(例如:C:\Program Files (x86)\Java\jdk1.7.0_60) iii. GRADLE_OPTS 的 JVM 选项设置为“-XX:MaxPermSize=512m”</p>

  3. 构建项目:在 Eclipse Java 资源管理器中展开 APK。湾。右键单击 build.gradle c。运行方式 > Gradle GUI d. 命令行:gradle clean build e。等待构建完成:第一次构建需要几分钟。F。如果 Build dex 错误或 Java 堆空间错误: i. 在编辑器中打开 build.gradle。ii. 对于多 dex 构建 - 根据您的 java 设置适当的 javaMaxHeapSize(javaMaxHeapSize=1024M 用于 32 位 Java,2048M 用于 64 位 Java)iii。可以评论签名(//apply from: "$rootProject.projectDir/jenkins_config/gradle/signing.gradle";)以避免为调试构建签名。iv. 在这些修复之后再次构建。

  4. 安装 Build On 设备:将设备连接到 m/cb 右键单击​​ build.gradle c。运行方式 > gradle installDebug Gradle Android start d. 等待安装完成

  5. 调试构建:启动应用程序 b. 附加调试器(DDMS > 设备 > 应用程序)。C。我们能够在检查的少数设备上进行调试。

于 2015-07-14T15:50:05.960 回答