Jenkins實戰之動態替換Android應用圖標

前言

最近公司運營活動比較多,因此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

相關文章
相關標籤/搜索