我正在尝试使用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来使这项工作?
我一直在努力解决同样的问题,来到这里希望找到答案!无论如何,虽然没有答案,但你提到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
的线索。 ;)
关于Mark的答案,我得到了一个解决方案,将build-extras.gradle
添加到plugin.xml
文件中。因此它会自动添加到平台文件夹中的正确位置。
<source-file src="src/android/lib/build-extras.gradle" target-dir="src/.." />
已找到并更新下一行。
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文件和其他路径。