# 第 30 课：打包准备与实机确认清单

> 使用方法：第一次生成安装包时，从上到下逐项确认；以后重新生成时，重点确认“开始构建前”和“PICO 实机功能确认”两部分。  
> 本清单适用于使用 Unity 2022.3 LTS、Android 和 OpenXR 开发的 PICO 4 Ultra 项目。

## 一、开始构建前

- [ ] 已退出 Unity 运行状态，并保存当前场景和项目。
- [ ] 控制台没有红色编译错误；如果有，先处理最上方第一条关键错误。
- [ ] `File > Build Settings` 中已经选中 Android，右侧能够看到 Android 构建选项。
- [ ] `Scenes In Build` 包含启动场景，MuseumVR 的 `MainScene` 已启用并位于索引 0。
- [ ] 输出目录有足够磁盘空间，并使用简短、固定的目录，例如 `Builds/PICO`。
- [ ] APK 文件名包含应用名称和版本，例如 `MuseumVR-PICO-0.1.apk`，便于区分不同成果。

## 二、首次构建或环境变化后确认

### Unity 的 Android 构建环境

- [ ] Unity Hub 已为当前编辑器安装 Android Build Support。
- [ ] 同时安装了 Android SDK、NDK 和 OpenJDK。
- [ ] `Edit > Preferences > External Tools` 中 JDK、SDK、NDK 和 Gradle 路径均可用。
- [ ] 优先使用当前 Unity 版本随 Hub 安装的工具，避免混用不兼容的版本。
- [ ] 电脑、Unity 和 PICO 4 Ultra 的日期与时间基本一致，避免签名或连接异常。

### Build Settings

- [ ] 构建平台为 Android；如果刚切换平台，等待资源重新导入完成。
- [ ] `Texture Compression` 选择 ASTC；切换后等待纹理重新压缩完成。
- [ ] 本地安装使用 APK，因此关闭 `Build App Bundle (Google Play)`。
- [ ] 成果确认时关闭 `Development Build`；只有需要查看调试信息和分析性能时才开启。
- [ ] 使用 `Build And Run` 时，`Run Device` 已显示并选中 PICO 4 Ultra。

### 应用运行参数（Player Settings）

- [ ] `Company Name`、`Product Name` 和 `Version` 已填写，并符合本次发布目的。
- [ ] Android 包名唯一且稳定，例如 `com.example.museumvr`；正式发布后不要随意更换。
- [ ] 本课项目的 `Minimum API Level` 使用 Android 10（API 29）。
- [ ] `Target API Level` 在本地安装时可以使用 Automatic；准备上架时按 PICO 商店当期要求确认。
- [ ] `Scripting Backend` 选择 IL2CPP。
- [ ] `Target Architectures` 勾选 ARM64。
- [ ] 图形接口与设备兼容；MuseumVR 当前使用 Vulkan 和 OpenGL ES 3，调整后需要在 PICO 4 Ultra 中确认画面效果。
- [ ] 项目主要使用新版输入系统。选择 `Input System Package (New)` 后，同意 Unity 重启；如果保留 `Both`，确认项目确实需要兼容旧输入，并留意构建提示。
- [ ] 课堂练习可以使用调试签名；准备发布时应使用自己的密钥库，并妥善保存密钥和密码。

## 三、确认 PICO OpenXR 与输入功能

- [ ] Android 页面的 XR 提供者为 OpenXR。
- [ ] 已启用 `PICO OpenXR Features` 和 `PICO Support`。
- [ ] 控制器配置与 PICO 4 Ultra 一致。
- [ ] 项目需要手部交互，因此启用 `Hand Interaction Profile` 和 `Hand Tracking Subsystem`。
- [ ] PICO 手部设置允许控制器与手部共同使用。
- [ ] `Project Validation` 中没有未处理的红色问题；使用自动修复后，再次确认被调整的设置。
- [ ] 只在本地安装时可以暂不填写 PICO App ID；需要使用平台服务或准备上架前，应填写有效的 App ID。

## 四、关闭只用于编辑器的测试功能

- [ ] 场景中没有手动放入会随应用进入设备的 XR 模拟器对象。
- [ ] 自动模拟器只在 Unity 编辑器中创建，不会进入 Android 应用。
- [ ] PICO Live Preview 没有作为 Android 运行加载器启用。
- [ ] 停止串流和预览后，再连接用于安装应用的 USB 设备，避免连接状态互相干扰。

## 五、生成 APK

- [ ] 只需要生成安装包时选择 `Build`。
- [ ] 希望生成、安装并自动启动时选择 `Build And Run`。
- [ ] 选择 APK 保存位置后耐心等待，不在脚本编译、资源导入或平台切换期间重复点击构建按钮。
- [ ] 构建完成后确认 APK 确实存在、文件大小不为 0，并记录应用版本和生成日期。
- [ ] 如果构建失败，从控制台最上方的第一条关键错误开始处理，不要只看最后一条连带错误。

## 六、安装到 PICO 4 Ultra

- [ ] PICO 4 Ultra 已开启开发者模式，并在 USB 连接时允许调试。
- [ ] 运行 `adb devices -l` 后，目标设备状态为 `device`，不是 `unauthorized` 或 `offline`。
- [ ] 多台设备同时连接时，使用 `adb -s 设备序列号 ...` 指定目标设备。
- [ ] 安装或更新已有应用可以使用：

```powershell
adb install -r "完整的APK路径"
```

- [ ] 终端返回 `Success`。
- [ ] 如果出现签名不一致，先判断是否需要保留旧应用数据；卸载旧应用会删除它在设备中的本地数据。
- [ ] 在 PICO 4 Ultra 的未知来源应用列表中找到正确的应用名称和版本，然后启动应用。

## 七、PICO 实机功能确认

- [ ] 应用能够通过启动画面并进入 `MainScene`，没有黑屏或立即退出。
- [ ] 头部位置和转动跟踪正常，视角不会冻结。
- [ ] 左右控制器的按键、射线、抓取和震动正常。
- [ ] 开启手部跟踪后能够识别双手，并能完成课程中的手部交互。
- [ ] 连续移动、转身、瞬移和碰撞限制正常，不会穿墙或卡住。
- [ ] 系统菜单可以打开、拖动和切换页面。
- [ ] 背景音乐、作品解说、视频和说明牌能够正常使用。
- [ ] 画面风格切换、画面调节和重置设置能够正常使用。
- [ ] 持续体验后画面仍然流畅，没有明显的持续卡顿。
- [ ] 完全退出应用并重新打开后，仍能正常进入主场景。
- [ ] 记录 PICO 4 Ultra 系统版本、APK 文件名和遇到的问题，方便下次构建时比较结果。

## 八、遇到问题时记录这些信息

- [ ] Unity 编辑器完整版本。
- [ ] PICO 4 Ultra 系统版本。
- [ ] APK 输出路径和文件名。
- [ ] 控制台第一条关键错误及其前后的完整内容。
- [ ] `Editor.log` 中对应构建过程的内容。
- [ ] `adb devices -l` 的结果。
- [ ] 如果应用启动后退出，保存 `adb logcat` 中应用退出前后的日志。
- [ ] 记录最近调整的包、应用运行参数、OpenXR 功能或插件。
