(browser-build)= # 瀏覽器建置 使用 GitHub Actions 建置 AAPS。 **最低支援 AAPS 版本為 3.3.2.1。** ## 自行建置,而不是下載 **AAPS 應用程式(apk檔案)因醫療設備相關法規而無法下載。 自行建置應用程式以供個人使用是合法的,但你不得將副本提供給他人!** 詳細資訊請參閱 [FAQ 頁面](../UsefulLinks/FAQ.md)。 (Building-APK-without-a-computer)= ## 建置 AAPS 的裝置和軟體規格 我們建議使用 Android 裝置。 你也可以使用電腦或 iOS 裝置。 您需要在瀏覽器中使用多個選項卡,並在它們之間切換。 範例 Chrome: ![fork_aaps](../images/Building-the-App/CI/BrowserBuildTabs.png) 你還需要一個 Google 帳號,以便將應用程式保存在你的 Google 雲端硬碟中。 ```{note} 這個維基假設您所有操作都是使用您的行動電話和 Chrome 網頁瀏覽器進行的。 你會需要在不同的頁籤之間切換,所以在開始之前,你可以先關閉其它頁籤,避免在切換時找不到頁面。 ``` (github-fork)= ## 1. AAPS 個人分支 你需要儲存你的個人 Android Java 金鑰和 Google 雲端硬碟資訊於 GitHub 中的 Secrets(稍後會說明如何操作)。 由於這無法在 AndroidAPS 的公開倉庫中完成,你需要製作自己的原始碼副本(稱為分支)。 ### GitHub 帳號 如果你尚未擁有帳號,你需要[創建一個 GitHub 帳號](https://github.com/signup)。 你可以使用電子郵件註冊,也可以透過 Google 註冊。 遵循註冊和驗證過程。 當你擁有帳號後,請[登入 GitHub](https://github.com/login)。 ### 分支 AndroidAPS 按照[這個連結](https://github.com/nightscout/AndroidAPS)打開官方 AndroidAPS 倉庫。 點選分支圖示。 這將在你的帳號內創建一個副本。 ![fork_aaps](../images/Building-the-App/CI/ForkAAPS.png) 向下滾動至下一個螢幕並點選**建立分支**。 ![fork_aaps_confirm](../images/Building-the-App/CI/ForkAAPS2.png) *注意:如果你想要建置開發版本或自訂版本,你可以**取消選擇**「僅複製主分支」。* ![fork_aaps_main](../images/Building-the-App/CI/ForkAAPS3.png) ```{note} You cannot fork and you see this?

**`建立新的 fork`**
`fork 是儲存庫的副本。 Fork 一個資料庫讓你可以自由嘗試修改,而不會影響原始專案。 檢視現有的 fork。`
*`必填欄位以星號(*)標示。`*
**`沒有可用的目標可用來 fork 此儲存庫。`**

