Jenkins編譯失敗Minimum supported Gradle version is 2.14.1. Current version is 2.8.

初入職場,會踩許多坑,出現這個錯誤也是其中一個坑,我剛剛親身經歷過,具體的、完整的解決過程不太記得了,但大體方向還記得!

Android Studio升級之後,代碼上傳,結果jenkins編譯出錯,錯誤大致意思是gradle 2.8版本編譯不支持,需要更高的gradle  2.14版本,Jekins編譯錯誤如下:


Caused by: org.gradle.api.GradleException: Minimum supported Gradle version is 2.14.1. Current version is 2.8. If using the gradle wrapper, try editing the distributionUrl in /var/lib/jenkins/project/VideoPlayer_Phone/gradle/wrapper/gradle-wrapper.properties to gradle-2.14.1-all.zip
	at com.android.build.gradle.internal.ExtraModelInfo.handleIssue(ExtraModelInfo.java:119)
	at com.android.builder.core.ErrorReporter.handleSyncError(ErrorReporter.java:80)
	at com.android.build.gradle.BasePlugin.checkGradleVersion(BasePlugin.java:636)
	at com.android.build.gradle.BasePlugin.configureProject(BasePlugin.java:369)
	at com.android.build.gradle.BasePlugin$1.call(BasePlugin.java:338)
	at com.android.build.gradle.BasePlugin$1.call(BasePlugin.java:335)
	at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:156)
	at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:120)
	at com.android.build.gradle.BasePlugin.apply(BasePlugin.java:334)
	at com.android.build.gradle.AppPlugin.apply(AppPlugin.java:75)
	at com.android.build.gradle.AppPlugin.apply(AppPlugin.java:41)
	at org.gradle.api.internal.plugins.ImperativeOnlyPluginApplicator.applyImperative(ImperativeOnlyPluginApplicator.java:35)
	at org.gradle.api.internal.plugins.RuleBasedPluginApplicator.applyImperative(RuleBasedPluginApplicator.java:44)
	at org.gradle.api.internal.plugins.DefaultPluginManager.doApply(DefaultPluginManager.java:144)
	... 58 more


BUILD FAILED

Total time: 28.403 secs
Build step 'Invoke Gradle script' changed build result to FAILURE
Build step 'Invoke Gradle script' marked build as failure
Finished: FAILURE

首先大家都知道Git倉庫代碼和Jenkins編譯之間的關係是:在本地修改代碼之後,將代碼上傳到git倉庫,jenkins編譯時從git倉庫中取最新的代碼進行編譯,但是本地配置和jenkins的配置沒有強關聯,需要各自獨立配置,本地Android Studio和Gradle版本升級之後會改變本地配置,如果在上傳代碼的過程中將這些配置信息也上傳上去的話,就會導致編譯錯誤,jenkins配置必須與git倉庫代碼中的配置是一致的!


解決方案有兩個,一個是改變jenkins上面的配置,一個是改變git倉庫代碼中的配置文件!


方案一:

升級之後的Gradle版本爲2.14.1,你可以改變jenkis配置,打開jenkins上的項目-->配置




打開之後,找到gradle版本配置選項:




如果有gradle 2.14.1這個配置選項就更改爲這個版本,如果公司沒有更新最新的gradle的話,就不會有這個版本選項,那就只能更改Git倉庫中的gradle配置信息了!

方案二:

第一步:打開項目文件




第二步,在項目文件中打開git,找出你gradle版本升級之前最後一次提交的代碼版本,回退到該版本,大概步驟是:是用gitk --all命令打開視圖界面,查看歷史修改記錄,找到gradle版本修改的地方:



找到之後,記住commit信息,打開git命令行操作,輸入git log,利用如下版本回退語句:

git reset --hard HEAD^            回退到上一個版本

git reset --hard HEAD^^          回退到前兩個版本

git reset --hard HEAD~100    回退到前一百個版本

進行回退,回退之後,在桌面clone最新的代碼,這時clone下來的代碼gradle配置就是與jenkins上面的配置一致了,利用BeyondCompare文件對比工具,對比本地代碼與clone下來的代碼,將除去配置信息之外的其他代碼修改全部同步到clone下來的代碼中去,具體哪些需要同步,哪些不需要同步,不確定的最好問一問經驗豐富的老員工,再次上傳git倉庫,jenkins編譯,此時jenkins從倉庫中取得的代碼配置就與jenkins配置一致了,爲Gradl  2 .8版本,此時編譯就能Success!你就可以開開心心地去FTP上取編譯生成的APK了!


後記:接手一個新項目,clone下來代碼之後,不要去動這份代碼,copy一份到你的工作空間,用AS打開項目,每個人的本地Android Studio和Gradle都不一樣,當有代碼修改需要上傳代碼時,利用BeyondCompare對比這兩份代碼,千萬不要上傳Gradle配置文件或其他一些諸如.git、.build、.ide、.gradle文件,基本上只需要上傳你修改的資源文件(佈局文件)、class文件(.java文件)、AndroidManifest文件等,這樣就能保證git倉庫的代碼配置始終與jenkins上面的配置一致,保證編譯的正常進行!


這篇博客寫的比較倉促,有表達不清或者不對的地方,由於本人接觸android開發時間也並不長,敬請見諒!

發佈了36 篇原創文章 · 獲贊 45 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章