iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0
自我挑戰組

Android 工程師的 CI/CD 之旅系列 第 9

CI/CD 打包版出來的檔案不是我想要的

  • 分享至 

  • xImage
  •  

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 讓大家可以裝在手機上執行的,一般來說,包版有兩種做法:

  1. IDE 執行,使用Android Studio 由 Google 官方提供的 IDE 內建功能
  2. 在 Terminal 或命令提示字元下 assemble 開頭的執行命令

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 是不是一致的,若不一致請將它們調整成一致吧。


上一篇
旅途開始,CI/CD 發生什麼事情了?
下一篇
Android 工程師開發中常用指令們
系列文
Android 工程師的 CI/CD 之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言