- 博客(259)
- 资源 (3)
- 收藏
- 关注

原创 Android 11 添加系统开机启动的Service方案
android11 添加了开机启动的service,涉及添加过程中遇到的编译,安全规则语法等多个问题
2022-03-16 16:21:00
8711
2
原创 MacBook通过Minicom连接串口
这里,/dev/tty.usbserial-XXXXXX是串口设备的路径,其中XXXXXX是设备的唯一标识符。使用串口线连接您的设备和MacBook,确保连接正确。9600是波特率,如果您的设备使用不同的波特率,则需要将其替换为相应的值。4. 然后按回车键,您将看到Minicom连接到串口并显示设备的输出。5. 要退出Minicom,请按Ctrl-A,然后按X键。如果5的退出无效,则可以按组合键: ESC 和 Z退出。然后找到您的设备并将其替换为上面的命令中的路径。
2025-03-27 17:20:08
100
原创 Android14(13)添加墨水屏手写API
32位的放到prebuilts/vndk/v33/arm64/arch-arm-armv8-a/shared/vndk-core目录,都命名为libyfdpen.so这个名字。注:64位的放到prebuilts/vndk/v33/arm64/arch-arm64-armv8-a/shared/vndk-core目录。此目录api接口文件会以代码压缩包方式绑定附件。该步添加了两个so文件,通过附件上传。软件平台:Android14。硬件平台:QCS6115。该仓内容以附件形式上传;
2025-02-20 18:03:22
404
原创 android 定制mtp连接外设的设备名称
需求:同一套代码基线支持多个产品型号,如S2N、S2C、E1等,但是编译的时候model属性字段在build目录就是配置好不可再更改的,如何动态的实现展示不同的mtp设备名称呢?之所以需要此改动,是因为我本地一台windows一台mac,改动第一条,在win生效,但是在mac没效果,添加第二条改动后,mac显示也正常。上述submodel属性是系统首次启动init根据内核硬件检测初始化的boardid值去初始化的,用于区分细微硬件差别。软件平台:Android11。硬件平台:QCS6125。
2025-02-19 15:21:19
276
原创 Android recovery菜单页面选项定制
注意:第二条,如何选择要删除的菜单项,否则删除本身就已经清除或者不加载的项,直接就会黑屏,这里比较麻烦,如果此时黑屏,看问题就得recovery接串口看了。2、删除操作却是在recovery_main.cpp中,这里要先确认当下默认的菜单页有哪些,只能删除加载的项,否则会黑屏异常。需求:Android进入recovery的菜单页面,只保留重启等两三个选项。软件平台:Android13。硬件平台:高通SM6115。
2024-12-30 18:07:38
498
原创 Android14 OTA升级速度过慢问题解决方案
该问题为Android高版本的虚拟AB分区压缩技术所致,其实就是时间换空间,个人推测AB分区压缩会节约硬件存储空间,但是升级过程中会涉及解压缩再升级的耗时过程,取舍之间,我们计划关闭该配置,还有一个就是升级服务的进程用户组配置,这个大概提升五六分钟左右,两者结合起来,升级时长从20min缩减到五六分钟,达标!问题:OTA整包升级接近20min,太长无法忍受。软件版本:Android14。硬件平台:QCS6115。
2024-12-24 15:58:42
515
7
原创 Android 11添加电容笔电量监测需求
需求:PAD接入电容笔,该笔通过驱动上报坐标及当前电量等数据,即走系统的input通道,需要系统层监测到该硬件数据,这里主要展示电量,对用户显示提醒。基本实现思路:通过在InputManager的本地层注册监听回调,实现监测的目的。Mark it...增量编译验证即可.软件平台:Android11。硬件平台:QCS6125。
2024-12-24 10:45:00
269
原创 Android Settings增加多击事件,增加开发者模式打开难度
对付这种需求本来有多种方案,比如通过PKMS里边加一些签名或者包名校验,防止三方apk后装,之前的博客里有记录过该方法,本篇只针对settings打开开发者模式的方式做复杂化处理,因为这个入口如果完全屏蔽对开发者可能不太友好。这个改动设置一个标志位,在30s内点击相关栏10次才会设置,30s后次数自动清零重新累计,在该标志位设定后,原有的开发者模式多击才会生效,这里只是讲一个方法,具体哪个栏目可以灵活控制。软件平台:Android11。硬件平台:QCS6125。
2024-07-29 10:48:59
303
原创 android11 屏蔽usb通过otg转接口外接鼠标设备
考虑到屏蔽的层面可以从两个层面去做,一个是驱动层面不识别,一个就是Android系统层面不识别加载,本篇只讲后者。需求:Android设备通过接usb转接线连接鼠标功能屏蔽。可以看到,底层驱动识别后,EventHub也识别了设备一些类型属性,软件平台:Android11。硬件平台:QCS6125。
2024-07-18 18:48:34
760
原创 android 使用系统工具bootchart统计开机时长
然后,打开png图片,即可查看开机总时长,及关注的进程启动的时间点、系统资源占用等信息。需求:统计系统优化前后的启动时长差异。软件平台:Android11。硬件平台:QCS6125。
2024-07-09 14:15:31
577
原创 android 排查sensor异常问题
可以检测到16个非动态(静态)传感器,如果是异常的情况,这些动态和静态传感器检测的值应该都是0个,即捕获不到任何传感器硬件。具体问题:设备起来后,无法横竖屏自动旋转,通过sensor api接口拿到的数据为null;印象中低版本是可以通过getevent获取sensor的值的,但是高版本这种方法不灵通了。软件平台:Android11。硬件平台:QCS6125。
2024-07-04 14:56:52
392
原创 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
907
原创 android 调试UI 按钮无法点击事件问题
首先,打开了Android自带的pointer_location报点轨迹,用电磁笔点击按钮,发现有点位,但是控件未见响应,基本排除硬件、驱动、及系统层面的问题。可以看到这个提交按钮的clickable属性为false,因此无法响应点击事件。实锤给客户端的同事去分析原因去了~~~~~软件平台:Android11。问题:UI控件无法点击。硬件平台:QCS6125。
2024-05-31 16:10:17
614
原创 高通平台Android11 添加新分区的方法
鉴于此,决定重新创建一个分区,将logcat后台记录的日志文件全部移到此分区,由于此分区不参与recovery的双清操作,因此可保证系统再次启动后,该分区依然有recovery模式之前的日志文件,用来排查导致进入recovery模式的原因。我们这个分区的size定义为100M大小,这个可根据自己需要做调整。依次添加的为:生命device节点类型、添加到file上下文、添加开机阶段fsck的操作权限(否则挂载不上)、添加init进程访问节点权限、添加shell访问挂载目录的权限、添加vold挂载节点的权限。
2024-04-22 17:39:56
1672
原创 android11 添加实时记录logcat日志保存到data目录
这就实现了开机自启动记录logcat,并且设置了每个logcat文件的大小,和一共报错多少个logcat日志文件。需求:设备即将上线,需要后台实时采集logcat日志,保存到相应目录下,方便app端上传到服务器,从而分析问题。延伸开发:APP可在发现异常时,主动上传该日志,或者拿到问题设备,将日志取出分析。软件平台:Android11。硬件平台:高通QCS6125。
2024-03-19 17:24:09
667
原创 android 添加ro属性字段并初始化
这种型号属性适合做成ro类型,类似于原生系统的ro.product.model,由于android层面拿到这个具体的型号值是内核通过传递cmdline而获取的,内核层面拿到硬件型号的区别从而在cmdline添加了一个board-id字段,Android层面在init进程解析并设置属性即可。需求:硬件需通过硬件电路区分为多款型号,需要初始化到相应的系统属性字段展示。修改分两部分,init一部分,settings展示代码一部分;软件平台:Android11。硬件平台:QCS6125。
2024-01-11 10:48:45
1233
原创 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
836
原创 Android11 添加adb后门
逻辑就是,三个物理按键短时间按的次数各达到三次,就设置一个prop属性,在连接usb线后,直接可adb shell调试。软件平台:Android11。硬件平台:QCS6125。
2023-10-18 16:42:21
926
原创 Android11 移植memtester压测内存
需求如题,从网上下载了memtest源码压缩包,准备放到系统源码编译,然后push到板子上执行,结果,编译出来一堆问题,报build err。编译好后push到android设备里面,测试前需先在android看里面设置环境变量。
2023-10-18 11:41:36
745
原创 Android11 通过升级Settings数据强制覆盖用户的设置项
需求:设备通过OTA升级,强制修改用户的settings键值;编译SettingsProvider安装验证即可。软件:Android 11。硬件:QCS6125。
2023-09-19 14:17:23
614
原创 Android11 Framework添加Powerkey事件去抖
需求:短时间来回触控powerkey造成屏幕来回亮灭切换,需要去抖动,即在每次响应执行完一次休眠或者唤醒事件后,再响应powerkey事件。增量编译验证:达到的效果是每次经历完一次完整的唤醒、休眠逻辑才会响应PowerKey事件。
2023-07-11 10:50:43
400
原创 Android11 默认开机后台记录logcat日志
需求:android启动后,默认后台记录logcat日志,并且设置每个文件大小为2M,最多记录30个文件,并且放置的data目录需要开放给app侧读取权限。软件平台:Android11。Mark一下,编译验证调试~硬件平台:QCS6125。
2023-07-06 11:53:09
1819
原创 Android11 系统裁剪
2、修改device目录下的makefile,添加具体的package。修改后,编译一次,看out下相关app是否已经不存在即生效了。软件平台:Android11。1、build添加变量定义。硬件平台:QCS6125。
2023-06-13 10:30:13
980
原创 Android 添加休眠唤醒分别关闭和打开飞行模式
此服务主要的功能框架就是监听系统息屏的广播,在接受到此广播后,发五分钟延迟的消息,交给Handler去处理,从而开启飞行模式。需求:功耗考虑,需要在系统息屏5分钟后,进入飞行模式,系统唤醒后,关闭飞行模式。软件:Android11。硬件:QCS6125。
2023-05-19 16:00:12
552
原创 Android11 TextView长按默认触发选项定制
此外,对于网络链接文本,长按后可能会出发“打开”的按钮,这种情况可以删除Browser应用。软件平台:Android11。硬件平台:QCS6125。
2023-05-19 14:50:14
447
原创 repo 管理android源码,创建新分支,大版本回退快捷操作
Mark一下,上述这种方式其实是通过分支映射xml的方式,分支的proj列表xml文件,统一都在master分支管理维护。1、本地干净的代码推送到远程,新建分支,本地可建也可不建与远程同名的分支;2、新建本分支的xml文件,并提交到master分支;4、执行如下指令,sync代码,并且切换新分支;需求:android源码仓创建新分支。3、通过制定xml的方式同步新分支代码;
2023-05-15 17:16:20
1216
原创 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
545
原创 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
1118
原创 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
1139
转载 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
792
原创 android11 关闭默认的窗口切换动画
增量编译验证即可,发现window自身动画和window间切换动画已经默认关闭。软件平台:Android11。硬件平台:QCS6125。
2023-04-03 18:07:08
824
原创 Android11 添加输入法并且设置默认
具体配置项的字串怎么获取呢?安装上apk,在settings界面选中该输入法,然后命令行。拿到值设置到SettingsProvider的配置文件即可。软件平台:Android11。硬件平台:QCS6125。
2023-03-29 20:17:56
1232
原创 默认开启“停用HW叠加层”开关,强制GPU渲染
因为开机默认状态,不会加载开发者模式的页面,因此在开发者模式的控制类是无法修改默认的,只能在开机必走的阶段执行使能,这里我选择的是FallbackHome这个类,每次在launcher启动之前都会调用这里,故选择该类。编译验证,刷机即可发现在开发者选项中,该项值已经默认打开了。
2023-02-05 15:18:08
8817
原创 Android11 设置菜单添加永不休眠选项
切换到dream_timeout资源,这里边有永不休眠的选项;软件平台:Android11。硬件平台:QCS6125。
2023-02-02 16:58:05
1036
原创 隐藏Android11系统的鼠标
锁定是在PointerIcon.java中控制显示的,进入到PointerIcon类中详细分析,该类中主要的方法有getNullIcon() 获取空图标;getDefaultIcon()获取默认图标;getSystemIcon()获取系统图标等,认真读几遍代码,不难发现获取鼠标的方法最终都会调用到getSystemIcon()这个方法里。需求由来:项目中支持电磁笔,发现电磁笔接触屏幕的点系统都会显示黑色的鼠标小箭头,需要将这个屏蔽掉;进而查找pointer_arrow_icon.xml的加载位置,
2023-01-30 16:32:00
1303
原创 Android11 添加HIDL接口编译报错
可以看到在prebuilts目录生成了两个lsdump文件,cd到相应目录,git status看到文件确实被修改了,git commit这俩文件即可,这样其他人sync下来,直接就会build通过而不再报这个错误。软件平台:Android11。硬件平台:QCS6125。
2023-01-16 10:28:25
2494
原创 Android11 开机默认旋转90度
至此从开机动画开始往后的UI都修改为默认竖屏了,剩下的就是bootlogo部分,这部分只需要把bmp格式素材自行旋转为竖屏,编译到系统即可。需求说明:开机自动旋转90度,改横屏显示为默认竖屏,从开机logo,开机动画开始就默认旋转。第四步:修改DisplayRotation.java。第三步:修改RotationPolicy.java。默认settings键值配置为竖屏。软件平台:Android11。需求搞定~~~~~~硬件平台:QCS6125。第五步:修改开机动画部分。
2023-01-14 16:47:57
2561
原创 android 添加vndbinder控制接口
可以大概看出,是vndservice可执行程序通过vndbinder调用同样注册vndbinder的display.qservice服务,后边跟的参数38代表功能接口的ID号即为一个方法,再往后的i32为该功能的参数数据类型定义为int32,再往后尖括号就是参数值。需求描述:通过adb命令行,同注册为vndbinder的服务通信,调用其相关接口,注册vndbinder的服务在HW层实现。在执行上述指令的同时,打开logcat日志,可以看到“======”标示的日志输出,代表数据通路没问题。
2022-12-24 11:10:40
1177
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人