<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[kevin's cache的专栏]]></title><description><![CDATA[誓要去 入刀山 浩气壮 过千关 豪情无限 男儿傲气...]]></description><link>https://blog.youkuaiyun.com/DKBDKBDKB</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; DKBDKBDKB]]></copyright><item><title><![CDATA[AndroidID重置功能开发]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/152222535</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/152222535</guid><author>DKBDKBDKB</author><pubDate>Sun, 28 Sep 2025 16:36:42 +0800</pubDate><description><![CDATA[摘要：为应对隐私审核需求，团队在Android11(QCS6125平台)上基于AndroidID开发了一套免费的用户标识方案。通过修改SettingsProvider，新增了广播接收器(YFD_RESET_ANDROID_ID_ACTION)和resetAndroidId()方法，实现动态重置ID功能（原需恢复出厂设置）。方案采用SecureRandom生成新ID并更新数据库，同时绑定重启操作确保数据同步。关键修改包括AndroidManifest.xml广播声明和SettingsProvider.java]]></description><category></category></item><item><title><![CDATA[android实现shipmode模式需求]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/149222956</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/149222956</guid><author>DKBDKBDKB</author><pubDate>Wed, 09 Jul 2025 14:21:13 +0800</pubDate><description><![CDATA[相对于手机而言，开机待机状态下，最小的场景莫过于飞行待机。需求：部分库存设备由于放置时间过长，到用户手中之后会出现亏电而无法开机，售后要求是能否在设备入库时增加默认电池电量，但是从专业角度，并不建议智能硬件设备电量在入库时充电过满，考虑到安全和电池使用寿命等多种因素，需要在维持当前库存电量不变的情况下，增加入库设备的关机待机时长。最后，屏蔽掉Global Action当中的有关逻辑（设置shipmode之后，无法重启，只能暂时关机，只要满足硬件条件触发开机即会退出shipmode模式）]]></description><category></category></item><item><title><![CDATA[Android11 添加自定义物理按键事件监听回调]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/149047853</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/149047853</guid><author>DKBDKBDKB</author><pubDate>Tue, 01 Jul 2025 17:02:01 +0800</pubDate><description><![CDATA[新增了一个物理按键，需要在围绕这个物理按键的单击、双击、长按、组合键事件触发不同的功能入口。软件平台：Android11。硬件平台：QCS6125。]]></description><category></category></item><item><title><![CDATA[Android11 深休后系统定时唤醒导致网络请求服务器过载]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/148902782</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/148902782</guid><author>DKBDKBDKB</author><pubDate>Wed, 25 Jun 2025 17:10:10 +0800</pubDate><description><![CDATA[摘要：Android系统在QCS6125平台运行Android11时，因默认勿扰模式配置导致22:00和7:00集中唤醒设备，触发批量网络请求造成服务器过载。通过分析logcat日志发现，系统依据default_zen_mode_config.xml的定时规则唤醒，评估勿扰模式状态。解决方案采用随机时间偏移策略，通过修改ScheduleConditionProvider.java代码，在原定时基础上增加±20分钟随机浮动（如22:00变为22:18），成功分散了设备唤醒时间。经编译验证，日志显示mNextA]]></description><category></category></item><item><title><![CDATA[Android14 app被冻结导致进程间通信失败]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/148827302</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/148827302</guid><author>DKBDKBDKB</author><pubDate>Sun, 22 Jun 2025 14:40:26 +0800</pubDate><description><![CDATA[摘要：Android14系统在QCS6115硬件平台出现开机白屏问题，原因是系统资源紧张时触发了进程冻结机制，导致前台进程与Launcher应用交互异常。日志显示Launcher进程（com.fenbi.megrez.app.launcher）被冻结后被AMS杀死，引发Binder通信失败。解决方案是通过修改CachedAppOptimizer.java，对特定进程添加白名单过滤，跳过冻结处理。该方法避免了进程同步交互时的异常终止，有效解决了白屏问题。（149字）]]></description><category></category></item><item><title><![CDATA[Android启动时长优化（kernel部分）]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/148492117</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/148492117</guid><author>DKBDKBDKB</author><pubDate>Sat, 07 Jun 2025 10:47:00 +0800</pubDate><description><![CDATA[需求：设备从logo到进入Home页面持续时间过长，接近60s，遂需要优化。经此配置项优化，系统启动时长缩减至30+s，后续会详细把各项改动的缘由添加上，本篇只做一个工作Mark。软件平台：Android13 Vendor + Android14 Qssi。硬件平台：QCS6115。]]></description><category></category></item><item><title><![CDATA[MacBook通过Minicom连接串口]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/146566363</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/146566363</guid><author>DKBDKBDKB</author><pubDate>Thu, 27 Mar 2025 17:20:08 +0800</pubDate><description><![CDATA[这里，/dev/tty.usbserial-XXXXXX是串口设备的路径，其中XXXXXX是设备的唯一标识符。使用串口线连接您的设备和MacBook，确保连接正确。9600是波特率，如果您的设备使用不同的波特率，则需要将其替换为相应的值。4.   然后按回车键，您将看到Minicom连接到串口并显示设备的输出。5.   要退出Minicom，请按Ctrl-A，然后按X键。如果5的退出无效，则可以按组合键： ESC 和 Z退出。然后找到您的设备并将其替换为上面的命令中的路径。]]></description><category></category></item><item><title><![CDATA[android 定制mtp连接外设的设备名称]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/145730128</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/145730128</guid><author>DKBDKBDKB</author><pubDate>Wed, 19 Feb 2025 15:21:19 +0800</pubDate><description><![CDATA[需求：同一套代码基线支持多个产品型号，如S2N、S2C、E1等，但是编译的时候model属性字段在build目录就是配置好不可再更改的，如何动态的实现展示不同的mtp设备名称呢？之所以需要此改动，是因为我本地一台windows一台mac，改动第一条，在win生效，但是在mac没效果，添加第二条改动后，mac显示也正常。上述submodel属性是系统首次启动init根据内核硬件检测初始化的boardid值去初始化的，用于区分细微硬件差别。软件平台：Android11。硬件平台：QCS6125。]]></description><category></category></item><item><title><![CDATA[Android recovery菜单页面选项定制]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/144831448</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/144831448</guid><author>DKBDKBDKB</author><pubDate>Mon, 30 Dec 2024 18:07:38 +0800</pubDate><description><![CDATA[注意：第二条，如何选择要删除的菜单项，否则删除本身就已经清除或者不加载的项，直接就会黑屏，这里比较麻烦，如果此时黑屏，看问题就得recovery接串口看了。2、删除操作却是在recovery_main.cpp中，这里要先确认当下默认的菜单页有哪些，只能删除加载的项，否则会黑屏异常。需求：Android进入recovery的菜单页面，只保留重启等两三个选项。软件平台：Android13。硬件平台：高通SM6115。]]></description><category></category></item><item><title><![CDATA[Android14 OTA升级速度过慢问题解决方案]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/144696256</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/144696256</guid><author>DKBDKBDKB</author><pubDate>Tue, 24 Dec 2024 15:58:42 +0800</pubDate><description><![CDATA[该问题为Android高版本的虚拟AB分区压缩技术所致，其实就是时间换空间，个人推测AB分区压缩会节约硬件存储空间，但是升级过程中会涉及解压缩再升级的耗时过程，取舍之间，我们计划关闭该配置，还有一个就是升级服务的进程用户组配置，这个大概提升五六分钟左右，两者结合起来，升级时长从20min缩减到五六分钟，达标！问题：OTA整包升级接近20min，太长无法忍受。软件版本：Android14。硬件平台：QCS6115。]]></description><category></category></item><item><title><![CDATA[Android 11添加电容笔电量监测需求]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/144685827</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/144685827</guid><author>DKBDKBDKB</author><pubDate>Tue, 24 Dec 2024 10:45:00 +0800</pubDate><description><![CDATA[需求：PAD接入电容笔，该笔通过驱动上报坐标及当前电量等数据，即走系统的input通道，需要系统层监测到该硬件数据，这里主要展示电量，对用户显示提醒。基本实现思路：通过在InputManager的本地层注册监听回调，实现监测的目的。Mark it...增量编译验证即可.软件平台：Android11。硬件平台：QCS6125。]]></description><category></category></item><item><title><![CDATA[Android Settings增加多击事件，增加开发者模式打开难度]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/140765191</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/140765191</guid><author>DKBDKBDKB</author><pubDate>Mon, 29 Jul 2024 10:48:59 +0800</pubDate><description><![CDATA[对付这种需求本来有多种方案，比如通过PKMS里边加一些签名或者包名校验，防止三方apk后装，之前的博客里有记录过该方法，本篇只针对settings打开开发者模式的方式做复杂化处理，因为这个入口如果完全屏蔽对开发者可能不太友好。这个改动设置一个标志位，在30s内点击相关栏10次才会设置，30s后次数自动清零重新累计，在该标志位设定后，原有的开发者模式多击才会生效，这里只是讲一个方法，具体哪个栏目可以灵活控制。软件平台：Android11。硬件平台：QCS6125。]]></description><category></category></item><item><title><![CDATA[android11 屏蔽usb通过otg转接口外接鼠标设备]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/140530258</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/140530258</guid><author>DKBDKBDKB</author><pubDate>Thu, 18 Jul 2024 18:48:34 +0800</pubDate><description><![CDATA[考虑到屏蔽的层面可以从两个层面去做，一个是驱动层面不识别，一个就是Android系统层面不识别加载，本篇只讲后者。需求：Android设备通过接usb转接线连接鼠标功能屏蔽。可以看到，底层驱动识别后，EventHub也识别了设备一些类型属性，软件平台：Android11。硬件平台：QCS6125。]]></description><category></category></item><item><title><![CDATA[android 使用系统工具bootchart统计开机时长]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/140294402</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/140294402</guid><author>DKBDKBDKB</author><pubDate>Tue, 09 Jul 2024 14:15:31 +0800</pubDate><description><![CDATA[然后，打开png图片，即可查看开机总时长，及关注的进程启动的时间点、系统资源占用等信息。需求：统计系统优化前后的启动时长差异。软件平台：Android11。硬件平台：QCS6125。]]></description><category></category></item><item><title><![CDATA[android 排查sensor异常问题]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/140179484</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/140179484</guid><author>DKBDKBDKB</author><pubDate>Thu, 04 Jul 2024 14:56:52 +0800</pubDate><description><![CDATA[可以检测到16个非动态（静态）传感器，如果是异常的情况，这些动态和静态传感器检测的值应该都是0个，即捕获不到任何传感器硬件。具体问题：设备起来后，无法横竖屏自动旋转，通过sensor api接口拿到的数据为null；印象中低版本是可以通过getevent获取sensor的值的，但是高版本这种方法不灵通了。软件平台：Android11。硬件平台：QCS6125。]]></description><category></category></item><item><title><![CDATA[android OTA升级之后，apk崩溃无法启动]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/139650285</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/139650285</guid><author>DKBDKBDKB</author><pubDate>Thu, 13 Jun 2024 14:21:23 +0800</pubDate><description><![CDATA[也就是说，我们这个高低版本是fingerprint相同的情况，这个问题追述到jenkins编译，启动job时会初始化一个BUILD_NUMBER值，这个值正好跟Android的build系统的名称重复，这就导致Android build系统那一套拼接时间戳的值不会走，因为jenkins一启动就会定义该值，而我们jenkins服务器迁移过，这个值又会从1开始累计，导致前后版本都是16，从而导致fingerprint一致。问题背景：系统版本从低版本升级到高版本后，apk崩溃启动失败。硬件平台：QCS6125。]]></description><category></category></item><item><title><![CDATA[android 调试UI 按钮无法点击事件问题]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/139355200</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/139355200</guid><author>DKBDKBDKB</author><pubDate>Fri, 31 May 2024 16:10:17 +0800</pubDate><description><![CDATA[首先，打开了Android自带的pointer_location报点轨迹，用电磁笔点击按钮，发现有点位，但是控件未见响应，基本排除硬件、驱动、及系统层面的问题。可以看到这个提交按钮的clickable属性为false，因此无法响应点击事件。实锤给客户端的同事去分析原因去了～～～～～软件平台：Android11。问题：UI控件无法点击。硬件平台：QCS6125。]]></description><category></category></item><item><title><![CDATA[高通平台Android11 添加新分区的方法]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/138082728</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/138082728</guid><author>DKBDKBDKB</author><pubDate>Mon, 22 Apr 2024 17:39:56 +0800</pubDate><description><![CDATA[鉴于此，决定重新创建一个分区，将logcat后台记录的日志文件全部移到此分区，由于此分区不参与recovery的双清操作，因此可保证系统再次启动后，该分区依然有recovery模式之前的日志文件，用来排查导致进入recovery模式的原因。我们这个分区的size定义为100M大小，这个可根据自己需要做调整。依次添加的为：生命device节点类型、添加到file上下文、添加开机阶段fsck的操作权限（否则挂载不上）、添加init进程访问节点权限、添加shell访问挂载目录的权限、添加vold挂载节点的权限。]]></description><category></category></item><item><title><![CDATA[android11 添加实时记录logcat日志保存到data目录]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/136849148</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/136849148</guid><author>DKBDKBDKB</author><pubDate>Tue, 19 Mar 2024 17:24:09 +0800</pubDate><description><![CDATA[这就实现了开机自启动记录logcat，并且设置了每个logcat文件的大小，和一共报错多少个logcat日志文件。需求：设备即将上线，需要后台实时采集logcat日志，保存到相应目录下，方便app端上传到服务器，从而分析问题。延伸开发：APP可在发现异常时，主动上传该日志，或者拿到问题设备，将日志取出分析。软件平台：Android11。硬件平台：高通QCS6125。]]></description><category></category></item><item><title><![CDATA[android 添加ro属性字段并初始化]]></title><link>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/135520730</link><guid>https://blog.youkuaiyun.com/DKBDKBDKB/article/details/135520730</guid><author>DKBDKBDKB</author><pubDate>Thu, 11 Jan 2024 10:48:45 +0800</pubDate><description><![CDATA[这种型号属性适合做成ro类型，类似于原生系统的ro.product.model，由于android层面拿到这个具体的型号值是内核通过传递cmdline而获取的，内核层面拿到硬件型号的区别从而在cmdline添加了一个board-id字段，Android层面在init进程解析并设置属性即可。需求：硬件需通过硬件电路区分为多款型号，需要初始化到相应的系统属性字段展示。修改分两部分，init一部分，settings展示代码一部分；软件平台：Android11。硬件平台：QCS6125。]]></description><category></category></item></channel></rss>