為 Android 匯出

Exporting for Android has fewer requirements than compiling Godot for Android. The following steps detail what is needed to set up the Android SDK and the engine.

下載 Android SDK

下載與安裝 Android SDK。

  • You can install it using Android Studio version 4.1 or later.

    • 依照這裡的 指示 執行一次 Android Studio 來完成設定 SDK。

    • 請確保有一併安裝 必要的套件

      • Android SDK Platform-Tools version 30.0.5 or later

      • Android SDK Build-Tools version 30.0.3

      • Android SDK Platform 29

      • Android SDK Command-line Tools (latest)

      • CMake version 3.10.2.4988404

      • NDK version 21.4.7075529

  • 可以通過 命令行工具 來安裝。

    • 安裝好命令行工具後,執行 sdkmanager 指令來完成安裝程序:

sdkmanager --sdk_root=<android_sdk_path> "platform-tools" "build-tools;30.0.3" "platforms;android-29" "cmdline-tools;latest" "cmake;3.10.2.4988404" "ndk;21.4.7075529"

備註

If you are using Linux, do not use an Android SDK provided by your distribution's repositories as it will often be outdated.

Install OpenJDK 8

Download and install OpenJDK 8.

建立 debug.keystore

必須有除錯用金鑰儲存區,才可在 Android 上將非發行版本的 APK 安裝到裝置上。若曾使用過 SDK 且曾建置過專案,則 ant 或 eclipse 可能有自動產生過金鑰儲存區 (在 Linux 與 macOS 上,可以在 ~/.android 目錄中找到,Windows 上則在 C:\Users\<使用者>\.android\ 目錄中)。

若找不到金鑰儲存區或需要產生,則可以使用 JDK 中的 keytool 指令:

keytool -keyalg RSA -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999 -deststoretype pkcs12

這個指令會在目前的目錄中建立 debug.keystore 檔案。接著應將該檔案移動到好記的位置,如 %USERPROFILE%\.android\ 等,因為接下來的步驟會需要用到這個路徑。更多關於 keystore 使用的說明,請參考 這篇 Q&A 文章 (英文)

在 Godot 中設定

開啟 [編輯器設定] 畫面。該畫面中包含了用於該電腦上目前使用者帳號的設定 (編輯器設定獨立於專案)。

../../../_images/editorsettings.png

下拉至 Android 設定的部分:

../../../_images/androidsdk.png

在此畫面中,需要設定 2 個路徑:

  • Android Sdk Path 應設為 Android SDK 安裝的位置。—— 如 Windows 上可能是 %LOCALAPPDATA%\Android\Sdk\ ,macOS 上可能是 /Users/$USER/Library/Android/sdk/

  • 除錯用的 .keystore 檔案 - 可以剛才建立並放置 debug.keystore 檔案的資料夾中找到。

設定好了之後,就準備好能匯出到 Android 了!

備註

If you get an error saying "Could not install to device.", make sure you do not have an application with the same Android package name already installed on the device (but signed with a different key).

If you have an application with the same Android package name but a different signing key already installed on the device, you must remove the application in question from the Android device before exporting to Android again.

提供起動器圖示

啟動器圖示是給 Android 起動器應用程式將程式顯示給使用者看的圖示。Godot 中只需要提供高解析度圖示 (用於 xxxhdpi 密度螢幕),就會自動產生各個低解析度的版本。

Godot 中需要的圖示有兩種類型:

  • 主圖示: 即「經典」的圖示。會用於最高至 Android 8 (Orea) 的 Android 版本。必須至少有 192×192 px。

  • 調適性圖示: 自 Android 8 版 (不含) 開始開始引入了 調適性圖示 (英文) 。應用程式需要包含分開的背景與前景圖示來提供原生外觀。使用者的起動器會控制圖示的動畫與遮罩。必須至少有 432×432 px。

也參考

在設計調適性圖示時,遵守一些規則也很重要。Google Design 發表了一篇很棒的文章 (英文) ,有助於瞭解這些規則以及調適性圖示的一些限制。

警示

調適性圖示設計規則中最重要的一點是要將圖示的關鍵元素放在安全區域內,即為正中間有直徑 66dp 的圓圈 (xxxhdpi 下為 264 像素),才可避免圖示被起動器給剪裁。

若不提供需要的圖示,則 Godot 會自動在遞補鏈中以下一個項目來代替,當遞補鏈中目前項目失敗時,則往下遞補:

  • Main Icon: 提供的主圖示 -> 專案圖示 -> 預設 Godot 主圖示。

  • Adaptive Icon Foregrond: 提供的前景圖示 -> 提供的主圖示 -> 專案圖示 -> 預設 Godot 前景圖示。

  • Adaptive Icon Background: 提供的背景圖示 -> 預設 Godot 背景圖示。

It's highly recommended to provide all the requested icons with their specified resolutions. This way, your application will look great on all Android devices and versions.

為 Google Play Store 匯出

要將 APK 上傳至 Google Play Store 需要以非除錯用金鑰儲存區來簽署 APK。該檔案可如此產生:

keytool -v -genkey -keystore mygame.keystore -alias mygame -keyalg RSA -validity 10000

該金鑰儲存區會用來驗證開發人員身份,請記住密碼並保存在安全處!請在 Google 的 Android 開發人員指南中瞭解有關 簽署 APK 的詳情。

接著在 Android 匯出預設中填寫下列表格:

../../../_images/editor-export-presets-android.png
  • Release: 輸入剛才產生的金鑰儲存區檔案位置。

  • Release User: 以金鑰別名取代。

  • Release Password: 金鑰密碼,請注意,目前金鑰儲存區密碼與金鑰的密碼必須相同。

現在 export_presets.cfg 檔案會包含機敏資訊。 若使用版本控制系統,請確保將該檔案從公開儲存庫中移除,並將其加入 .gitignore 檔案或同等檔案中。

Don't forget to uncheck the Export With Debug checkbox while exporting.

../../../_images/export-with-debug-button.png

最佳化 APK 大小

預設情況下,APK 會同時包含 ARMv7 與 ARMv8 架構的原生函式庫。這樣一來會大幅增加檔案大小。要建立比較小的 APK,請於專案 Android 匯出預設中取消勾選 Armeabi-v 7aArm 64 -v 8a。這樣產生的 APK 只會包含單一架構的函式庫。請注意,為 ARMv7 所製作的應用程式一樣可以在 ARMv8 裝置上執行,但反過來則不行。

自 2019 年 8 月起,Google Play 中所有的應用程式都必須支援 64 位元。這表示無法上傳裡面 只有 ARMv7 函式庫的 APK。為此,可以通過 多 APK 支援 來上傳多個 APK 到 Google Play 上。每個 APK 都應至為單一重架構建置。為 ARMv7 與 ARMv8 建立 APK 應該可涵蓋當今大多數的裝置。

還可以進一步通過編譯只有所需功能的 Android 匯出樣板來進一步最佳化大小。更多資訊請參考 最佳化建置檔案大小