QUICK_TEST_GUIDE.md 5.4 KB

快速测试指南(无需 Device Owner)

🎯 目的

在不设置 Device Owner 的情况下,快速验证 Kiosk 功能是否正确集成。

✅ 可测试的功能(无需 Device Owner)

1. 屏幕常亮

  • ✅ 应用运行时屏幕不会自动熄灭
  • ✅ 使用 FLAG_KEEP_SCREEN_ON 实现,无需特殊权限

2. 全屏沉浸式

  • ✅ 状态栏和导航栏自动隐藏
  • ✅ 用户下拉时会自动重新隐藏

3. 自动初始化

  • ✅ 应用启动时自动调用 KioskHelper.disableLockScreen()
  • ✅ 应用启动时自动调用 KioskManager.attach()
  • ✅ 无需在 JS 中手动调用

4. 日志验证

查看日志确认功能是否执行:

adb logcat | grep -E "MyApplication|KioskHelper|KioskManager"

期望看到的日志:

D MyApplication: Application 初始化
D MyApplication: ✅ 绑定 Kiosk 到: PandoraEntry
D KioskHelper: ✅ 屏幕保持常亮
W KioskHelper: ⚠️ 不是 Device Owner,无法禁用锁屏
D KioskManager: ✅ LockTask 启用(一次)

⚠️ 需要 Device Owner 的功能

以下功能必须设置为 Device Owner 才能生效:

1. 完全禁用锁屏

dpm.setKeyguardDisabled(adminComponent, true);  // ❌ 需要 Device Owner

2. LockTask 模式(防止退出应用)

dpm.setLockTaskPackages(admin, new String[]{packageName});  // ❌ 需要 Device Owner
activity.startLockTask();  // ❌ 需要 Device Owner

3. 防止用户按 Home、Back 键退出

  • 只有在 LockTask 模式下才能完全阻止

🧪 快速测试步骤

步骤 1:编译并安装

./gradlew assembleDebug
adb install app/build/outputs/apk/debug/app-debug.apk

步骤 2:启动应用并观察日志

# 终端 1:查看日志
adb logcat -c && adb logcat | grep -E "MyApplication|KioskHelper|KioskManager"

# 终端 2:启动应用
adb shell am start -n com.YuyeTech.HeartRate/io.dcloud.PandoraEntry

步骤 3:验证功能

✅ 验证屏幕常亮

  1. 启动应用
  2. 等待 1 分钟
  3. 屏幕应该保持亮屏状态

✅ 验证全屏沉浸式

  1. 启动应用
  2. 观察状态栏和导航栏是否隐藏
  3. 下拉状态栏后观察是否自动重新隐藏

✅ 验证自动初始化(重点)

查看日志中是否包含:

D MyApplication: ✅ 绑定 Kiosk 到: PandoraEntry

如果看到这条日志,说明自动初始化成功,无需在 JS 中调用

🔍 故障排查

问题 1:看不到日志

# 清空日志缓存
adb logcat -c

# 使用更详细的过滤
adb logcat -v time | grep -i kiosk

问题 2:应用闪退

# 查看崩溃日志
adb logcat -v time | grep -E "AndroidRuntime|FATAL"

常见原因:

  • BuildConfig 未正确导入
  • 缺少依赖库

解决方法:

// 在 MyApplication.java 中添加 import
import com.YuyeTech.HeartRate.BuildConfig;

问题 3:Application 未替换

检查 AndroidManifest.xml 中的 <application> 标签:

<application
    android:name="com.YuyeTech.HeartRate.MyApplication"  <!-- ✅ 应该是这个 -->
    ...>

如果是 io.dcloud.application.DCloudApplication,说明未正确修改。

📊 预期结果对比

功能 无 Device Owner 有 Device Owner
自动初始化 ✅ 正常 ✅ 正常
屏幕常亮 ✅ 正常 ✅ 正常
全屏沉浸 ✅ 正常 ✅ 正常
禁用锁屏 ⚠️ 无效 ✅ 正常
防止退出 ⚠️ 无效 ✅ 正常
Home/Back 拦截 ⚠️ 部分 ✅ 完全

🎯 核心测试点

✅ 验证"无需 JS 调用"

测试方法

  1. 不修改任何 UniApp 的 JS 代码
  2. 直接编译并安装 APK
  3. 启动应用
  4. 查看日志是否有 ✅ 绑定 Kiosk 到: PandoraEntry

判断标准

  • ✅ 如果看到日志,说明成功集成
  • ❌ 如果没有日志,检查 AndroidManifest.xml 中的 Application 配置

📝 调试技巧

技巧 1:实时日志监控

# 彩色高亮日志(Linux/Mac)
adb logcat | grep --color=always -E "MyApplication|KioskHelper|KioskManager|ERROR"

# PowerShell(Windows)
adb logcat | Select-String -Pattern "MyApplication|KioskHelper|KioskManager|ERROR"

技巧 2:抓取完整初始化日志

# 清空日志 → 启动应用 → 等待 3 秒 → 保存日志
adb logcat -c && adb shell am start -n com.YuyeTech.HeartRate/io.dcloud.PandoraEntry && sleep 3 && adb logcat -d > app_start.log

技巧 3:检查 Activity 生命周期

adb logcat | grep -E "ActivityManager|MyApplication"

✨ 成功标志

当你看到以下完整的日志序列时,说明集成成功:

01-22 16:30:00.123 D MyApplication: Application 初始化
01-22 16:30:00.234 D MyApplication: ✅ 绑定 Kiosk 到: PandoraEntry
01-22 16:30:00.345 D KioskHelper: ✅ 屏幕保持常亮
01-22 16:30:00.456 W KioskHelper: ⚠️ 不是 Device Owner,无法禁用锁屏
01-22 16:30:00.567 D KioskManager: ❌ 非 DeviceOwner,Kiosk 无效(只会提示一次)

或者(如果是 Device Owner):

01-22 16:30:00.123 D MyApplication: Application 初始化
01-22 16:30:00.234 D MyApplication: ✅ 绑定 Kiosk 到: PandoraEntry
01-22 16:30:00.345 D KioskHelper: ✅ 锁屏已禁用
01-22 16:30:00.456 D KioskHelper: ✅ 屏幕保持常亮
01-22 16:30:00.567 D KioskManager: ✅ LockTask 启用(一次)

下一步:如果快速测试通过,参考 KIOSK_SETUP_GUIDE.md 设置 Device Owner 以启用完整功能。