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

大頭呆發表於2018-03-13

前言

最近公司運營活動比較多,所以App的發版也比較頻繁,而且每次發版都會更改App的圖示和歡迎頁,以前都是運營和產品單獨發給我,我再手動替換到工程中去,雖說這樣就有了和運營妹子交流的機會,但本吊心裡只有技術,次數多了就覺得麻煩。正好最近在學用Jenkins進行Android持續整合的東西,正好可以用來解決這個問題。

實戰

不懂如何配置Jenkins和用Jenkins進行Android多渠道打包的,可以看下我的上一篇文章Jenkins+Git+Walle+AndResGuard打造Android多渠道打包系統,當然網上更詳細的教程也有很多,就不再贅述了。
進入專案的配置裡面,在general裡面選擇引數化構建過程,加入兩個引數:

Jenkins實戰之動態替換Android應用圖示
加好以後,在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實戰之動態替換Android應用圖示

上面就是替換利用Jenkins替換App圖示的方式了,替換歡迎頁圖片也是同樣的步驟。看下最終效果:

Jenkins實戰之動態替換Android應用圖示
不過這樣處理不足之處是隻能適用於歡迎頁數量固定的情況。所以如果圖片數量不固定可以考慮統一上傳一個壓縮包,然後在Jenkins解壓遍歷圖片檔案。

好了,現在發版前運營和產品妹子再也不會找我換圖片了。

相關文章