使用gradle构建Cordova项目时重写Java版本

使用gradle构建Cordova项目时重写Java版本,java,android,cordova,gradle,Java,Android,Cordova,Gradle,我正在尝试使用gradle作为构建工具来构建Cordova项目。在Cordova项目中,我有自己的插件,需要Java1.7 在Cordova附带的build.gradle中,java版本是1.6。 build.gradle: android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_6 targetCompatibility JavaVersion.VERSION_1_6

我正在尝试使用gradle作为构建工具来构建Cordova项目。在Cordova项目中,我有自己的插件,需要Java1.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来实现这一点吗?

我一直在尝试解决同样的问题,来到这里希望找到答案!无论如何,虽然没有答案,但您提到的
构建额外功能.gradle
让我走上了正确的轨道,下面的内容现在对我很有用…谢谢

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

(我没有足够的时间钻研Gradle或Groovy,如果我的术语不准确,我深表歉意……)

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

如果查看由Cordova生成的
build.gradle
文件的底部,您将看到如果
ext
上存在这样的方法(即
postBuildExtras
),则会调用它。因为这是配置脚本中的最后一件事,所以我想这个方法的要点是我们可以使用它来覆盖任何内容

因此,我将此作为我的
构建附加。gradle

ext.postBuildExtras = {
    android {
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_7
            targetCompatibility JavaVersion.VERSION_1_7
        }
    }
}
事实上,我在调查的早期就已经有了这种方法,但我一直在尝试其他方法,因为我怀疑当我们尝试使用多个
build extra.gradle
文件时,这种技术会失败——考虑到我们都在专门讨论Cordova插件,这种情况很有可能发生


对于插件来说,有一种技术很有希望,那就是使用
plugin.xml
中的
元素,但是使用这种方法,我永远无法加载/导入插件特定的模块。当我谈到plugin#2时,我会再看一眼,但是现在,上面描述的技术让我比今天早上的情况有了更大的飞跃,所以再次感谢
构建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
    } 

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

compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }