<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Megumi99的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Megumi99</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Megumi99]]></copyright><item><title><![CDATA[【RK3576】SystemUi圆角屏状态栏安全边距生效原理及代码调用链]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/169267664</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/169267664</guid><author>Megumi99</author><pubDate>Tue, 27 Oct 2026 20:52:38 +0800</pubDate><description><![CDATA[本次并未新增这种依赖。如果以后其他产品也引用它，也会继承这个配置，届时应根据面板差异考虑增加产品条件。本次被覆盖的是 SSI 的 framework 资源，实际验证的产物是。是状态栏内部的内容容器，时钟、通知和系统图标都位于这个布局体系内，因此会一起受到外层安全 padding 的影响。是内容避让距离，不是屏幕物理圆角半径，也不是状态栏高度。这不是桌面 Launcher 的专用参数，而是 SystemUI 复用的圆角内容安全参数。也就是说，不需要时钟控件自己读取圆角配置，状态栏容器已经统一处理了避让。]]></description><category></category></item><item><title><![CDATA[【RK3576】RecoveryUI 圆角屏安全边距配置及代码调用链]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/166893713</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/166893713</guid><author>Megumi99</author><pubDate>Wed, 30 Sep 2026 11:21:23 +0800</pubDate><description><![CDATA[如果值没有出现，通常表示变量没有进入实际产品构建配置，或这次生成的镜像没有使用预期的 BoardConfig/源码树。要让运行中的 UI 更新，必须重启到使用新属性/代码的 Recovery。例如，屏幕上沿的菜单首行、左上角提示文字，或底部的错误/启动日志会被圆角遮挡。差别在于配置发生在 C++ 编译期默认值、Recovery 启动属性，还是产品构建生成属性的阶段。适合把配置和 Recovery 的启动属性关联起来。**生效步骤：**编译 Recovery 相关目标，并确保最终刷入或打包的镜像包含新的。]]></description><category></category></item><item><title><![CDATA[Android16 SystemService.onBootPhase 调用时机]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/165356026</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/165356026</guid><author>Megumi99</author><pubDate>Mon, 14 Sep 2026 20:16:53 +0800</pubDate><description><![CDATA[的注释说明，服务启动阶段之前的阶段不会发送给该服务；服务从自身注册或启动阶段开始接收后续阶段回调。重写该方法，在 Android 系统启动的不同阶段执行对应的初始化逻辑。会在系统服务收到启动完成阶段回调时执行，而不是在设备上电的最早时刻执行。会遍历所有已经启动的系统服务，并调用每个服务的。注册并启动，系统会在对应启动阶段自动调用该方法。负责启动和管理系统服务，具体服务通常继承。内部的生命周期阶段，不等同于应用层接收的。提供的系统服务启动生命周期回调方法。服务不一定会收到所有阶段。，是最后一个启动阶段。]]></description><category></category></item><item><title><![CDATA[【RK3576】SoundPicker 应⽤架构与核⼼代码分析]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/163054204</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/163054204</guid><author>Megumi99</author><pubDate>Mon, 20 Jul 2026 20:23:38 +0800</pubDate><description><![CDATA[是 Android AOSP 中负责系统铃声/通知音/闹钟选择的应用，包名，路径为。当用户在设置 → 提示音和振动 → 电话铃声/默认通知提示音/默认闹钟铃声中点击时，系统通过启动该应用的，让用户从系统内置铃声或自定义铃声中选取。继承，实现Checkable接口，封装了的选中/取消状态。阶段操作涉及组件初始化拷贝默认铃声到文件系统→启动Settings 发送 RINGTONE_PICKER Intent数据加载查询 MediaStore 获取铃声列表→列表展示→预览播放用户点击铃声项→。]]></description><category></category></item><item><title><![CDATA[Android STS（Security Test Suite）完整介绍与测试流程]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/161894690</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/161894690</guid><author>Megumi99</author><pubDate>Thu, 11 Jun 2026 15:01:16 +0800</pubDate><description><![CDATA[目录STS 概述STS 与其他测试套件对比STS 架构设计STS 测试类型STS 测试前提条件STS 环境搭建完整流程STS 测试命令大全STS 测试执行流程STS 测试报告解读STS 常见问题与踩坑指南STS SecurityTestCase API 参考附录：STS 源码结构STS（Security Test Suite，安全测试套件）是 Google 推出的 Android 安全专项测试套件，专门用于验证 Android 设备安全补丁的安装情况和系统安全漏洞。属性内容全称首次发布。]]></description><category></category></item><item><title><![CDATA[Aosp源码之JobService]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/161336298</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/161336298</guid><author>Megumi99</author><pubDate>Sat, 23 May 2026 16:38:29 +0800</pubDate><description><![CDATA[**JobService 的强制安全锁不加这个权限，你的后台任务永远不会被系统执行。]]></description><category></category></item><item><title><![CDATA[Windows 环境 Android 系统 APK 签名操作文档]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/161225454</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/161225454</guid><author>Megumi99</author><pubDate>Tue, 19 May 2026 14:33:17 +0800</pubDate><description><![CDATA[Windows 系统无默认 Java 命令，需手动安装配置 JDK。，适配 Android14 系统平台签名规范。将以下 4 个文件统一放置在同一文件夹内。进入文件所在目录，执行签名指令。执行以下命令校验签名是否生效。输出版本号即代表配置成功。]]></description><category></category></item><item><title><![CDATA[Android 谷歌 VTS 完整测试]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/161185363</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/161185363</guid><author>Megumi99</author><pubDate>Mon, 18 May 2026 10:15:32 +0800</pubDate><description><![CDATA[VTS（供应商测试套件）是 Android 认证测试的重要组成部分，主要用于验证供应商（Vendor）接口的兼容性与稳定性。Kernel(Linux 内核)SoC(系统级芯片驱动)HAL(硬件抽象层)]]></description><category></category></item><item><title><![CDATA[Android 谷歌 CTS 完整测试]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/161142434</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/161142434</guid><author>Megumi99</author><pubDate>Sat, 16 May 2026 14:07:03 +0800</pubDate><description><![CDATA[CTS 全称兼容性测试套件，是谷歌官方自动化兼容性测试工具，用于校验安卓设备符合安卓兼容性规范，是设备过 GMS 认证、预装谷歌应用必备测试项，包含自动化 CTS 测试 + 手动 CTS-V 测试。]]></description><category></category></item><item><title><![CDATA[Reason: ‘Unknown failure: cmd: Failure calling service package: Broken pipe (32)‘ ]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/160986805</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/160986805</guid><author>Megumi99</author><pubDate>Mon, 11 May 2026 15:28:08 +0800</pubDate><description><![CDATA[ADB 通信断连（Broken pipe）PC 给设备发送安装命令时，连接突然断开，管道中断。设备package服务崩溃 / 无响应安卓系统负责安装应用的包管理服务（PackageManagerService）卡死、重启或异常。设备系统 / 环境不兼容 / 异常，系统版本存在稳定性问题，导致 instant app 测试安装失败。辅助原因：设备存储空间不足、权限异常、ADB 版本不匹配。根本原因：设备包管理服务崩溃 + ADB 通信中断首选方案设备问题：机型系统不稳定，建议刷原生 / 稳定固件。]]></description><category></category></item><item><title><![CDATA[安卓源码编译报错Could not find version “14“ in CTS platform version file:]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/157940551</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/157940551</guid><author>Megumi99</author><pubDate>Tue, 10 Feb 2026 15:04:45 +0800</pubDate><description><![CDATA[原因：打开的窗口先编译的debug版本，编译环境被设置为debug环境，用此环境在编译了user版本。解决：关掉此窗口重新打开一个新窗口编译即可。]]></description><category></category></item><item><title><![CDATA[安卓 Service 两种绑定方式]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/157841979</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/157841979</guid><author>Megumi99</author><pubDate>Sat, 07 Feb 2026 15:33:08 +0800</pubDate><description><![CDATA[/ Service必须实现的方法，bindService方式才会用到，startService方式返回null即可// Service首次创建时调用（只执行一次）Log.d("MyStartService", "Service创建了")// 每次调用startService都会执行（核心处理逻辑的地方）Log.d("MyStartService", "Service启动了，startId：$startId")// 模拟后台任务（注意：Service默认运行在主线程，耗时操作需开子线程）]]></description><category></category></item><item><title><![CDATA[安卓编译时android.bp和build.gradle的区别]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/148795386</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/148795386</guid><author>Megumi99</author><pubDate>Fri, 20 Jun 2025 16:34:48 +0800</pubDate><description><![CDATA[：用途：专为 Android 开源项目（AOSP）设计，用于系统级开发（如 ROM 内置系统应用）。构建系统：基于 Soong（替代 Make 的现代构建系统），与 Ninja 结合生成底层构建规则。环境：仅适用于 AOSP 源码环境，需通过  或  命令编译。：用途：适用于标准 Android 应用开发，通过 Android Studio 管理。构建系统：基于 Gradle（使用 Kotlin 脚本替代 Groovy），支持灵活的构建流程和插件扩展。环境：独立于 AOSP，依赖 Android Gradl]]></description><category></category></item><item><title><![CDATA[android.bp和android.mk的区别]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/148697409</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/148697409</guid><author>Megumi99</author><pubDate>Mon, 16 Jun 2025 18:12:55 +0800</pubDate><description><![CDATA[Android.mk通过宏指定模块类型，需手动管理变量清空（CLEAR_VARSAndroid.bp模块类型通过前缀明确（如cc_library），无需手动清空状态。Android.bp 通过声明式语法和结构化设计，解决了 Android.mk 在大型项目中维护困难、效率低下的问题，是 Android 编译系统的未来发展方向。若项目支持，建议尽早迁移至 Android.bp，以获得更好的编译性能和开发体验。]]></description><category></category></item><item><title><![CDATA[自定义上下滑动itemtab选项卡]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/146425192</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/146425192</guid><author>Megumi99</author><pubDate>Fri, 21 Mar 2025 17:13:32 +0800</pubDate><description><![CDATA[attrs.xml定义view的属性。新建ItemTabView。]]></description><category></category></item><item><title><![CDATA[android项目引入android.car.jar\framework.jar报错]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/146076125</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/146076125</guid><author>Megumi99</author><pubDate>Fri, 07 Mar 2025 12:00:00 +0800</pubDate><description><![CDATA[将依赖引入改为compileOnly即可。]]></description><category></category></item><item><title><![CDATA[android通过adb push将app设置为系统应用]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/146072687</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/146072687</guid><author>Megumi99</author><pubDate>Thu, 06 Mar 2025 18:00:25 +0800</pubDate><description><![CDATA[打开安卓手机、车机模拟器,在终端窗口（我用的是Power Shell）输入指令adb root我已经获取过了root权限虽然你在启动时使用了参数，但为了保险起见，你可以再次使用命令来确保系统分区是可写的。在命令行中执行：adb push/system/priv-app/ 或者adb push。]]></description><category></category></item><item><title><![CDATA[在recyclerview中item布局使用databinding]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/146010577</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/146010577</guid><author>Megumi99</author><pubDate>Tue, 04 Mar 2025 16:00:00 +0800</pubDate><description><![CDATA[本篇简单说说recyclerview中item布局使用databinding，大差不差，其实原理差不多。关键在于直接设置视图的对象属性，而不是一个个控件的设置。上篇说到了databinding的简单实用。2.使用recyclerview必须要初始化。3.recycleview的适配器。]]></description><category></category></item><item><title><![CDATA[android jetpack库databinding的简单实用]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/145977393</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/145977393</guid><author>Megumi99</author><pubDate>Mon, 03 Mar 2025 14:30:00 +0800</pubDate><description><![CDATA[对跟布局 Alt + enter，选中Convert to data binding layout。(注意：使用非字符串类型的数据要显示在textview上要使用String.valueOf()。从这不难看出databinding有个好处：当数据为null时，他会不显示，而不是崩溃报错。2.将要使用databinding功能的xml转换为能使用databinding的xml。1.在build.gradle中开启databinding。4.在布局文件里定义你要绑定的数据对象。]]></description><category></category></item><item><title><![CDATA[ContentProvider获取系统app并通过RecyclerView展示]]></title><link>https://blog.youkuaiyun.com/Megumi99/article/details/145933687</link><guid>https://blog.youkuaiyun.com/Megumi99/article/details/145933687</guid><author>Megumi99</author><pubDate>Sat, 01 Mar 2025 09:30:00 +0800</pubDate><description><![CDATA[先定义App的bean类，具有app图标以及名字，这里使用kotlin语言。使用recyclerview必须使用适配器。]]></description><category></category></item></channel></rss>