16:22 Bob: ?????
16:27 Alice: Bob 還好嗎?發生什麼事情了?
16:28 Bob: 我不知道為什麼 CI/CD 包出來的版本打不開,可是我從本機 Build 版本是正常的。
16:28 Alice: CI/CD 包版過程中有任何錯誤訊息拋出嗎?
16:28 Bob: 沒有..........我花了一整天還是沒找到問題在哪裡 :’(
故事從 Android 工程師發現 CI/CD 包出來的 App 開啟不了做開始,先跟大家分享 Android 工程師是怎麼將程式碼發佈成 App 讓大家可以裝在手機上執行的,一般來說,包版有兩種做法:
Bob 闡述在自己電腦上執行 1. 建置出的 App 可以在裝置順利啟動,然而 CI/CD 執行的是 2. 卻發生了問題。
我們相信 CI/CD 但是卻在某天發生意外,在我們建立制度的時候,是預期自動化可以解決工程師的痛點。然而,寫好且在運作的機制,一定會產生維護的成本。當專案程式碼發生變化時,CI/CD 也需要跟著一起調整。
為什麼兩邊結果不一致呢?先看看 IDE 執行了哪些步驟,畢竟可憐的 Bob 已經花了一天在看 CI/CD 的 Log 仍然一無所穫。雖然 IDE 執行動作時完全是以可視化的方式,點擊幾下就開始執行動作,實際上都是在執行指令。大家可以觀察,打包版本時 Terminal 會一直印出目前現在建置狀態中發生的進度跟系統訊息。除了建置訊息之外,會看到 task: 開頭後面會加上動作,在冒號後面的指令,是在 IDE 可以執行的 gradle 相關功能。
打包正式版的 Android Apk App,需要執行像./gradlew assemblerelease
指令。所以當查看 Android Studio 點擊包版後,看看執行的指令跟 CI/CD 腳本或 Shell 是不是一致的,若不一致請將它們調整成一致吧。