# 打包 Android APK 文件 ###### tags: `Work` ![](https://i.imgur.com/8R6HLfF.png) [TOC] # 優先條件 1. 下載 [Android Studio](https://developer.android.com/studio) 軟體 2. 下載對方給的 Android Code (可能是ZIP, GITLAB, etc) # 一般正常專案打包 ## 1. 檔案匯入到Android Studio 請選 **Open an Existing Project** 並選上你的專案資料夾。 ![](https://i.imgur.com/qgYBguM.png) 備註: 打開後需要看右下方是否全部流程都跑好了再繼續。 ## 2. Clean & Sync Gradle 在此需要讓專案先做個初步整理跟更新會比較好,避免有Cache類是問題。首先我們先Clean專案在做Sync。 ### 1. Clean 專案 請找 **Build > Clean Project** ![](https://i.imgur.com/3fzidn4.png) ### 2. Sync Gradle **File > Sync Project With Gradle Files** ![](https://i.imgur.com/HgnZdpb.png) 備註: Gradle 檔案很多都是設定檔案及三方import/dependency/套件。 ## 3. 選好專案的Variant ### Build Variant是什麼? 有些時候在開發上,我們可能會有不同專案在同一個專案底下。例如: 我們專案跟另一個專案只有一些小小參數改變或小變化,都會這樣做。這時會用專案Variant去選取你當下想用或看的專案。 ### **1. 開啟方式Build Variant:** 如果在Android Studio的**左方**看不到Build Variant Window的話,請往**左下方**找一下的 Build Variant Tab開啟他。 ![](https://i.imgur.com/03ZCMEd.png) ### **2. 選取Build Variant:** ![](https://i.imgur.com/Vo3uMrw.png) > 主要專案 ![](https://i.imgur.com/kX1fzWl.png) > 專案的Library 首先需要找 ![](https://i.imgur.com/Vo3uMrw.png) 主要專案,在他的右方會有Variant名稱,選好你要的就好了。 備註: 如果沒有特別分的話(代表只有debug跟release選項),那就選Debug即可。 ## 打包 ### Debug APK **Build > Build Bundle/APK > Build APK**。 ![](https://i.imgur.com/FrBqcRk.png) ### Release APK 1. 先找 **Generate Signed Bundle/APK**,位子在 **Build > Generate Signed Bundle/APK**。 >![](https://i.imgur.com/QZFuOjr.png) [color=lightblue] 2. 選APK >![](https://i.imgur.com/MjriFKE.png)[color=lightblue] 3. 填寫需要的資料: **Key Store Path:** 要找一個.keystore檔案 (如果專案裡面沒有的話,需要跟廠商要) **Key store password, Key alias, Key Password:** 如果沒有一個檔案叫keystore.properties在資料夾的話,資訊就需要跟廠商要。 >![](https://i.imgur.com/g0xl5Yz.png)[color=lightblue] 4. 選Debug/Release APK: 這裡可以多選,一次包很多個。選好後按Finish讓他慢慢跑。 >![](https://i.imgur.com/4EL07Ut.png)[color=lightblue] 5. 打開APK位子: **打開方法1:** 打包好時,Android Studio 的右下方會顯示一個公告。 Title 為 **Generate Signed APK**。 如果打開下方指標,他可以直接幫你locate(定位)你的APK位子。所以按下locate就好。 **打開方法2:** 打開專案目錄 > app > build> outputs > apk 就可以找到你要的APK。 **備註:** 如果這次的專案有很多Variant會有Variant的目錄,以及在Variant裡會有Debug/Release目錄。 >![](https://i.imgur.com/taslFb8.png)[color=lightblue] # 黑白打包 ## 1. 檢查是否有Gradle 資料夾 黑白團隊不一定會有給,可是沒有Gradle資料夾跟檔案的話是無法Build的。 **需要檢查的資料夾如下:** ![](https://i.imgur.com/nFv6TAh.png) ### 處理沒有Gradle資料夾的情況: 如果: 1. **會開Android專案**: 請自行開專案,並把新專案的**Gradle資料夾拷貝到*黑白的Android Root Project 底下***。 2. **不會開Android專案**: 請按照Android 官方的[创建 Android 项目Tutorial](https://developer.android.com/training/basics/firstapp/creating-project) 就可以創建新的專案,並把新專案的**Gradle資料夾拷貝到*黑白的Android Root Project 底下***。 ## 2. 專案必續更改的幾個點: ### 2.1 允許讀取UTF-8 因為對方使用Mac電腦無遇到這問題,可是Windows需要做這更改。首先找 ***gradle.properties***,在做需要的更改。 **gradle.properties:** 1. **檔案位子:** heibai(projet root) > gradle.properties >![](https://i.imgur.com/QI2MWbJ.png)[color=lightblue] 2. **更改項目** ```java= org.gradle.jvmargs=-Xmx2048m //改成 org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 ``` ### 2.2 DataBinding 更新 您可能會遇到databinding 相關Error如果要打包,因為初步原始碼已經要被淘汰了,所以先改成新的。 需要改的地方有**2個檔案**: **app/build.gradle** 及 **FootballLib/football/build.gradle**。 **build.gradle:** ```java= dataBinding { enabled = true } //改成 buildFeatures { dataBinding true } ``` ## APK打包流程 如果真的以上的步驟都做好了,那就可以按照[一般正常專案打包](#一般正常專案打包)的步驟完成APK輸出。 # 如何用模擬機測試? ## 1. 先確認SDK Manager的Android SDK 版本有沒有下載? ### **SDK Manager在哪呢?** 1. 右上方有一個cube + down arrow,按下這時會直開Window 顯示Android SDK - SDK platform. 2. 勾選你要的 API level 再按右方的下載鍵,就可以了。 ![](https://i.imgur.com/hPYbNRB.png) 3. 這樣就可以按Apply 後 Ok 再退出此window。 **SDK Manager:** ![](https://i.imgur.com/RluL3oS.png) **SDK Platform:** ![](https://i.imgur.com/3WWYQHA.png) ## 2. 如何確認你現在有模擬機能用? >![](https://i.imgur.com/GIxq3gZ.png)[color=orange] 在上方可以看到 **Android icon + app** 這就代表這個專案是一個可以build看看的app專案。 沒有顯示此樣式的話,有可能: (1) gradle folder 不在 (2) Setting 哪裡有誤 另外在 **Android icon + app** 右方就有一個 **Nexus 5X**,這就是我的模擬機(代表有模擬機可用),如果需要增加模擬機,請前往AVD Manager增加。 ## 3. 如何build app在模擬機? >![](https://i.imgur.com/wLv2RCL.png)[color=orange] 最右方的icon按下去就是可以build app了,偶爾長得像: 1. 上圖一樣(已經build時需要重新build) 2. 一個往右箭頭 (如果還沒build) 備註:提醒Build動作偶爾很慢請給他一點時間跑。