Android Studio 如何編譯運行應用?
前面的小節(jié)我們介紹了運行配置相關(guān)的知識,從本小結(jié)我們學習如何構(gòu)建和運行我們的應用。
1. 構(gòu)建和運行
我們只需點擊幾下,即可讓 Android Studio 設置好要部署至 Android 模擬器或已連接設備的新項目。
1.1 編譯運行
要編譯和運行我們的應用,請按以下步驟操作:
-
在工具欄中,從運行配置下拉菜單中選擇我們的應用。
-
從目標設備下拉菜單中,選擇要用來運行應用的設備。
4. 點擊 Run 圖標 。
1.2 更改運行/調(diào)試配置
當我們首次運行應用時,Android Studio 使用默認運行配置。該運行配置用于指定要通過 APK 還是 Android App Bundle 部署我們的應用、要運行的模塊、要部署的軟件包、要啟動的 Activity、目標設備、模擬器設置、logcat 選項,等等。
默認運行/調(diào)試配置會構(gòu)建 APK,啟動默認項目 Activity,并使用 Select Deployment Target 對話框選擇目標設備。如果默認設置不適合我們的項目或模塊,我們可以自定義運行/調(diào)試配置,也可以在項目、默認和模塊級別創(chuàng)建新配置。要修改運行/調(diào)試配置,請依次選擇 Run > Edit Configurations。
Tips:這部分在前一小節(jié)已經(jīng)詳細學習。
1.3 更改編譯變體
默認情況下,在我們點擊 Run 后,Android Studio 會編譯應用的調(diào)試版本,不過這僅供在開發(fā)期間使用。
要更改 Android Studio 使用的構(gòu)建變體,請在菜單欄中依次選擇 Build > Select Build Variant。
對于不含原生/C++ 代碼的項目
Build Variants 面板有兩列:Module 和 Active Build Variant。模塊的 Active Build Variant 值決定了 IDE 部署到連接的設備并顯示在編輯器中的構(gòu)建變體。
要在變體之間切換,請點擊模塊的 Active Build Variant 單元格,然后從列表字段中選擇所需的變體。
對于含有原生/C++ 代碼的項目
Build Variants 面板有三列:Module、Active Build Variant 和 Active ABI。模塊的 Active Build Variant 值決定了 IDE 部署到設備并顯示在編輯器中的構(gòu)建變體。對于原生模塊,Active ABI 值決定了編輯器使用的 ABI,但不會影響部署的內(nèi)容。
要更改構(gòu)建變體或 ABI,請點擊 Active Build Variant 或 Active ABI 列的單元格,然后從列表中選擇所需的變體或 ABI。在我們更改所選內(nèi)容后,IDE 會自動同步我們的項目。更改應用或庫模塊的任一列都會將更改應用于所有相關(guān)行。
1.4 構(gòu)建選項
Run 按鈕用于構(gòu)建應用并將其部署到設備。不過,要構(gòu)建應用并上傳發(fā)布到應用市場,我們需要使用 Build 菜單中的某個選項來編譯項目的部分或全部代碼。
Build 菜單中的各項構(gòu)建選項功能如下:
Make Module
編譯自上次編譯以來已修改的所選模塊中的所有源文件,以及所選模塊以遞歸方式依賴的所有模塊。編譯包括相關(guān)源文件和所有關(guān)聯(lián)的構(gòu)建任務。我們可以通過在 Project 窗口中選擇模塊名稱或模塊的某個文件來選擇要構(gòu)建的模塊。此命令不會生成 APK。
Make Project
生成所有模塊。
Clean Project
刪除所有中間/緩存的構(gòu)建文件。
Rebuild Project
針對所選編譯變體運行 Clean Project 并生成 APK。
Build Bundle(s)/APK(s) > Build APK(s)
為所選的變體構(gòu)建當前項目中所有模塊的 APK。構(gòu)建完成后,系統(tǒng)將顯示確認通知,提供指向 APK 文件的鏈接以及用于在 APK 分析器中對其進行分析的鏈接。
Build Bundle(s)/APK(s) > Build Bundle(s)
為所選的變體構(gòu)建當前項目中所有模塊的 Android App Bundle。構(gòu)建完成后,系統(tǒng)將顯示確認通知,提供指向 app bundle 的鏈接以及用于在 APK 分析器中對其進行分析的鏈接。
Generate Signed Bundle/APK
使用向?qū)Т蜷_一個對話框以設置新的簽名配置,并構(gòu)建已簽名的 app bundle 或 APK。我們需要先使用發(fā)布密鑰為我們的應用簽名,然后才能將其上傳到 Play 管理中心。
2. 監(jiān)控構(gòu)建流程
我們可以通過依次點擊 View > Tool Windows > Build(或點擊工具窗口欄中的 Build 圖標 ),查看有關(guān)構(gòu)建流程的詳細信息。該窗口顯示 Gradle 為構(gòu)建應用而執(zhí)行的任務,如下圖:
- Build 標簽頁:以樹狀顯示 Gradle 執(zhí)行的任務,其中每個節(jié)點表示一個構(gòu)建階段或一組任務依賴項。如果您收到構(gòu)建時錯誤或編譯時錯誤,可以檢查該樹并選擇一個元素來查看錯誤輸出;
-
Sync 標簽頁:顯示 Gradle 為與項目文件同步而執(zhí)行的任務。與 Build 標簽頁類似,如果您遇到同步錯誤,可以在樹中選擇元素來查找有關(guān)錯誤的更多信息;
-
Restart:通過為項目中的所有模塊生成中間構(gòu)建文件,執(zhí)行與依次選擇 Build > Make Project 相同的操作;
-
Toggle view:在以圖形樹形式顯示任務執(zhí)行情況與顯示 Gradle 中更詳細的文本輸出之間切換。
如果在構(gòu)建流程中出現(xiàn)錯誤,Gradle 可能會向我們推薦一些命令行選項來幫助我們解決問題,如 --stacktrace 或 --debug。要在構(gòu)建流程中使用命令行選項,請執(zhí)行以下操作:
-
打開 Settings 或 Preferences 對話框:
-
在 Windows 或 Linux 上,從菜單欄中依次選擇 File > Settings。
-
在 Mac OSX 上,從菜單欄中依次選擇 Android Studio > Preferences。
-
-
依次轉(zhuǎn)到 Build, Execution, Deployment > Compiler。
-
在 Command-line Options 旁邊的文本字段中,輸入您的命令行選項:
- 點擊 OK 保存,然后退出。
3. Apply Changes
在 Android Studio 3.5 及更高版本中,Apply Changes 可讓我們將代碼和資源更改推送到正在運行的應用,而無需重啟應用(在某些情況下,無需重啟當前 Activity)。有了這種靈活性,我們就可以控制在想部署和測試細微增量更改時應用的重啟范圍,同時保持設備的當前狀態(tài)。
3.1 使用要求
Apply Changes 操作僅在滿足以下條件時可用:
-
我們使用調(diào)試編譯變體來編譯應用的 APK。
-
我們將應用部署到搭載 Android 8.0(API 級別 26)或更高版本的目標設備或模擬器上。
3.2 使用 Apply Changes
如果要將更改部署到兼容設備,請使用以下選項:
Apply Changes and Restart Activity 圖標
嘗試通過重啟 Activity 但不重啟應用來應用資源和代碼更改。通常,如果我們修改了方法正文中的代碼或修改了現(xiàn)有資源,則可以使用此選項。
Apply Code Changes 圖標
嘗試僅應用代碼更改而不重啟任何內(nèi)容。通常,如果我們修改了方法正文中的代碼,但沒有修改任何資源,則可以使用此選項。
Run 圖標
部署所有更改并重啟應用。如果使用任一 Apply Changes 選項都無法應用我們所做的更改,請使用此選項。
3.3 啟用 Run 回退機制
在我們點擊 Apply Changes and Restart Activity 或 Apply Code Changes 后,Android Studio 會構(gòu)建新 APK 并確定是否可以應用更改。如果無法應用更改并且會導致 Apply Changes 失敗,則 Android Studio 會改為提示我們重新運行您的應用。不過,如果我們不想在每次發(fā)生這種情況時都收到提示,則可以將 Android Studio 配置為在無法應用更改時自動重新運行您的應用。
要啟用此行為,請按以下步驟操作:
-
打開 Settings 或 Preferences 對話框:
-
在 Windows 或 Linux 上,從菜單欄中依次選擇 File > Settings。
-
在 macOS 上,從菜單欄中依次選擇 Android Studio > Preferences。
-
-
依次轉(zhuǎn)到 Build, Execution, Deployment > Deployment。
-
選中復選框以針對任一 Apply Changes 操作啟用自動 Run fallback。
-
點擊 OK。
4. 小結(jié)
本節(jié)課程我們主要學習了如何編譯和運行應用。本節(jié)課程的重點如下:
- 掌握構(gòu)建變體和處理構(gòu)建錯誤;
- 掌握Apply Changes方面的知識。