【问题标题】:Override Java version when building a Cordova project with gradle使用 gradle 构建 Cordova 项目时覆盖 Java 版本
【发布时间】: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 来完成这项工作吗?

【问题讨论】:

    标签: java android cordova 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 文件。

        【讨论】:

          猜你喜欢
          • 2015-04-10
          • 2016-11-29
          • 2020-01-13
          • 2016-03-24
          • 1970-01-01
          • 2011-10-30
          • 2014-02-25
          • 2021-05-21
          • 1970-01-01
          相关资源
          最近更新 更多