13

我正在使用 Android Developer Tools 22、Eclipse Indigo 和当前的 Gradle Plugin for Eclipse。

现在我想通过在 build.gradle 文件中定义来使用不同的 Flavor:

     productFlavors{
     A {
       packageName "com.test.A"   
       buildConfig "public final static String FLAVOR = \"A\";"

    }
    B {
       packageName "com.test.B"
       buildConfig  "public final static String FLAVOR = \"B\";"
    }
}

据我所知,我可以使用BuildConfig.FLAVOR访问这些变量,但是在gen文件夹中生成的 BuildConfig.java 中缺少 FLAVOR 的定义。

如果我通过 Gradle 组装我的项目,则会在build/source/buildConfig/[A|B]/[debug|release]/com/test/文件夹中生成正确且完整的 BuildConfig.java 。

如果我通过 gradle 构建项目,它可以工作,但我不能使用 Eclipse,因为它期望变量在gen文件夹的 BuildConfig.java 中定义

我可以强制 gradle 或 adt 在 gen 文件夹中生成正确的 BuildConfig.java 吗?

4

3 回答 3

2

Android Studio 处于最前沿(尚未测试版)。

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

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

eclipse插件与android插件不兼容。

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

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

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

您可以在 Eclipse 中使用 ADT 进行开发,并使用Nodeclipse/Enide Gradle for Eclipse ( marketplace )运行 Gradle 构建

Gradle for Eclipse的一些屏幕截图:

在 Eclipse 中使用 Gradle 开发 Android有一些计划

于 2014-04-15T07:02:09.430 回答
1

不支持将 Eclipse 与新的 Gradle 插件一起使用,您应该改用 Android Studio。

另外,既然你问了这个,插件已经添加了这个功能。来自Android Gradle 插件 0.7.0 版的发行说明

如果有多个风味维度,构建配置现在会自动包含更多 PACKAGE_NAME、VERSION_CODE、VERSION_NAME、BUILD_TYPE、FLAVOR 和 FLAVOR_ 常量。

于 2014-01-23T12:50:56.287 回答
1

我可以强制 gradle 或 adt 在 gen 文件夹中生成正确的 BuildConfig.java 吗?

是的,有一个技巧:一旦:generateDebugBuildConfig(替换Debug为您需要的变体)在 gradle 中运行,您将拥有BuildConfig.java您需要的东西。

我在 Windows 上做了这个,但是对于 Unix 来说应该是一样的,你最喜欢的 shell 和cp

  1. 打开项目属性并导航到 Builders
  2. 添加“程序”生成器
    • 地点C:\Windows\System32\cmd.exe
    • 工作目录:浏览工作区...并选择您的项目,
      结果将类似于:${workspace_loc:/YourProject}
    • 论据/c "xcopy build\generated\source\buildConfig\debug gen /S /I /Y"
    • 设置何时运行
      • 刷新选项卡:“特定资源”选择gen文件夹
      • 构建选项选项卡:“清理后”、“手动”、“自动”和“指定资源”作为项目的根文件夹
  3. 确保这个新的构建器放置在Android Pre Compiler和之间Java Builder

注意:这确实对 ADT 起作用,并且可能会有其他缺失的部分您可能会发现难以处理(applicationIdSuffix, resValue,变体源文件夹,仅举几例)。放弃 Eclipse ADT 并过渡到 Android Studio 可能更容易,Google 似乎无论如何都想要这样做,但没有公开承认。自从他们表示将在 2013 年 I/O 上维护 ADT 以来,一直没有真正的进展。

于 2014-10-08T10:02:13.793 回答