为 Android 导出

参见

这个页面描述的是如何将 Godot 项目导出到 Android。如果你想要找的是从源码编译编辑器或导出模板二进制文件,请阅读 为 Android 平台编译

导出Android的要求比编译Android的Godot要少. 下面的步骤详细介绍了设置Android SDK和引擎所需的内容.

安装 OpenJDK 11

下载并安装 OpenJDK 11.

下载 Android SDK

下载并安装 Android SDK.

  • 你可以使用 Android Studio 4.1或更高版本 进行安装.

    • 运行一次,使用这些说明完成 SDK 设置。

    • 确保安装了必要的软件包

      • Android SDK Platform-Tools 30.0.5 或更高版本

      • Android SDK Build-Tools 版本 30.0.3

      • Android SDK Platform 31

      • Android SDK Command-line Tools(最新)

      • CMake 版本 3.10.2.4988404

      • NDK version r23c (23.2.8568313)

  • 你可以使用命令行工具安装。

    • 命令行工具安装完成后, 运行 sdkmanager 命令以完成安装过程:
  1. sdkmanager --sdk_root=<android_sdk_path> "platform-tools" "build-tools;30.0.3" "platforms;android-31" "cmdline-tools;latest" "cmake;3.10.2.4988404" "ndk;21.4.7075529"

备注

如果你使用的是 Linux,请勿使用发行版软件库提供的 Android SDK,因为它通常是过时的

创建 debug.keystore

Android 需要调试密钥库文件,才能安装到设备并分发非发布版本 APK。如果您以前使用过 SDK 并且已经构建了项目,那么 ant 或 eclipse 可能会为您生成一个(在 Linux 和 macOS 上,您可以在 ~/ .android 目录中找到它)。

如果找不到或需要生成一个,则可以使用 JDK 中的 keytool 命令:

  1. 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\,因为后续步骤会需要这个位置。keytool 用法的更多信息请查看这个 Q&A 文章

在 Godot 中进行设置

进入编辑器设置屏幕。此屏幕包含计算机中用户帐户的编辑器设置(与项目无关)。

../../_images/editorsettings.png

向下滚动到 Android 设置所在的部分:

../../_images/androidsdk.png

在该屏幕中,需要设置两个路径:

  • Android Sdk Path 设置为Android SDK的安装位置. 例如,Windows上的 %LOCALAPPDATA%\Android\Sdk\ , 或macOS上的 /Users/$USER/Library/Android/sdk/ .

  • 调试 .keystore 文件——可以在之前创建 debug.keystore 文件的文件夹中找到。

配置完成后, 导出到Android的一切都准备好了!

备注

如果你遇到 “Could not install to device” 的错误,请确认设备上未安装使用了相同Android包名(但使用不同密钥进行签名)的应用。

如果设备上安装了 Android 包名相同但签名密钥不同的应用,你必须先在该 Android 设备询问时选择删除该应用,但后再重新导出到 Android。

提供启动器图标

启动器图标是 Android 启动器应用把你的应用展示给用户时所用到的。Godot 只需要高分辨率图标(适用于 xxxhdpi 屏幕),会自动生成低分辨率的变体。

Godot 需要两种类型的图标:

  • 主图标:“经典”图标。这会在所有 Android 版本不高于 Android 8(Oreo)中使用。必须至少为 192×192 px。

  • 自适应图标:从 Android 8 开始(含)引入了自适应图标(Adaptive Icons)。应用为了有原生的样式需要包含分离的背景与前景图标。用户的启动程序会控制图标的动画和遮罩。必须至少为 432×432 px。

参见

重要的是设计自适应图标时必须遵守一些规则。Google Design 提供了一篇不错的文章来帮助理解这些规则以及自适应图标的一些技巧。

小心

自适应图标最重要的规则是,要把图标的重要元素放置在安全区内:那是一个居中的直径为 66dp(xxxhdpi 上为 264 像素)的圆,这样就可以避免被启动器裁剪。

如果你不提供必要的图标,Godot 会根据回退链来进行替换,当前行失败时会尝试下一行:

  • 主图标:提供的主图标 -> 项目图标 -> 默认 Godot 主图标。

  • 自适应图标前景:提供的前景图标 -> 提供的主图标 -> 项目图标 -> 默认 Godot 前景图标。

  • 自适应图标背景:提供的背景图标 -> 默认 Godot 背景图标。

强烈建议提供所有要求的图标的指定分辨率。这样一来,你的应用程序在所有的 Android 设备和版本上都会显得非常漂亮。

为 Google Play 商店导出

将 APK 上传到 Google 的 Play 商店,需要您使用非调试密钥库文件进行签名;这样的文件可以像这样生成:

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

这个密钥库和密钥用于验证您的开发人员身份,请记住密码并将其保存在安全的地方!使用 Google 的 Android 开发者指南来了解有关 APK 签名的更多信息。

现在,在您的 Android 导出预设中填写以下表格:

../../_images/editor-export-presets-android.png

  • 发布:输入您刚刚生成的密钥库文件的路径。

  • 发布用户:替换为密钥别名。

  • 发布密码:密钥密码。请注意,密钥库密码和密钥密码当前必须相同。

您的 export_presets.cfg 文件现在包含有敏感信息。如果使用版本控制系统,则应将其从公共仓库中删除,并将其添加到 .gitignore 文件或等效文件中。

在导出时,不要忘记取消勾选使用调试导出

../../_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导出模板来进一步优化大小. 有关更多信息, 请参见 为尺寸优化构建.

渲染故障排除

为了在移动设备上提升初始性能,Godot 在 Android 和 iOS 上默认会自动使用对低端设备友好的设置。

这样可能造成在桌面平台上运行项目时不会发生的渲染问题。详情请参阅 移动设备渲染限制