U
22 / 22 · 10 分钟
常见问题

从项目到真机上的 APK

简短回答

怎么构建 APK 并装到 Android 手机上?

安装 Android Build Support 模块,把平台切换到 Android,设置一个属于你自己的包名,然后构建。挡住初次构建的多是 Unity 找不到的 SDK 或 JDK 路径;之后才咬人的是用默认的 com.DefaultCompany 包名发布——上了 Google Play 就永远改不了。

把 APK 装进手机是四步,外加两个坑。光走步骤第一次也只要二十分钟;把它拖成一整个下午的,正是这两个坑。

1 — 安装 Android Build Support

  1. 1

    打开 Unity Hub,进入 Installs,点你的 Unity 版本上的齿轮菜单来添加模块。

  2. 2

    勾选 Android Build Support,以及它下面缩进的两项:SDK & NDK Tools 和 OpenJDK。三个都要勾,不是只勾第一个。

  3. 3

    这会下载几个 GB。等它彻底下载完再打开项目,不然平台列表里 Android 还是会显示为不可用。

2 — 切换平台

切换平台会让 Unity 把项目里所有贴图重新导入成 Android 能读的格式。小项目只要一分钟;大项目的话,最好在你去煮咖啡之前就点下去。这事每个平台只发生一次。

  1. 1

    打开 File▸Build Profiles(Unity 6 之前叫 Build Settings),选中 Android,然后点 Switch Platform。

  2. 2

    把你想放进构建里的每个 scene 都打开,然后按 Add Open Scenes。没列在这个清单里的 scene,在构建出来的游戏里就不存在。

  3. 3

    index 0 的 scene 就是游戏启动时进入的那个。它不在最上面的话,把它拖到顶部。

3 — 真正要紧的 Player Settings

  • Package Name —— 一定要改。默认的 com.DefaultCompany.ProjectName 用来测试安装没问题,但 package name 是你的应用在 Google Play 上永久的身份:应用一旦发布就再也改不了了。

  • Minimum API Level —— 设成 24 或更高,基本就覆盖了现在还在用的所有手机,还能省掉一大堆兼容性工作。

  • Scripting Backend 选 IL2CPP,Target Architectures 勾 ARM64 —— Play Store 要求 64 位已经好几年了。只用 Mono 和 ARMv7,上传时会被直接拒掉。

4 — 构建并安装

  1. 1

    在手机上,进 Settings > About 连点 Build number 七次开启 Developer options,然后打开 USB debugging。

  2. 2

    把手机插上,并在手机弹出的 Allow USB debugging 提示里点允许。不点允许,Unity 就不会把你的设备列出来。

  3. 3

    点 Build And Run。.apk 保存到跟 Assets 并列的 Builds 文件夹里,绝对不要放进 Assets 里面 —— 那样 Unity 会把你的构建产物当成 asset 去导入。

APK 还是 AAB?

  • 测试用 APK:就一个文件,发给谁都能直接装上。

  • 上传 Play Store 用 AAB,因为它强制要求。Google 会拿 AAB 自己生成各机型的 APK,所以 AAB 你没办法自己安装。

  • 在 Build Profiles 里勾上 Build App Bundle 就能在两者之间切换。其他设置都不变。

装得上,但一打开就闪退

The one command that tells you why
# Only your app's messages, from the moment you run it.
adb logcat -c && adb logcat Unity:V CRASH:V AndroidRuntime:E '*:S'

做出这个的那一课

构建、安装并在真机上调试

这篇指南单独成篇,是一份可以直接照着做的配方。在课程里,同样的东西会作为贯穿全部五个章的那个项目的一部分来搭建 —— 导出到手机,第 05 课。