使用gradle构建Cordova项目时覆盖Java版本

时间:2015-04-01 08:30:09

标签: java android cordova gradle

我正在尝试使用gradle作为构建工具来构建Cordova项目。在Cordova项目中,我有自己的插件,需要Java 1.7。

在Cordova附带的build.gradle中,java版本为1.6。 的build.gradle:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_6
        targetCompatibility JavaVersion.VERSION_1_6
    }
}

build.gradle有一个很大的警告,说它是一个不应该编辑的生成文件,自定义gradle构建步骤的方法是 - 据我所知 - 创建build-extras.gradle文件。

我创建了一个build-extras.gradle文件,并尝试了以下内容:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

但它似乎不起作用。我在构建项目时仍然遇到错误。

错误:

> strings in switch are not supported in -source 1.6
>         switch (action) {
>                 ^   (use -source 7 or higher to enable strings in switch)

有人可以帮我弄清楚如何设置gradle来完成这项工作吗?

3 个答案:

答案 0 :(得分:16)

我一直在努力解决同样的问题,来到这里希望找到答案!无论如何,虽然没有答案,但你提到的build-extras.gradle让我走上正轨,现在以下情况对我有用......非常感谢。

首先,我想我也可以尝试使用与您相同的语法,以便尝试找出问题所在。据我所知,它失败了,因为build-extras.gradle文件没有神奇地合并到build.gradle中,而是使用Gradle apply from方法加载和执行。由于这在android关闭之前发生,因此在此过程中过早,并且那些android值会覆盖我们的'额外'值。

(我没时间钻研Gradle或Groovy所需的时间,如果我的术语不准确,请道歉......)

但是,如果我使用postBuildExtras()方法,我可以使用它。

如果您查看Cordova生成的build.gradle文件的底部,您会看到postBuildExtras上存在这样的方法(即ext),那么被叫。由于这是配置脚本中的最后一件事,我想这个方法的重点是我们可以用它来覆盖任何东西。

因此,我最终将此作为build-extras.gradle

ext.postBuildExtras = {
    android {
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_7
            targetCompatibility JavaVersion.VERSION_1_7
        }
    }
}

我实际上在我的调查中很早就开始工作了,但是我一直在尝试其他方法,因为我怀疑当我们尝试拥有多个build-extras.gradle文件时这种技术会失败 - 考虑到我们都在谈论具体的Cordova插件很有可能。

有一种技术看起来很有希望用于插件,即使用<framework>中的plugin.xml元素,但是使用这种方法我永远无法获得特定于插件的模块来加载/导入/无论如何。当我进入#2插件时,我会再看看这个,但是现在上面描述的技术让我在今天早上的位置上有了一个很大的飞跃,所以再次感谢build-extras.gradle线索。 ;)

答案 1 :(得分:6)

关于Mark的答案,我得到了一个解决方案,可以将build-extras.gradle添加到plugin.xml文件中。因此它会自动添加到平台文件夹中的正确位置。

<source-file src="src/android/lib/build-extras.gradle" target-dir="src/.." />

答案 2 :(得分:0)

已找到并更新了下一行。

compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_6
        targetCompatibility JavaVersion.VERSION_1_6
    } 

compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

主要要点是更改位于下一个文件夹\platforms\android\中的build.gradle文件,但是请记住,还提供了其他路径的build.gradle文件。