使用 gradle 构建 Cordova 项目时覆盖 Java 版本
Posted
技术标签:
【中文标题】使用 gradle 构建 Cordova 项目时覆盖 Java 版本【英文标题】:Override Java version when building a Cordova project with gradle 【发布时间】:2015-06-05 19:49:43 【问题描述】:我正在尝试使用 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 来完成这项工作吗?
【问题讨论】:
【参考方案1】:我一直在尝试解决同样的问题,并来到这里希望找到答案!无论如何,虽然没有答案,但您对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
中使用<framework>
元素,但是使用这种方法,我永远无法加载/导入/任何插件特定的模块。当我进入插件 #2 时,我会再看一下这个,但是现在上面描述的技术让我在今天早上的位置上有了很大的飞跃,所以再次感谢build-extras.gradle
的线索。 ;)
【讨论】:
【参考方案2】:关于 Mark 的回答,我找到了将 build-extras.gradle
添加到 plugin.xml
文件中的解决方案。所以它会自动添加到平台文件夹的正确位置。
<source-file src="src/android/lib/build-extras.gradle" target-dir="src/.." />
【讨论】:
【参考方案3】:已找到并更新了下一行。
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 文件。
【讨论】:
以上是关于使用 gradle 构建 Cordova 项目时覆盖 Java 版本的主要内容,如果未能解决你的问题,请参考以下文章
ionic2常见问题——cordova使用Gradle构建下载maven太慢,使用阿里云镜像
Cordova 在 gradle-wrapper.properties 文件中构建更改 distributionUrl
Ionic Cordova 使用 Gradle 构建 Android 错误并且构建失败 [重复]
在cordova中自动gradle下载而不是本地gradle
cordova使用Gradle构建下载maven太慢,使用阿里云镜像
Gradle distributionUrl 使用“ionic cordova run android”更改为旧版本,构建失败