Jenkins配置自動打包 -- 遇到的坑


1.把gradle路徑設為本地路徑

Jenkins部署在遠程linux服務器上,使用git將代碼下載到服務器路徑下后,無法使用gradle命令

因為默認配置都是gradle同步時 實時從網上下載,進入gradle-wrapper.properties可查看配置:

distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

遠程服務器網速慢,gradle下載不下來

解決方案:本地下載好gradle-2.14.1-all.zip,copy到遠程服務器上,在gradle-wrapper.properties文件中修改路徑為本地路徑:

#distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
distributionUrl=file\:/jenkins/jenkins_home/workspace/uicase/gradle/wrapper/gradle-2.14.1-all.zip

2.執行./gradlew 仍錯誤,報錯

“Error:Gradle distribution 'file\:/jenkins/jenkins_home/workspace/uicase/gradle/wrapper/gradle-2.14.1-all.zip' contains too many directories. Expected to find exactly 1 directory.”

找了很多資料,發現問題在:

gradle-2.14.1-all.zip 為我本地mac本下載后再拷到服務器上,mac的safari瀏覽器下載完后自動解壓了,因為需要zip包所以我手動再壓縮成zip包,OSX 自動生成許多__MACOSX 文件夾

解決方案:

在服務器上找到zip所在文件夾下,輸入以下命令: 
zip -d gradle-2.14.1-all.zip __MACOSX/*,再重新運行./gradlew,問題解決。

感謝:http://blog.csdn.net/daoxiaomianzi/article/details/60589690

3.Terminal執行./gradlew clean成功,但在jenkins腳本中執行./gradlew clean失敗

報錯信息: 

* What went wrong:
A problem occurred configuring root project 'BloodGlucose'.
> SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.

解決方案:

解決:在系統管理->系統設置 -> 全局屬性 -- Environment variables里面新增一個全局環境變量,配置ANDROID_HOME即可。

 

感謝http://blog.csdn.net/hwhua1986/article/details/48155163

4../gradlew clean成功,執行./gradlew assembleDebug  失敗

①報錯信息:

* What went wrong:

Execution failed for task ':uitest:mergeDebugResources'.

> Error: java.lang.RuntimeException: Crunching Cruncher drop_down_list_arrow.png failed, see logs

看到網上有個盆友說,是因為png文件不符合標准,替換即可。於是找出這個文件在哪,逐條刪除。。

[root@LetvWebServer-8CB344 BasicSample]# find . -name drop_down_list_arrow.png

./uitest/build/intermediates/exploded-aar/cn.trinea.android.common/trinea-android-common/4.2.15/res/drawable-hdpi/drop_down_list_arrow.png

./uitest/build/intermediates/exploded-aar/cn.trinea.android.common/trinea-android-common/4.2.15/res/drawable-mdpi/drop_down_list_arrow.png

./uitest/build/intermediates/exploded-aar/cn.trinea.android.common/trinea-android-common/4.2.15/res/drawable-ldpi/drop_down_list_arrow.png

但是重新執行./gradlew assembleDebug仍然報錯,這些圖片文件在build的過程中再次生成,但又阻礙繼續build。。

再次尋覓答案~~

后找到http://blog.csdn.net/q9104422999/article/details/53736027 

解決方案:

在build.gradle文件中加入下面兩行(標黃)即可:

android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false

②解決完上面的問題,繼續運行,仍報錯

報錯信息:

* What went wrong: Execution failed for task ':uitest:processDebugResources'. > com.android.ide.common.process.ProcessException: Failed to execute apt ...... Caused by: org.gradle.process.internal.ExecException: Process 'command '/data/android-sdk/r24.4.1/build-tools/23.0.1/aapt'' finished with non-zero exit value 127

這個問題貌似很多人遇到,但是解決辦法試了都不管用~~~ 最后發現一個靠譜的答案 ~~ 因為確實libz.so.1文件~~

http://stackoverflow.com/questions/31868406/aapt-finished-with-non-zero-exit-value-127

但是這個答主所在服務器為ubuntu,下載包的命令在centos上並不管用,也搜尋不到相關的包。

后再次尋覓~~ 終於尋找到安裝缺失包的方法~~

解決方案:

[root@Sample]# yum whatprovides libz.so.1

......

zlib-1.2.3-29.el6.i686 : The zlib compression and decompression library

Repo        : CentOS-os

匹配來自於:

Other       : libz.so.1

————————————————————

查找到相關包:zlib-1.2.3-29.el6.i686

[root@Sample]#sudo yum install zlib-1.2.3-29.el6.i686

安裝成功后,重新./gradlew assembleDebug ~  成功~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM