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

我正在尝试使用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来使这项工作?

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

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

(我没有时间深入研究Gradle或Groovy所需的内容,如果我的术语不精确,请道歉……)

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

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

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

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

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

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

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