在新版本和老版本系统分别测试,初步判断卡死问题是否和系统变更有关。本案例中,5.0系统上应用启动正常,5.1(API18)上问题稳定复现,应用卡在启动页,未弹出隐私弹框。
06-10 19:41:43.783 663 663 I C02C11/appspawn/APPSPAWN: [appspawn_service.c:1058]Child process com.hx.example success pid 7994 appId: 525 result: 0 06-10 19:41:43.783 663 663 I C02C11/appspawn/APPSPAWN: [appspawn_appmgr.c:172]Add com.hx.example, pid=7994 success 06-10 19:41:43.783 7994 7994 I C02D0B/com.hx.example/HICHECKER: hichecker param is empty. 06-10 19:41:43.784 663 663 I C02C11/appspawn/APPSPAWN: [appspawn_service.c:293]SendMessageComplete connectionId: 1 result 0 app com.hx.example pid 7994 06-10 19:41:43.784 7994 7994 I C01317/com.hx.example/AppKit: [main_thread.cpp:2781]App main thread create, pid:7994
进程创建成功后,下一步需要确认AMS生命周期是否正常。
06-10 19:41:43.920 7994 7994 I C01332/com.hx.example/UIAbility: [js_ui_ability.cpp:1568]JsUIAbility call js, name: onCreate 06-10 19:41:43.926 7994 7994 I C01332/com.hx.example/UIAbility: [js_ui_ability.cpp:1613]end, name: onCreate, time: 5 06-10 19:41:43.926 7994 7994 E C01332/com.hx.example/UIAbility: [ui_ability_impl.cpp:301]hasSaveData_: false 06-10 19:41:43.926 7994 7994 W C01332/com.hx.example/UIAbility: [js_ui_ability.cpp:922]formatRegex: [] 06-10 19:41:43.932 7994 7994 E C01332/com.hx.example/UIAbility: [ui_ability.cpp:323]appRecovery not recovery restart 06-10 19:41:43.932 7994 7994 I C01332/com.hx.example/UIAbility: [js_ui_ability.cpp:1568]JsUIAbility call js, name: onWindowStageCreate
至此,系统侧启动流程已完成,下一步进入应用业务流程,本案例中应用下一步的业务流程为隐私弹框。
async aboutToAppear(): Promise<void> {
const startupTask = await DI_CONTAINER.getAsync(AppStartupTask)
// 此处会一直阻塞,直到弹窗同意
await startupTask.run({
readPrivacyHandler: (callback) => {
this.agreeCallback = () => callback(true)
this.showPrivacyDialog(this.agreeCallback)
},
})
} 从代码上看StartupTask任务执行完成回调后才会执行隐私弹窗流程,StartupTask负责一系列冷启动任务的初始化动作,初步分析是StartupTask中的某项任务执行异常导致未执行隐私弹窗代码。对StartupTask中的任务排查分析,确认是其中的wasm初始化任务失败,导致StartupTask未回调,中断了后续隐私弹窗弹出流程。
此处关键思路是找到业务卡住的代码,梳理分析出业务执行的前置条件,重点排查引起前置条件不满足的异常因素。