- 博客(253)
- 资源 (3)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Android 11 添加系统开机启动的Service方案
android11 添加了开机启动的service,涉及添加过程中遇到的编译,安全规则语法等多个问题
2022-03-16 16:21:00
8546
2
原创 Android Settings增加多击事件,增加开发者模式打开难度
对付这种需求本来有多种方案,比如通过PKMS里边加一些签名或者包名校验,防止三方apk后装,之前的博客里有记录过该方法,本篇只针对settings打开开发者模式的方式做复杂化处理,因为这个入口如果完全屏蔽对开发者可能不太友好。这个改动设置一个标志位,在30s内点击相关栏10次才会设置,30s后次数自动清零重新累计,在该标志位设定后,原有的开发者模式多击才会生效,这里只是讲一个方法,具体哪个栏目可以灵活控制。软件平台:Android11。硬件平台:QCS6125。
2024-07-29 10:48:59
194
原创 android11 屏蔽usb通过otg转接口外接鼠标设备
考虑到屏蔽的层面可以从两个层面去做,一个是驱动层面不识别,一个就是Android系统层面不识别加载,本篇只讲后者。需求:Android设备通过接usb转接线连接鼠标功能屏蔽。可以看到,底层驱动识别后,EventHub也识别了设备一些类型属性,软件平台:Android11。硬件平台:QCS6125。
2024-07-18 18:48:34
562
原创 android 使用系统工具bootchart统计开机时长
然后,打开png图片,即可查看开机总时长,及关注的进程启动的时间点、系统资源占用等信息。需求:统计系统优化前后的启动时长差异。软件平台:Android11。硬件平台:QCS6125。
2024-07-09 14:15:31
298
原创 android 排查sensor异常问题
可以检测到16个非动态(静态)传感器,如果是异常的情况,这些动态和静态传感器检测的值应该都是0个,即捕获不到任何传感器硬件。具体问题:设备起来后,无法横竖屏自动旋转,通过sensor api接口拿到的数据为null;印象中低版本是可以通过getevent获取sensor的值的,但是高版本这种方法不灵通了。软件平台:Android11。硬件平台:QCS6125。
2024-07-04 14:56:52
234
原创 android OTA升级之后,apk崩溃无法启动
也就是说,我们这个高低版本是fingerprint相同的情况,这个问题追述到jenkins编译,启动job时会初始化一个BUILD_NUMBER值,这个值正好跟Android的build系统的名称重复,这就导致Android build系统那一套拼接时间戳的值不会走,因为jenkins一启动就会定义该值,而我们jenkins服务器迁移过,这个值又会从1开始累计,导致前后版本都是16,从而导致fingerprint一致。问题背景:系统版本从低版本升级到高版本后,apk崩溃启动失败。硬件平台:QCS6125。
2024-06-13 14:21:23
635
原创 android 调试UI 按钮无法点击事件问题
首先,打开了Android自带的pointer_location报点轨迹,用电磁笔点击按钮,发现有点位,但是控件未见响应,基本排除硬件、驱动、及系统层面的问题。可以看到这个提交按钮的clickable属性为false,因此无法响应点击事件。实锤给客户端的同事去分析原因去了~~~~~软件平台:Android11。问题:UI控件无法点击。硬件平台:QCS6125。
2024-05-31 16:10:17
443
原创 高通平台Android11 添加新分区的方法
鉴于此,决定重新创建一个分区,将logcat后台记录的日志文件全部移到此分区,由于此分区不参与recovery的双清操作,因此可保证系统再次启动后,该分区依然有recovery模式之前的日志文件,用来排查导致进入recovery模式的原因。我们这个分区的size定义为100M大小,这个可根据自己需要做调整。依次添加的为:生命device节点类型、添加到file上下文、添加开机阶段fsck的操作权限(否则挂载不上)、添加init进程访问节点权限、添加shell访问挂载目录的权限、添加vold挂载节点的权限。
2024-04-22 17:39:56
1091
原创 android11 添加实时记录logcat日志保存到data目录
这就实现了开机自启动记录logcat,并且设置了每个logcat文件的大小,和一共报错多少个logcat日志文件。需求:设备即将上线,需要后台实时采集logcat日志,保存到相应目录下,方便app端上传到服务器,从而分析问题。延伸开发:APP可在发现异常时,主动上传该日志,或者拿到问题设备,将日志取出分析。软件平台:Android11。硬件平台:高通QCS6125。
2024-03-19 17:24:09
477
原创 android 添加ro属性字段并初始化
这种型号属性适合做成ro类型,类似于原生系统的ro.product.model,由于android层面拿到这个具体的型号值是内核通过传递cmdline而获取的,内核层面拿到硬件型号的区别从而在cmdline添加了一个board-id字段,Android层面在init进程解析并设置属性即可。需求:硬件需通过硬件电路区分为多款型号,需要初始化到相应的系统属性字段展示。修改分两部分,init一部分,settings展示代码一部分;软件平台:Android11。硬件平台:QCS6125。
2024-01-11 10:48:45
856
原创 Android11 将logcat日志定位到uart串口输出
重新编译刷机即可验证,注意如果串口日志仍不是全量则需要确认内核printk的级别,shell进设备,执行echo 7 > proc/sys/kernel/printk,可以将内核日志级别设置为最低,即基本上所有等级的日志都会输出到串口。需求:如题,串口需要输出logcat的系统全量日志,我这里边是把logcat日志定向到了/dev/kmsg从而使logcat跟kmsg一样通过串口输出。软件平台:Android11。硬件平台:QCS6125。
2023-11-16 10:52:45
584
原创 Android11 添加adb后门
逻辑就是,三个物理按键短时间按的次数各达到三次,就设置一个prop属性,在连接usb线后,直接可adb shell调试。软件平台:Android11。硬件平台:QCS6125。
2023-10-18 16:42:21
811
原创 Android11 移植memtester压测内存
需求如题,从网上下载了memtest源码压缩包,准备放到系统源码编译,然后push到板子上执行,结果,编译出来一堆问题,报build err。编译好后push到android设备里面,测试前需先在android看里面设置环境变量。
2023-10-18 11:41:36
567
原创 Android11 通过升级Settings数据强制覆盖用户的设置项
需求:设备通过OTA升级,强制修改用户的settings键值;编译SettingsProvider安装验证即可。软件:Android 11。硬件:QCS6125。
2023-09-19 14:17:23
492
原创 Android11 Framework添加Powerkey事件去抖
需求:短时间来回触控powerkey造成屏幕来回亮灭切换,需要去抖动,即在每次响应执行完一次休眠或者唤醒事件后,再响应powerkey事件。增量编译验证:达到的效果是每次经历完一次完整的唤醒、休眠逻辑才会响应PowerKey事件。
2023-07-11 10:50:43
331
原创 Android11 默认开机后台记录logcat日志
需求:android启动后,默认后台记录logcat日志,并且设置每个文件大小为2M,最多记录30个文件,并且放置的data目录需要开放给app侧读取权限。软件平台:Android11。Mark一下,编译验证调试~硬件平台:QCS6125。
2023-07-06 11:53:09
1526
原创 Android11 系统裁剪
2、修改device目录下的makefile,添加具体的package。修改后,编译一次,看out下相关app是否已经不存在即生效了。软件平台:Android11。1、build添加变量定义。硬件平台:QCS6125。
2023-06-13 10:30:13
763
原创 Android 添加休眠唤醒分别关闭和打开飞行模式
此服务主要的功能框架就是监听系统息屏的广播,在接受到此广播后,发五分钟延迟的消息,交给Handler去处理,从而开启飞行模式。需求:功耗考虑,需要在系统息屏5分钟后,进入飞行模式,系统唤醒后,关闭飞行模式。软件:Android11。硬件:QCS6125。
2023-05-19 16:00:12
432
原创 Android11 TextView长按默认触发选项定制
此外,对于网络链接文本,长按后可能会出发“打开”的按钮,这种情况可以删除Browser应用。软件平台:Android11。硬件平台:QCS6125。
2023-05-19 14:50:14
326
原创 repo 管理android源码,创建新分支,大版本回退快捷操作
Mark一下,上述这种方式其实是通过分支映射xml的方式,分支的proj列表xml文件,统一都在master分支管理维护。1、本地干净的代码推送到远程,新建分支,本地可建也可不建与远程同名的分支;2、新建本分支的xml文件,并提交到master分支;4、执行如下指令,sync代码,并且切换新分支;需求:android源码仓创建新分支。3、通过制定xml的方式同步新分支代码;
2023-05-15 17:16:20
1010
原创 Android11 添加开机启动后固件升级逻辑
对于qcom平台,做如上修改后,可在android跟目录执行完env之后,mmm system/sepolicy就可以生成,会在out/target/product/trinket目录(lunch的产品)生成到两个路径下:system/etc/selinux和vendor/etc/selinux,分别将这两个目录push到target就可以验证生效;如果需要升级,则设置背景图,并且设置不可点击,防止不必要的anr出现。1、添加资源文件,即升级情况的全屏UI提示背景图;至此,需求开发完成。
2023-04-27 10:48:28
435
原创 Ubuntu18.04 安装 samba 服务器
步骤四:在Ubuntu下创建一个你想要共享的文件夹。并把文件夹权限设置为777,作者这里在/home目录下创建了work 共享文件夹。步骤七:在window下登陆到linux 下的共享文件夹 直接在window 文件路径下输入 \\ 你linux 的IP地址进行访问。步骤六:修改smaba配置文件 /etc/samba/smb.conf。步骤二:检查下samba安装信息 使用命令。步骤三: 使用命令 来启动samba服务。步骤五:添加 samba 用户。步骤一:直接使用命令。
2023-04-26 20:41:09
943
原创 Repo 整体版本回退,方便二分查找确定问题
1).在android根目录下,新建分支,repo forall -c git checkout -b new_branch_xxx XXX_HALO_2.1.2_L1_20220829。2).此时所有仓库已创建好新分支new_branch_xxx,且已回退至tag为XXX_HALO_2.1.2_L1_20220829时间节点的历史版本。先去随意git仓库下,git tag,假设想回退的tag号为XXX_HALO_2.1.2_L1_20220829。1.repo回退到具体某一天的提交。
2023-04-26 17:32:08
941
转载 Android11 SELinux 添加权限后不生效
发现需要确实是Android 11 platform_app 缺少mlstrustedobject。Android 11上需要对一个节点进行写操作,但是添加了Selinux以后还是报错。但是因为要过cts,不能直接修改platform_app的type。修改yft_temperature_file即可。软件平台:Android11。硬件平台:QCS6125。加了权限还是一直报avc。
2023-04-12 17:16:12
690
原创 android11 关闭默认的窗口切换动画
增量编译验证即可,发现window自身动画和window间切换动画已经默认关闭。软件平台:Android11。硬件平台:QCS6125。
2023-04-03 18:07:08
661
原创 Android11 添加输入法并且设置默认
具体配置项的字串怎么获取呢?安装上apk,在settings界面选中该输入法,然后命令行。拿到值设置到SettingsProvider的配置文件即可。软件平台:Android11。硬件平台:QCS6125。
2023-03-29 20:17:56
931
原创 默认开启“停用HW叠加层”开关,强制GPU渲染
因为开机默认状态,不会加载开发者模式的页面,因此在开发者模式的控制类是无法修改默认的,只能在开机必走的阶段执行使能,这里我选择的是FallbackHome这个类,每次在launcher启动之前都会调用这里,故选择该类。编译验证,刷机即可发现在开发者选项中,该项值已经默认打开了。
2023-02-05 15:18:08
6880
原创 Android11 设置菜单添加永不休眠选项
切换到dream_timeout资源,这里边有永不休眠的选项;软件平台:Android11。硬件平台:QCS6125。
2023-02-02 16:58:05
956
原创 隐藏Android11系统的鼠标
锁定是在PointerIcon.java中控制显示的,进入到PointerIcon类中详细分析,该类中主要的方法有getNullIcon() 获取空图标;getDefaultIcon()获取默认图标;getSystemIcon()获取系统图标等,认真读几遍代码,不难发现获取鼠标的方法最终都会调用到getSystemIcon()这个方法里。需求由来:项目中支持电磁笔,发现电磁笔接触屏幕的点系统都会显示黑色的鼠标小箭头,需要将这个屏蔽掉;进而查找pointer_arrow_icon.xml的加载位置,
2023-01-30 16:32:00
1058
原创 Android11 添加HIDL接口编译报错
可以看到在prebuilts目录生成了两个lsdump文件,cd到相应目录,git status看到文件确实被修改了,git commit这俩文件即可,这样其他人sync下来,直接就会build通过而不再报这个错误。软件平台:Android11。硬件平台:QCS6125。
2023-01-16 10:28:25
2069
原创 Android11 开机默认旋转90度
至此从开机动画开始往后的UI都修改为默认竖屏了,剩下的就是bootlogo部分,这部分只需要把bmp格式素材自行旋转为竖屏,编译到系统即可。需求说明:开机自动旋转90度,改横屏显示为默认竖屏,从开机logo,开机动画开始就默认旋转。第四步:修改DisplayRotation.java。第三步:修改RotationPolicy.java。默认settings键值配置为竖屏。软件平台:Android11。需求搞定~~~~~~硬件平台:QCS6125。第五步:修改开机动画部分。
2023-01-14 16:47:57
2179
原创 android 添加vndbinder控制接口
可以大概看出,是vndservice可执行程序通过vndbinder调用同样注册vndbinder的display.qservice服务,后边跟的参数38代表功能接口的ID号即为一个方法,再往后的i32为该功能的参数数据类型定义为int32,再往后尖括号就是参数值。需求描述:通过adb命令行,同注册为vndbinder的服务通信,调用其相关接口,注册vndbinder的服务在HW层实现。在执行上述指令的同时,打开logcat日志,可以看到“======”标示的日志输出,代表数据通路没问题。
2022-12-24 11:10:40
898
原创 Android11添加AIDL系统服务及HIDL接口服务
frameworks/base/services/core/java/com/android/server目录添加HandWriteManagerService.java。可以看到“======”标示的内容,从自定义服务开始到SF日志,到最终HW层扩展接口拿到传递的数据值证明接口通了~~~~完事大吉!将刚刚得到的新 hashcode 值更新到 hardware/interfaces/current.txt。Mark一下,本文只做数据通路走通,可参考实现自己的控制和数据传输接口!
2022-12-22 17:01:43
4909
原创 HWC与GPU混合渲染概念详解
然后,SurfaceFlinger 通过调用 setClientTarget 将该缓冲区提供给屏幕,以便缓冲区可以在屏幕上显示,或者进一步与未标记为进行 SurfaceFlinger 合成的图层合成。该框架假设,在热插拔第一个内部屏幕之后,所有热插拔操作都是在外部屏幕上进行,因此如果添加了更多内部屏幕,它们将被错误地归类为 Display.TYPE_HDMI,而不是 Display.TYPE_BUILT_IN。在显示缓冲区之前,HWC 会检查同步栅栏是否已发出信号,如果有,则显示缓冲区。
2022-11-01 16:28:22
1712
原创 Android 9系统添加系统字体
近日,预制了一套系统字体,本来字体可以在app中单独放置到资源,然后调用,但由于系统中定制的apk有多个需要用该字库,为了节约空间,就把字库文件预制到了系统,一份文件可以供多个apk去使用。改动不大,主要是找到要改动的点,网上的方案很多,大部分都是针对低版本,好多文件在高版本没有了,没办法参考,自己搞定了,Mark一下。我这里是改了Settings里边恢复出厂设置的确认界面的字体,修改完成,增量编译,然后刷机验证即可~~~修改frameworks/base/data/fonts目录内容。
2022-08-23 11:20:46
1266
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人