Android Framework 框架系列之 展讯手机重启

2023-11-08 01:50

本文主要是介绍Android Framework 框架系列之 展讯手机重启,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

640?wx_fmt=gif

640?wx_fmt=gif

极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能

640?wx_fmt=jpeg

本篇文章主要介绍展讯平台手机开发中的部分重启问题知识点,通过阅读本篇文章,您将收获以下内容:

一、 User 版本 默认开启 sysdump 方法

一、 User 版本 默认开启 sysdump 方法

首先,为什么要这么干?userdebug 版本无法复现,User 版本 可以复现,这样才有此默认开启sysdump的方案。

那么展讯平台user版本默认开启sysdump 方案

修改一下代码device\sprd\xxxx\common\rootdir\root\init.common.rcon post-fs-data 下添加:

// 设置 Ylog 默认开启开关 1 开启,0或不写 关闭
setprop persist.ylog.enabled 1
start ylog
// 设置sysdump 默认开关属性值 开启为true  关闭 falsesetprop debug.sysdump.enabled truesetprop persist.sys.eng.reset 0

在代码中添加后,可以进行一下操作查看是否成功

  1. 确认是否开启sysdump 开关*#*#83781#*#* (进入工程模式菜单)->DEBUG&LOG -> YLog-> Setting -> Sysdump Enable (开启sysdump)

  1. 确认是否开Ylog*#*#83781#*#* (进入工程模式菜单)->DEBUG&LOG -> YLog (开启ylog)

640?wx_fmt=png

Ylog关闭,sysdump 开关默认开启

二、插入SD卡 抓取Sysdump log

注意事项 一定要 插入4G及以上的SD卡,否则无法抓的重启的dump log

640?wx_fmt=jpeg

一定要 插入4G及以上的SD卡,否则无法抓的重启的dump log

三、 sysdump log 分析

插入SD 卡后,成功dump log信息如下:

640?wx_fmt=jpeg

dump log 成功的界面

dump log成功后,我们需要解析 sysdump log,解析过程中需要使用对应版本的vmlinux(out/target/product/sp9832e_1h10_go/obj/KERNEL/vmlinux) 以及 crash_arm(vendor/sprd/tools/crash/crash_arm) 解析脚本来解析dumpcore 文件。

640?wx_fmt=png

新建解析dump log目录

  1. 将 vmlinux 、crash_arm、 sysdump log 放置同一目录

cp out/target/product/sp9832e_1h10_go/obj/KERNEL/vmlinux reboot/

cp vendor/sprd/tools/crash/crash_arm reboot/

640?wx_fmt=jpeg

将 vmlinux crash_arm sysdump log 放置同一目录

  1. 将 sysdump 所有文件 追加到一个文件中

640?wx_fmt=jpeg

将sysdump 所有文件 追加到一个文件中

  1. 使用 crash_arm 脚本 联合 vmlinux 解析 sysdump log

640?wx_fmt=png

使用 crash_arm 脚本 联合 vmlinux 解析sysdump log

  1. 使用 Log 命令 将 Crash log追加到指定文件中

640?wx_fmt=png

使用 log 命令 读取log 到指定文件

  1. 查看log,分析重启的具体原因

640?wx_fmt=png

重启log举例

四、展讯平台抓取重启 串口log的方案

  1. 调高 Kernel log 等级为 7kernel/arch/arm/boot/dts/<sprd-xx-yourboard>.dts,将bootargs = ""里修改loglevel字段 1 修改为 7 loglevel=7, console=ttyS1,115200n8 。loglevel 即可。

640?wx_fmt=png

调高 **Kernel log** 等级为 **7**

  1. 将 logcat log 重定向到 串口

修改init.common.rc代码(device/sprd/sharkle/common/rootdir/root/init.common.rc)。logcat重定向** Service** .

+service logcat /system/bin/logcat -f /dev/kmsg *:w+ class main+ user root+ group log+ oneshoton bootchown system system /proc/wcn_gnss/startchown system system /proc/wcn_gnss/stop
  1. disabble SElinux

在 init.cpp (/system/core/init/init.cpp)中,让selinux_is_enforcing(void)函数直接返回false,同时注掉selinux_status_from_cmdline()函数。

#if 0static selinux_enforcing_status selinux_status_from_cmdline() {selinux_enforcing_status status = SELINUX_ENFORCING;import_kernel_cmdline(false, [&](const std::string& key, const std::string& value, bool in_qemu) {        if (key == "androidboot.selinux" && value == "permissive") {status = SELINUX_PERMISSIVE;}});    return status;
}#endifstatic bool selinux_is_enforcing(void){#if 0if (ALLOW_PERMISSIVE_SELINUX) {        return selinux_status_from_cmdline() == SELINUX_ENFORCING;}    return true;#elsereturn false;#endif}

五、展讯平台判断重启类型

  1. 在main.log 中查看

在 main.log 中搜索关键字 bootmode

640?wx_fmt=jpeg

搜索关键字 bootmode

2.在 phone.info 文件中查看

在 Ylog ->poweron->aplog 目录下的phone.info 文件中 搜索关键字 bootmode

640?wx_fmt=png

搜索关键字 bootmode

六、展讯平台关闭 sysdump 与watchdog关联

关闭sysdump 与watchdog 关联,防止开启sysdump 后watchdog被默认关闭,导致无法抓取复现到重启log的dump。kernel/drivers/soc/sprd/debug/sysdump/sysdump.c

            sysdump_status = 1;sprd_set_reboot_mode("dumpenable");set_sysdump_enable(1);//****************-           sysdump_enable_watchdog(0);//*************} else if (!strncmp(sysdump_buf, "off", 3)) {pr_emerg("sprd_sysdump_write: disable user version sysdump!!!\n");sysdump_status = 0;

640?wx_fmt=png

删除 sysdump_enable_watchdog

640?wx_fmt=jpeg

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

640?wx_fmt=jpeg

如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。

640?wx_fmt=other

既然都看到这里,领两个红包在走吧!以下两个红包每天都可以领取

1.支付宝搜索 522398497,或扫码支付宝红包海报。

支付宝扫一扫,每天领取大红包

2.微信红包,微信扫一扫即可领取红包

微信扫一扫,每天领取微信红包

小礼物走一走,来简书关注我

这篇关于Android Framework 框架系列之 展讯手机重启的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/367250

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超