教學 5 - 行動裝置:Android¶
現在,我們將獲取我們的應用程序,並將其部署為 Android 應用程式。
將應用程式部署到 Android 的過程與部署為桌面應用程式的過程非常相似。 Briefcase 負責安裝 Android 依賴項,包括 Android SDK、Android 模擬器和 Java 編譯器。
創建一個 Android 應用程式並編譯它¶
首先,執行create命令。這將下載 Android 應用程式模板並向其中添加您的 Python 程式碼。
(beeware-venv) $ briefcase create android
[helloworld] Generating application template...
Using app template: https://github.com/beeware/briefcase-android-gradle-template.git, branch v0.3.18
...
[helloworld] Installing support package...
No support package required.
[helloworld] Installing application code...
Installing src/helloworld... done
[helloworld] Installing requirements...
Writing requirements file... done
[helloworld] Installing application resources...
...
[helloworld] Removing unneeded app content...
Removing unneeded app bundle content... done
[helloworld] Created build/helloworld/android/gradle
(beeware-venv) $ briefcase create android
[helloworld] Generating application template...
Using app template: https://github.com/beeware/briefcase-android-gradle-template.git, branch v0.3.18
...
[helloworld] Installing support package...
No support package required.
[helloworld] Installing application code...
Installing src/helloworld... done
[helloworld] Installing requirements...
Writing requirements file... done
[helloworld] Installing application resources...
...
[helloworld] Removing unneeded app content...
Removing unneeded app bundle content... done
[helloworld] Created build/helloworld/android/gradle
(beeware-venv) C:\...>briefcase create android
[helloworld] Generating application template...
Using app template: https://github.com/beeware/briefcase-android-gradle-template.git, branch v0.3.18
...
[helloworld] Installing support package...
No support package required.
[helloworld] Installing application code...
Installing src/helloworld... done
[helloworld] Installing requirements...
Writing requirements file... done
[helloworld] Installing application resources...
...
[helloworld] Removing unneeded app content...
Removing unneeded app bundle content... done
[helloworld] Created build\helloworld\android\gradle
當您第一次執行briefcase create android時,Briefcase 會下載 Java JDK 和 Android
SDK。文件大小和下載時間可能相當大;這可能需要一段時間(10 分鐘或更長時間,具體取決於您的 Internet 連線速度)。下載完成後,系統會提示您接受
Google 的 Android SDK 授權。
完成後,我們的專案中將有一個 build\helloworld\android\gradle 目錄,其中包含具有 Gradle 建置配置的 Android
專案。該專案將包含您的應用程式程式碼以及包含 Python 解釋器的支援套件。
然後我們可以使用 Briefcase 的 build 命令將其編譯成 Android APK 應用程式檔案。
(beeware-venv) $ briefcase build android
[helloworld] Updating app metadata...
Setting main module... done
[helloworld] Building Android APK...
Starting a Gradle Daemon
...
BUILD SUCCESSFUL in 1m 1s
28 actionable tasks: 17 executed, 11 up-to-date
Building... done
[helloworld] Built build/helloworld/android/gradle/app/build/outputs/apk/debug/app-debug.apk
(beeware-venv) $ briefcase build android
[helloworld] Updating app metadata...
Setting main module... done
[helloworld] Building Android APK...
Starting a Gradle Daemon
...
BUILD SUCCESSFUL in 1m 1s
28 actionable tasks: 17 executed, 11 up-to-date
Building... done
[helloworld] Built build/helloworld/android/gradle/app/build/outputs/apk/debug/app-debug.apk
(beeware-venv) C:\...>briefcase build android
[helloworld] Updating app metadata...
Setting main module... done
[helloworld] Building Android APK...
Starting a Gradle Daemon
...
BUILD SUCCESSFUL in 1m 1s
28 actionable tasks: 17 executed, 11 up-to-date
Building... done
[helloworld] Built build\helloworld\android\gradle\app\build\outputs\apk\debug\app-debug.apk
Gradle 可能看起來卡住了
在briefcase build android步驟中,Gradle(Android 平台建置工具)將列印CONFIGURING:
100%,似乎什麼也沒做。別擔心,它並沒有卡住 - 它正在下載更多 Android SDK 組件。根據您的網路連線速度,這可能還需要 10
分鐘(或更長)。這種滯後應該只在你第一次執行build時發生;這些工具會被緩存,並且在您的下一個建置中,將使用快取的版本。
在虛擬設備上運行應用程式¶
現在我們已經準備好運行我們的應用程式了。您可以使用 Briefcase 的run命令在 Android 裝置上執行該應用程式。讓我們從在 Android
模擬器上運行開始。
要運行您的應用程序,請運行briefcase run android。當您執行此操作時,系統會提示您提供可以執行該應用程式的裝置清單。最後一項始終是建立新
Android 模擬器的選項。
(beeware-venv) $ briefcase run android
Select device:
1) Create a new Android emulator
>
(beeware-venv) $ briefcase run android
Select device:
1) Create a new Android emulator
>
(beeware-venv) C:\...>briefcase run android
Select device:
1) Create a new Android emulator
>
我們現在可以選擇我們想要的設備。選擇建立新的 Android 模擬器選項,並接受裝置名稱的預設選擇 (beePhone)。
公事包run將自動啟動虛擬設備。當裝置啟動時,您將看到 Android 標誌:
Android虛擬裝置啟動](../../images/android/tutorial-5-booting.png)。
Android 虛擬裝置開機
裝置完成啟動後,Briefcase 將在裝置上安裝您的應用程式。您將短暫地看到一個啟動器畫面:
。
Android 虛擬裝置已完全啟動,在啟動畫面中
然後該應用程式將啟動。應用程式啟動時您將看到啟動畫面:
應用程式閃屏
模擬器沒有啟動!
Android 模擬器是一款複雜的軟體,依賴許多硬體和作業系統功能 - 這些功能在舊機器上可能無法使用或啟用。如果您在啟動 Android 模擬器時遇到任何困難,請參閱 Android 開發人員文件的 要求與建議 部分。
應用程式第一次啟動時,需要將自身解壓縮到裝置上。這可能需要幾秒鐘。解壓縮後,您將看到我們桌面應用程式的 Android 版本:
。
示範應用程式全面啟動
如果您無法看到應用程式啟動,您可能需要檢查執行briefcase run的終端並查找任何錯誤訊息。
當應用程式執行時,您會在控制台中看到大量的訊息流。這是來自模擬器的應用程式日誌串流。在終端機中輸入 Ctrl+C 將停止控制台中的串流資訊,但不會關閉模擬器。這樣您就可以測試新的變更,而無需重新啟動模擬器。
將來,如果您想在該裝置上運行而不使用選單,您可以將模擬器的名稱提供給Briefcase,使用briefcase run android -d
@beePhone直接在虛擬裝置上執行。
在物理設備上運行應用程式¶
如果您有實體 Android 手機或平板電腦,則可以使用 USB 電纜將其連接到計算機,然後使用公文包定位您的實體設備。
Android 要求您先準備好設備,然後才能用於開發。您需要對裝置上的選項進行 2 項變更:
- 啟用開發者選項
- 啟用USB調試
有關如何進行這些更改的詳細信息,請參閱 Android 開發人員文件。
完成這些步驟後,當您執行briefcase run android時,您的裝置應該會出現在可用裝置清單中。
(beeware-venv) $ briefcase run android
Select device:
1) Pixel 3a (94ZZY0LNE8)
2) @beePhone (emulator)
3) Create a new Android emulator
>
(beeware-venv) $ briefcase run android
Select device:
1) Pixel 3a (94ZZY0LNE8)
2) @beePhone (emulator)
3) Create a new Android emulator
>
(beeware-venv) C:\...>briefcase run android
Select device:
1) Pixel 3a (94ZZY0LNE8)
2) @beePhone (emulator)
3) Create a new Android emulator
>
在這裡,我們可以在部署清單中看到一個新的實體設備及其序號 - 在本例中為 Pixel
3a。將來,如果您想在該裝置上運行而不使用選單,您可以向Briefcase提供手機的序號(在本例中為briefcase run android -d
94ZZY0LNE8)。這將直接在設備上運行,無需提示。
我的裝置沒有出現!
如果您的裝置完全沒有出現在此清單中,則可能是您尚未啟用 USB 偵錯(或裝置未插入!)。
如果您的裝置出現,但被列為未知裝置(未授權開發),則表示開發者模式尚未正確啟用。重新執行
啟用開發人員選項的步驟,並重新執行`briefcase
run android``。
下一步¶
我們現在已經在手機上安裝了應用程式!還有其他地方可以部署BeeWare應用程式嗎?請參考 教學 6 來找出答案…