前言
最近公司運營活動比較多,所以App的發版也比較頻繁,而且每次發版都會更改App的圖示和歡迎頁,以前都是運營和產品單獨發給我,我再手動替換到工程中去,雖說這樣就有了和運營妹子交流的機會,但本吊心裡只有技術,次數多了就覺得麻煩。正好最近在學用Jenkins進行Android持續整合的東西,正好可以用來解決這個問題。
實戰
不懂如何配置Jenkins和用Jenkins進行Android多渠道打包的,可以看下我的上一篇文章Jenkins+Git+Walle+AndResGuard打造Android多渠道打包系統,當然網上更詳細的教程也有很多,就不再贅述了。
進入專案的配置裡面,在general
裡面選擇引數化構建過程,加入兩個引數:
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編譯過程之前。內容如下:
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指令碼比較簡單,用到了一個圖片處理命令,就是將上傳的圖片調整到對應大小後分別放入對應的資料夾裡,然後開始編譯就行了:
上面就是替換利用Jenkins替換App圖示的方式了,替換歡迎頁圖片也是同樣的步驟。看下最終效果:
不過這樣處理不足之處是隻能適用於歡迎頁數量固定的情況。所以如果圖片數量不固定可以考慮統一上傳一個壓縮包,然後在Jenkins解壓遍歷圖片檔案。好了,現在發版前運營和產品妹子再也不會找我換圖片了。