最近公司運營活動比較多,因此App的發版也比較頻繁,並且每次發版都會更改App的圖標和歡迎頁,之前都是運營和產品單獨發給我,我再手動替換到工程中去,雖然說這樣就有了和運營妹子交流的機會,但本吊內心只有技術,次數多了就以爲麻煩。正好最近在學用Jenkins進行Android持續集成的東西,正好能夠用來解決這個問題。shell
不懂如何配置Jenkins和用Jenkins進行Android多渠道打包的,能夠看下個人上一篇文章Jenkins+Git+Walle+AndResGuard打造Android多渠道打包系統,固然網上更詳細的教程也有不少,就再也不贅述了。
進入項目的配置裏面,在general
裏面選擇參數化構建過程,加入兩個參數:bash
Inject environment variables to the build process
裏面加入圖標的路徑參數(找不到這個選項的須要安裝
Environment Injector
插件);
SOURCE_TARGET=app
SOURCE_SRC=src
SOURCE_JAVA=main
SOURCE_SRC=src
SOURCE_RES=res
複製代碼
再在構建裏面加入Execute Shell
,注意要放在Invoke Gradle Script
,也就是實際的gradle編譯過程以前。內容以下:app
cd ${WORKSPACE}
iconFile="launcher.png"
# 上傳的圖標會放在當前Jenkins項目的根目錄,下面判斷$iconFile是否存在
if [ true == $isCustom ] && [ -f "$iconFile" ]; then
Launcher_xxxh="${WORKSPACE}/${SOURCE_PATH}/${SOURCE_TARGET}/${SOURCE_SRC}/${SOURCE_JAVA}/${SOURCE_RES}/mipmap-xxxhdpi"
Launcher_xxh="${WORKSPACE}/${SOURCE_PATH}/${SOURCE_TARGET}/${SOURCE_SRC}/${SOURCE_JAVA}/${SOURCE_RES}/mipmap-xxhdpi"
Launcher_xh="${WORKSPACE}/${SOURCE_PATH}/${SOURCE_TARGET}/${SOURCE_SRC}/${SOURCE_JAVA}/${SOURCE_RES}/mipmap-xhdpi"
Launcher_h="${WORKSPACE}/${SOURCE_PATH}/${SOURCE_TARGET}/${SOURCE_SRC}/${SOURCE_JAVA}/${SOURCE_RES}/mipmap-hdpi"
sips -z 512 512 launcher.png --out ic_launcher.png
mv ic_launcher.png ${Launcher_xxxh}
sips -z 384 384 launcher.png --out ic_launcher.png
mv ic_launcher.png ${Launcher_xxh}
sips -z 256 256 launcher.png --out ic_launcher.png
mv ic_launcher.png ${Launcher_xh}
sips -z 192 192 launcher.png --out ic_launcher.png
mv ic_launcher.png ${Launcher_h}
fi
複製代碼
上面的shell腳本比較簡單,用到了一個圖片處理命令,就是將上傳的圖片調整到對應大小後分別放入對應的文件夾裏,而後開始編譯就好了:post
上面就是替換利用Jenkins替換App圖標的方式了,替換歡迎頁圖片也是一樣的步驟。看下最終效果:gradle
不過這樣處理不足之處是隻能適用於歡迎頁數量固定的狀況。因此若是圖片數量不固定能夠考慮統一上傳一個壓縮包,而後在Jenkins解壓遍歷圖片文件。好了,如今發版前運營和產品妹子不再會找我換圖片了。ui