這代表你已經有 AndroidAPS 的現有 fork。
請確保它是最新狀態,然後繼續進行準備步驟。 ``` ```{warning} 在沒有備份你的 secrets 前,絕對不要刪除你的 fork! ``` GitHub 現在顯示你個人的 AndroidAPS 副本。 請保持這個瀏覽器頁籤開啟。 ![forked_aaps](../images/Building-the-App/CI/ForkAAPS4.png) (aaps-ci-preparation)= ## 2. 準備步驟 - 如果你是從 Android 裝置建置,請先從 Google Play 商店安裝[File Manager Plus](https://play.google.com/store/apps/details?id=com.alphainventor.filemanager)。 ```{admonition} File Manager Plus :class: dropdown :::{include} BrowserBuildFileManagerPlus.md ``` - 從這裡下載準備檔案:[aaps-ci-preparation.html](https://github.com/nightscout/aaps-ci-preparation/releases/download/release-v1.1.2/aaps-ci-preparation.html) ````{admonition} Note :class: 注意 1. 如果你是從應用程式內開啟此頁面(透過 Web View),HTML 檔案可能無法下載。 請複製下方 URL 並在瀏覽器中開啟下載: ```text https://github.com/nightscout/aaps-ci-preparation/releases/download/release-v1.1.2/aaps-ci-preparation.html ``` 或前往最新版本頁面: ```text https://github.com/nightscout/aaps-ci-preparation/releases/latest ``` 2.本站提供的備份檔: - 如果外部連結也無法使用,你可以改用這個備份檔案進行下載。 ```{eval-rst} .. raw:: html        aaps-ci-preparation.html ``` ```` AndroidAPS 建置需要私有金鑰,這些金鑰儲存於 Java 金鑰庫(JKS): - 如果這是你第一次建立 AAPS(或你沒有 Android Studio 的 JKS),請參考 [AAPS-CI 選項 1 – 產生 JKS](#aaps-ci-option1) 來完成設定。
```{warning} 使用 **選項 1** 建立 AAPS 將不允許您升級現有的 AAPS。 您需要: 1. 在您的手機上[匯出設定](#ExportImportSettings-Automating-Settings-Export)。 2. 將設定檔案從您的手機複製或上傳到外部位置 (例如您的電腦、雲端儲存服務…)。 3. 根據選項 1 的說明生成簽名 apk 的新版本並傳輸至您的手機。 4. 卸載手機上的上一個 AAPS 版本。 5. 在手機上安裝新的 AAPS 版本。 6. [匯入設定](#ExportImportSettings-restoring-from-your-backups-on-a-new-phone-or-fresh-installation-of-aaps) 來恢復您的目標和設定。 7. 從 Nightscout 恢復您的資料。 ``` - 如果你想使用自己的 JKS(你在先前的 AAPS 建置中使用的那個 JKS),並且你知道它的密碼和別名(key0),請選擇 [AAPS-CI 選項 2 – 上傳現有的 JKS](#aaps-ci-option2)。
一旦建立,AAPS 應用程式將保存在您的 Google 雲端硬碟中。 (aaps-ci-option1)= ### AAPS-CI 選項 1 – 生成 JKS - 適合首次使用者、沒有 JKS 的使用者或忘記密碼或別名的使用者。 - 以下是使用多個平台的範例。 - 在以下列表中選擇您的平台, Android(優先選擇)、iOS 或電腦。 ```{tab-set} :::{tab-item} Android (aaps-ci-option1-android)= :::{include} BrowserBuildO1A.md ::: :::{tab-item} iOS (aaps-ci-ios-ipad)= :::{include} BrowserBuildO1I.md ::: :::{tab-item} 電腦 (aaps-ci-option1-computer)= :::{include} BrowserBuildO1C.md ::: ``` 跳過下一部分,繼續 [這裡](#aaps-ci-google-drive-auth)。 --- (aaps-ci-option2)= ### AAPS-CI 選項 2 – 上傳現有 JKS - 適用於已擁有 JKS 並知道 JKS 密碼和別名的使用者(對於 `KEYSTORE_PASSWORD`、`KEY_ALIAS` 和 `KEY_PASSWORD`,請在 GitHub 中輸入您的實際密碼和別名 - 來自 Android Studio,詳情請參閱下方您使用它們的地方)。 ```{admonition} KEY + PASSWORDS :class: dropdown ![記住密碼](../images/Building-the-App/044_RememberPwd.png) ``` - 以下是使用多個平台的範例。 - 在下面的列表中選擇您的平台,Android(首選選擇)或電腦。 ```{tab-set} :::{tab-item} Android (aaps-ci-option2-android)= :::{include} BrowserBuildO2A.md ::: :::{tab-item} 電腦 (aaps-ci-option2-computer)= :::{include} BrowserBuildO2C.md ::: ```
(aaps-ci-google-drive-auth)= ### AAPS-CI Google 雲端硬碟授權 ```{warning} 無論你遵循前述哪一組指引(選項 1 或選項 2),你必須新增 Google Drive 授權,才能成功使用 Browser Build。 ``` 注意:如果您已在影片中跟隨了這部分,現在可以跳到 [這裡](#github-build-apk)。 返回檔案資源管理器 Plus 頁籤。 向下滾動到 Google Drive 認證部分,然後點擊開始認證。 ![](../images/Building-the-App/CI/BrowserBuildStep44.png) 選擇您的 Google 帳號。 ![](../images/Building-the-App/CI/BrowserBuildGAUTH1.png) 向下滾動並接受存取權限。 該網頁需要此存取權以獲取 Google Drive 認證金鑰。 點擊繼續。 ![](../images/Building-the-App/CI/BrowserBuildGAUTH2.png) `GDRIVE_OAUTH2` 欄位將會填寫,請點擊上方的複製按鈕。 ![](../images/Building-the-App/CI/BrowserBuildGAUTH3.png) 切換回 GitHub 頁籤。 向下滾動到儲存庫密碼並點擊新增儲存庫密碼。 如果您遵循了選項 1,應該會看到這個: ![](../images/Building-the-App/CI/BrowserBuildGAUTH4.png) 如果您遵循了選項 2,將會有更多金鑰: ![](../images/Building-the-App/CI/BrowserBuildGAUTH4b.png) 在名稱欄位中,貼上您剛才複製的文字。 在文字框上長按以顯示「貼上」選單。 ![](../images/Building-the-App/CI/BrowserBuildGAUTH5.png) 切換到 File Explorer Plus 頁籤。 點擊第二個複製按鈕。 ![](../images/Building-the-App/CI/BrowserBuildGAUTH6.png) 切換回 GitHub 頁籤。 1. 在「secret」」欄位中,貼上您剛才複製的文字。 在文字框上長按以顯示「貼上」選單。 2. 點擊「Add secret」。 ![](../images/Building-the-App/CI/BrowserBuildGAUTH7.png) 現在你應該有兩個(選項 1)或五個(選項 2)Secrets 項目。 ![](../images/Building-the-App/CI/BrowserBuildGAUTH8.png) GitHub 現在將能夠將 AAPS apk 檔案儲存在您的 Google Drive 中,一旦建立完成。 (github-build-apk)= ## AAPS-CI GitHub Actions 以建置 AAPS APK - 適合一般使用者。 ```{tab-set} :::{tab-item} Wiki :::{include} BrowserBuildCIS.md ::: :::{tab-item} Video
::: ``` ### 建構版本選擇 **僅 AAPS 版本 3.3.2.1 及以上將使用瀏覽器方法繼續建構。** ![](../images/Building-the-App/CI/BrowserBuildVariant2.png) (browserbuild-variant)= ### 建構變數選擇 *注意: Android 和 Android Wear 應用程式將自動建置。* - 選擇您需要的變種: - fullRelease: 用於正常的幫浦使用,具有完整功能。 - [aapsclientRelease, aapsclient2Release](#RemoteControl_aapsclient):適用於看護者(需要 [Nightscout](../SettingUpAaps/Nightscout.md))。 - pumpcontrolRelease:替換您的幫浦應用程式/控制器 ![](../images/Building-the-App/CI/BrowserBuildVariant3.png) 以「Debug」結尾的變數表示 APK 將以除錯模式建立,這對開發者進行故障排除非常有用。 (aaps-ci-troubleshooting)= ## AAPS-CI 問題排除 (aaps-ci-preparation-web)= ### aaps-ci-preparation 網頁 - 當你使用「檔案管理器」打開 aaps-ci-preparation.html 時,它會在你的手機上啟動一個臨時本地伺服器來顯示網頁並接收 Google Refresh token。 - 如果你看到以下螢幕,這表示你已經一段時間未進行操作,檔案管理器已經關閉本地伺服器。 - 請使用「檔案管理器」應用程式重新打開 aaps-ci-preparation.html,並完成剩餘步驟。 ![aaps_ci_html_not_found](../images/Building-the-App/CI/aaps_ci_html_not_found.png) (aaps-ci-google-token-expired)= ### Google 重新整理權杖已過期 - 如果 Google OAuth2 重新整理權杖連續 6 個月未使用就會過期,並且在其他情況下也可能失效(例如:您變更了 Google 帳號密碼,或手動撤銷了存取權)。 如需更多詳細資訊,請參閱 [Google OAuth2 說明文件](https://developers.google.com/identity/protocols/oauth2)。 - 您會看到一則錯誤,指出存取權杖無效,如下所示: ![aaps_ci_token_expired](../images/Building-the-App/CI/aaps_ci_token_expired.jpg) - 如果您的建置因 Google 重新整理權杖過期或被撤銷而失敗,您需要重新執行 [Google Drive 驗證](#aaps-ci-google-drive-auth) 的步驟以取得新的 `GDRIVE_OAUTH2` 權杖,並在您的 GitHub 儲存庫中更新該機密,然後重新執行建置工作流程。 (aaps-ci-disable-software)= ### 停用可能會影響 OAUTH2 授權的軟體 - 在嘗試獲取 OAUTH2 金鑰之前,請停用電話上的任何 VPN 或安全應用程式(防火牆、反惡意軟體等)。 (aaps-ci-actions-permission)= ### 檢查 GitHub Actions 權限設定 - 請確保 GitHub Actions 政策設置為「Allow all actions and reusable workflows」(Settings → Actions → General)。 ![aaps_ci_actions_permission](../images/Building-the-App/CI/aaps-ci-actions-permission.png) `actions/checkout@v4` 和 `actions/setup-java@v4` 不允許在 `xxxxx/AndroidAPS` 中使用。 此工作流程中的操作必須位於 `xxxxx` 擁有的儲存庫內 -------- ```{warning} Google 雲端硬碟授權中的「自訂」欄位,適合熟悉Google Oauth2的人,並且想要使用自已的ClientID時使用。 僅供你參考。 ``` (github-cherry-pick)= ## 如果你想將特定的提交添加到你的分支,請使用 cherry-pick。 ![aaps_cherry-pick_ci](../images/Building-the-App/CI/aaps_cherry_pick_ci.png) - Use workflow from Branch:請輸入你想要 cherry-pick 到的分支名稱。 - Upstream Repository:請輸入你想要 cherry-pick 的庫名稱。 - Commit SHA:請輸入你想要 cherry-pick 的提交 SHA(像 git commit hash)。 - Select Build Variant: [變體](#browserbuild-variant) (ci-keystore-export)= ## CI KeyStore 匯出 如果您想要匯出儲存的金鑰庫,請使用這個方法。 這段腳本將會把您先前配置的金鑰庫資訊(來自選項 1 或選項 2)匯出為一個受密碼保護的 ZIP 檔案到你的 Google 雲端硬碟裡 `/AAPS/KeyStore` 目錄中 ```{warning} 在使用這個匯出方法之前,請確保您的金鑰庫和 Google 雲端硬碟的設定已完成。 ``` ### 步驟: 1. **新增 ZIP 密碼:** - 前往您的儲存庫的 **設定** → **密碼和變數** → **動作** - 點擊 **New repository secret(新增儲存庫密碼)** - 在 **Name(名稱)** 欄位中,輸入: `ZIP_PASSWORD` - 在 **Secret(密碼)** 欄位中,輸入您自訂的 ZIP 加密密碼 - 請僅使用英文字母和數字作為密碼(不可以使用特殊符號) - 點擊 **Add secret(新增密碼)** ![aaps_ci_zip_password.png](../images/Building-the-App/CI/aaps_ci_zip_password.png) 2. **執行匯出工作流程:** - 前往您的儲存庫中的 **Actions** 標籤 - 選擇 **CI KeyStore Export** - 點擊 **執行工作流程** - 匯出的金鑰庫 ZIP 檔案將會保存在您的 Google 雲端硬碟中 ![aaps_ci_keystore_export.png](../images/Building-the-App/CI/aaps_ci_keystore_export.png) ![aaps_ci_keystore_export_run.png](../images/Building-the-App/CI/aaps_ci_keystore_export_run.png)