簡體   English   中英

使用gradle構建Cordova項目時覆蓋Java版本

[英]Override Java version when building a Cordova project with gradle

我正在嘗試使用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-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插件,非常可能。

有一種看起來很有前途的插件技術,即使用plugin.xml<framework>元素,但是使用這種方法我永遠無法獲得特定於插件的模塊來加載/導入/無論如何。 當我進入#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文件與其他路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM