[英]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.