# UniApp 开机自启动修复说明 ## 问题诊断 根据您提供的日志,发现了以下问题: ### 问题 1: 启动到黑屏页面 应用启动到了 `PandoraEntry`(黑屏启动页),而不是 `PandoraEntryActivity`(真正的应用主页面)。 **日志证据:** ``` mResumedActivity: ActivityRecord{5951a9b u0 com.YuyeTech.HeartRate/io.dcloud.PandoraEntry t23} ``` ## 已修复的问题 ### ✅ 修复 1: 更改启动 Activity **文件:** `app/src/main/java/com/YuyeTech/HeartRate/MyApplication.java` **修改内容:** ```java // 修改前: LaunchConfig.setLaunchActivity(PandoraEntry.class); // 修改后: LaunchConfig.setLaunchActivity(PandoraEntryActivity.class); ``` **原因:** - `PandoraEntry` 是 UniApp 的启动页(Splash Screen),通常显示为黑屏或启动动画 - `PandoraEntryActivity` 是 UniApp 的主页面,包含实际的应用内容 - 在开机自启动时,`PandoraEntry` 可能无法正确跳转到主页面,导致停留在黑屏状态 ## 下一步操作 ### 1. 重新编译打包应用 ```bash # 在 Android Studio 中 Build → Clean Project Build → Rebuild Project Build → Build Bundle(s) / APK(s) → Build APK(s) ``` 或使用命令行: ```bash cd E:\TPlat\HeartRateProject\bBeng-HeartRate-4.66-pad gradlew clean gradlew assembleRelease ``` ### 2. 安装新版本到设备 ```bash adb install -r app/build/outputs/apk/app_bbeng/release/app-app_bbeng-release.apk ``` ### 3. 测试开机自启动 **方法 1: 模拟开机广播** ```bash # 运行测试脚本 测试开机自启动.bat ``` **方法 2: 实际重启设备** ```bash # 在一个终端运行监控脚本 监控重启过程.bat # 在另一个终端重启设备 adb reboot ``` ### 4. 验证结果 重启后,应该看到: - ✅ 应用自动启动 - ✅ 显示 `PandoraEntryActivity`(应用主页面) - ✅ 不再停留在黑屏 检查命令: ```bash adb shell dumpsys activity activities | findstr "mResumedActivity" ``` 期望输出: ``` mResumedActivity: ActivityRecord{...com.YuyeTech.HeartRate/io.dcloud.PandoraEntryActivity...} ``` ## 其他注意事项 ### BuildConfig 警告(可忽略) 日志中有这个警告: ``` W System.err: java.lang.ClassNotFoundException: com.YuyeTech.HeartRate.BuildConfig ``` 这是因为代码中尝试访问 `BuildConfig.DEBUG`,但该类未找到。这不影响核心功能,但建议修改: **文件:** `app/src/main/java/com/YuyeTech/HeartRate/MyApplication.java` **修改:** ```java // 注释掉这一行(第 40 行) //KioskManager.setDebug(BuildConfig.DEBUG); // 或者直接写死: KioskManager.setDebug(false); // 发布版本设为 false ``` ### 设备权限配置 即使代码修复了,某些设备仍需要手动配置权限。运行权限配置脚本: ```bash 设置开机自启动权限.bat ``` 然后根据设备品牌,手动配置: - **小米/Redmi**: 安全中心 → 自启动管理 - **华为/荣耀**: 手机管家 → 应用启动管理 - **OPPO/Realme**: 设置 → 应用管理 → 自启动 - **VIVO/iQOO**: i管家 → 自启动管理 ## 技术细节 ### UniApp 的两个 Activity 1. **PandoraEntry** (启动页) - 作用: 显示启动动画,初始化 UniApp 框架 - 特点: 通常是黑屏或自定义启动图 - 生命周期: 短暂,会自动跳转到 PandoraEntryActivity 2. **PandoraEntryActivity** (主页面) - 作用: 承载 UniApp 的 WebView,显示实际应用内容 - 特点: 这是用户看到的真正应用界面 - 生命周期: 应用运行期间一直存在 ### 为什么开机自启动要直接启动 PandoraEntryActivity? 在正常启动(用户点击图标)时: ``` 用户点击图标 → PandoraEntry → 自动跳转 → PandoraEntryActivity ``` 在开机自启动时,如果启动 PandoraEntry: ``` 开机广播 → PandoraEntry → ❌ 跳转失败 → 停留在黑屏 ``` 原因可能是: - 系统资源未完全就绪 - UniApp 框架初始化时机问题 - Activity 跳转逻辑在后台启动时不生效 解决方案: ``` 开机广播 → 直接启动 PandoraEntryActivity → ✅ 正常显示应用 ``` ## 故障排查 如果修复后仍无法自启动,请检查: 1. **应用是否已重新编译打包?** ```bash # 查看 APK 修改时间 dir app\build\outputs\apk\app_bbeng\release\ ``` 2. **新版本是否已安装?** ```bash adb shell pm dump com.YuyeTech.HeartRate | findstr "versionName" ``` 3. **LaunchConfig 是否生效?** ```bash # 查看日志 adb logcat -s StartService:D | findstr "Launching" ``` 期望输出: ``` D StartService: Launching activity from LaunchConfig: io.dcloud.PandoraEntryActivity ``` 4. **设备是否有后台限制?** ```bash # 检查电池优化 adb shell dumpsys deviceidle whitelist | findstr "com.YuyeTech.HeartRate" ``` ## 联系支持 如果问题仍未解决,请提供以下信息: 1. 完整的 logcat 日志(从开机到启动完成) 2. 设备型号和 Android 版本 3. APK 的编译时间和版本号 --- **修复时间:** 2026-01-26 **修复版本:** v4.66-pad-fix1 **修复人员:** AI Assistant