开机自启动修复说明.md 4.9 KB

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

修改内容:

// 修改前:
LaunchConfig.setLaunchActivity(PandoraEntry.class);

// 修改后:
LaunchConfig.setLaunchActivity(PandoraEntryActivity.class);

原因:

  • PandoraEntry 是 UniApp 的启动页(Splash Screen),通常显示为黑屏或启动动画
  • PandoraEntryActivity 是 UniApp 的主页面,包含实际的应用内容
  • 在开机自启动时,PandoraEntry 可能无法正确跳转到主页面,导致停留在黑屏状态

下一步操作

1. 重新编译打包应用

# 在 Android Studio 中
Build → Clean Project
Build → Rebuild Project
Build → Build Bundle(s) / APK(s) → Build APK(s)

或使用命令行:

cd E:\TPlat\HeartRateProject\bBeng-HeartRate-4.66-pad
gradlew clean
gradlew assembleRelease

2. 安装新版本到设备

adb install -r app/build/outputs/apk/app_bbeng/release/app-app_bbeng-release.apk

3. 测试开机自启动

方法 1: 模拟开机广播

# 运行测试脚本
测试开机自启动.bat

方法 2: 实际重启设备

# 在一个终端运行监控脚本
监控重启过程.bat

# 在另一个终端重启设备
adb reboot

4. 验证结果

重启后,应该看到:

  • ✅ 应用自动启动
  • ✅ 显示 PandoraEntryActivity(应用主页面)
  • ✅ 不再停留在黑屏

检查命令:

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

修改:

// 注释掉这一行(第 40 行)
//KioskManager.setDebug(BuildConfig.DEBUG);

// 或者直接写死:
KioskManager.setDebug(false);  // 发布版本设为 false

设备权限配置

即使代码修复了,某些设备仍需要手动配置权限。运行权限配置脚本:

设置开机自启动权限.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. 应用是否已重新编译打包?

    # 查看 APK 修改时间
    dir app\build\outputs\apk\app_bbeng\release\
    
  2. 新版本是否已安装?

    adb shell pm dump com.YuyeTech.HeartRate | findstr "versionName"
    
  3. LaunchConfig 是否生效?

    # 查看日志
    adb logcat -s StartService:D | findstr "Launching"
    

期望输出:

   D StartService: Launching activity from LaunchConfig: io.dcloud.PandoraEntryActivity
  1. 设备是否有后台限制?

    # 检查电池优化
    adb shell dumpsys deviceidle whitelist | findstr "com.YuyeTech.HeartRate"
    

联系支持

如果问题仍未解决,请提供以下信息:

  1. 完整的 logcat 日志(从开机到启动完成)
  2. 设备型号和 Android 版本
  3. APK 的编译时间和版本号

修复时间: 2026-01-26
修复版本: v4.66-pad-fix1
修复人员: AI Assistant