- 博客(39)
- 收藏
- 关注
原创 【RK3576】SystemUi圆角屏状态栏安全边距生效原理及代码调用链
本次并未新增这种依赖。如果以后其他产品也引用它,也会继承这个配置,届时应根据面板差异考虑增加产品条件。本次被覆盖的是 SSI 的 framework 资源,实际验证的产物是。是状态栏内部的内容容器,时钟、通知和系统图标都位于这个布局体系内,因此会一起受到外层安全 padding 的影响。是内容避让距离,不是屏幕物理圆角半径,也不是状态栏高度。这不是桌面 Launcher 的专用参数,而是 SystemUI 复用的圆角内容安全参数。也就是说,不需要时钟控件自己读取圆角配置,状态栏容器已经统一处理了避让。
2026-10-27 20:52:38
312
原创 【RK3576】RecoveryUI 圆角屏安全边距配置及代码调用链
如果值没有出现,通常表示变量没有进入实际产品构建配置,或这次生成的镜像没有使用预期的 BoardConfig/源码树。要让运行中的 UI 更新,必须重启到使用新属性/代码的 Recovery。例如,屏幕上沿的菜单首行、左上角提示文字,或底部的错误/启动日志会被圆角遮挡。差别在于配置发生在 C++ 编译期默认值、Recovery 启动属性,还是产品构建生成属性的阶段。适合把配置和 Recovery 的启动属性关联起来。**生效步骤:**编译 Recovery 相关目标,并确保最终刷入或打包的镜像包含新的。
2026-09-30 11:21:23
225
原创 Android16 SystemService.onBootPhase 调用时机
的注释说明,服务启动阶段之前的阶段不会发送给该服务;服务从自身注册或启动阶段开始接收后续阶段回调。重写该方法,在 Android 系统启动的不同阶段执行对应的初始化逻辑。会在系统服务收到启动完成阶段回调时执行,而不是在设备上电的最早时刻执行。会遍历所有已经启动的系统服务,并调用每个服务的。注册并启动,系统会在对应启动阶段自动调用该方法。负责启动和管理系统服务,具体服务通常继承。内部的生命周期阶段,不等同于应用层接收的。提供的系统服务启动生命周期回调方法。服务不一定会收到所有阶段。,是最后一个启动阶段。
2026-09-14 20:16:53
188
原创 【RK3576】SoundPicker 应⽤架构与核⼼代码分析
是 Android AOSP 中负责系统铃声/通知音/闹钟选择的应用,包名,路径为。当用户在设置 → 提示音和振动 → 电话铃声/默认通知提示音/默认闹钟铃声中点击时,系统通过启动该应用的,让用户从系统内置铃声或自定义铃声中选取。继承,实现Checkable接口,封装了的选中/取消状态。阶段操作涉及组件初始化拷贝默认铃声到文件系统→启动Settings 发送 RINGTONE_PICKER Intent数据加载查询 MediaStore 获取铃声列表→列表展示→预览播放用户点击铃声项→。
2026-07-20 20:23:38
243
原创 Android STS(Security Test Suite)完整介绍与测试流程
目录STS 概述STS 与其他测试套件对比STS 架构设计STS 测试类型STS 测试前提条件STS 环境搭建完整流程STS 测试命令大全STS 测试执行流程STS 测试报告解读STS 常见问题与踩坑指南STS SecurityTestCase API 参考附录:STS 源码结构STS(Security Test Suite,安全测试套件)是 Google 推出的 Android 安全专项测试套件,专门用于验证 Android 设备安全补丁的安装情况和系统安全漏洞。属性内容全称首次发布。
2026-06-11 15:01:16
400
原创 Windows 环境 Android 系统 APK 签名操作文档
Windows 系统无默认 Java 命令,需手动安装配置 JDK。,适配 Android14 系统平台签名规范。将以下 4 个文件统一放置在同一文件夹内。进入文件所在目录,执行签名指令。执行以下命令校验签名是否生效。输出版本号即代表配置成功。
2026-05-19 14:33:17
295
原创 Android 谷歌 VTS 完整测试
VTS(供应商测试套件)是 Android 认证测试的重要组成部分,主要用于验证供应商(Vendor)接口的兼容性与稳定性。Kernel(Linux 内核)SoC(系统级芯片驱动)HAL(硬件抽象层)
2026-05-18 10:15:32
405
原创 Android 谷歌 CTS 完整测试
CTS 全称兼容性测试套件,是谷歌官方自动化兼容性测试工具,用于校验安卓设备符合安卓兼容性规范,是设备过 GMS 认证、预装谷歌应用必备测试项,包含自动化 CTS 测试 + 手动 CTS-V 测试。
2026-05-16 14:07:03
1016
原创 Reason: ‘Unknown failure: cmd: Failure calling service package: Broken pipe (32)‘
ADB 通信断连(Broken pipe)PC 给设备发送安装命令时,连接突然断开,管道中断。设备package服务崩溃 / 无响应安卓系统负责安装应用的包管理服务(PackageManagerService)卡死、重启或异常。设备系统 / 环境不兼容 / 异常,系统版本存在稳定性问题,导致 instant app 测试安装失败。辅助原因:设备存储空间不足、权限异常、ADB 版本不匹配。根本原因:设备包管理服务崩溃 + ADB 通信中断首选方案设备问题:机型系统不稳定,建议刷原生 / 稳定固件。
2026-05-11 15:28:08
378
原创 安卓源码编译报错Could not find version “14“ in CTS platform version file:
原因:打开的窗口先编译的debug版本,编译环境被设置为debug环境,用此环境在编译了user版本。解决:关掉此窗口重新打开一个新窗口编译即可。
2026-02-10 15:04:45
229
原创 安卓 Service 两种绑定方式
/ Service必须实现的方法,bindService方式才会用到,startService方式返回null即可// Service首次创建时调用(只执行一次)Log.d("MyStartService", "Service创建了")// 每次调用startService都会执行(核心处理逻辑的地方)Log.d("MyStartService", "Service启动了,startId:$startId")// 模拟后台任务(注意:Service默认运行在主线程,耗时操作需开子线程)
2026-02-07 15:33:08
478
原创 安卓编译时android.bp和build.gradle的区别
:用途:专为 Android 开源项目(AOSP)设计,用于系统级开发(如 ROM 内置系统应用)。构建系统:基于 Soong(替代 Make 的现代构建系统),与 Ninja 结合生成底层构建规则。环境:仅适用于 AOSP 源码环境,需通过 或 命令编译。:用途:适用于标准 Android 应用开发,通过 Android Studio 管理。构建系统:基于 Gradle(使用 Kotlin 脚本替代 Groovy),支持灵活的构建流程和插件扩展。环境:独立于 AOSP,依赖 Android Gradl
2025-06-20 16:34:48
659
原创 android.bp和android.mk的区别
Android.mk通过宏指定模块类型,需手动管理变量清空(CLEAR_VARSAndroid.bp模块类型通过前缀明确(如cc_library),无需手动清空状态。Android.bp 通过声明式语法和结构化设计,解决了 Android.mk 在大型项目中维护困难、效率低下的问题,是 Android 编译系统的未来发展方向。若项目支持,建议尽早迁移至 Android.bp,以获得更好的编译性能和开发体验。
2025-06-16 18:12:55
1111
原创 android通过adb push将app设置为系统应用
打开安卓手机、车机模拟器,在终端窗口(我用的是Power Shell)输入指令adb root我已经获取过了root权限虽然你在启动时使用了参数,但为了保险起见,你可以再次使用命令来确保系统分区是可写的。在命令行中执行:adb push/system/priv-app/ 或者adb push。
2025-03-06 18:00:25
2029
原创 在recyclerview中item布局使用databinding
本篇简单说说recyclerview中item布局使用databinding,大差不差,其实原理差不多。关键在于直接设置视图的对象属性,而不是一个个控件的设置。上篇说到了databinding的简单实用。2.使用recyclerview必须要初始化。3.recycleview的适配器。
2025-03-04 16:00:00
567
原创 android jetpack库databinding的简单实用
对跟布局 Alt + enter,选中Convert to data binding layout。(注意:使用非字符串类型的数据要显示在textview上要使用String.valueOf()。从这不难看出databinding有个好处:当数据为null时,他会不显示,而不是崩溃报错。2.将要使用databinding功能的xml转换为能使用databinding的xml。1.在build.gradle中开启databinding。4.在布局文件里定义你要绑定的数据对象。
2025-03-03 14:30:00
336
原创 ContentProvider获取系统app并通过RecyclerView展示
先定义App的bean类,具有app图标以及名字,这里使用kotlin语言。使用recyclerview必须使用适配器。
2025-03-01 09:30:00
326
原创 自定义布局实现简单View之间的联动(事件分发机制的拦截)
通过点击左边下边按钮控制右边布局拦截事件改变右边按钮2能否收到点击事件。右边最外层是一个自定义线性布局,继承自系统的Linearlayout。点击左侧改变状态按钮后,再次点击按钮2没反应,实现了点击事件的拦截|change2为左边按钮2,linear为右侧线性布局。改变前点击右侧布局按钮能收到点击事件触发点击效果。改变线性布局是否拦截事件。
2025-02-28 16:50:34
196
原创 安卓使用service模拟后台耗时操作
1.自定义一个service,service有两种绑定方式,这里采用启动式服务(Started Service)。2.在activity或fragment中启动此service。查看log可看到完整模拟效果。
2025-02-25 22:15:00
306
原创 安卓静态广播实现跨APP通信
1.在App2中自定义广播接收器响应的事件。4.App2接收到了App1发来的广播。需求:App1向App2发送信息。2.在App2中静态注册广播接收者。3.向App2发送广播。
2025-02-24 22:15:00
239
原创 安卓动态注册广播,并接受系统广播(WIFI状态改变)
需求:监听 Wi-Fi 状态的变化广播,并在接收到广播时将广播动作和 Wi-Fi 状态输出到日志中。通过这种方式,可以实时监控设备的 Wi-Fi 状态变化。4.启动App并开闭wifi可看到log日志。3.注意在清单文件中加上相关WIFI权限。2.在activity中动态注册广播。1.自定义广播接收器。
2025-02-24 21:30:00
372
原创 新版HarmonyOS 鸿蒙Next 5 预览器preview上下有白边的问题
针对HarmonyOS 鸿蒙Next预览器全屏后上下出现空白的问题,这可能是由于新版本(如5.0.3.500)默认行为变更导致的。把show satefy area勾选中可以看到,页面被限制在安全区内。在页面入口@Entry的struct中添加。
2024-11-19 16:30:13
579
1
原创 高德地图SDK黑屏,void com.autonavi.base.ae.gmap.GLMapState.setMapZoomer(float)
3、在app级的build.gradle android下引入(我就是少了这个才报错)我的build.gradle android是kotlin。2、在app级的build.gradle依赖下引入。1、app目录下导入官方的libs包。大概意思是没找到对应的api文件。
2024-11-14 13:38:15
494
原创 android安卓TextView实现自定义粗细
如果需要更加粗的TextView就需要自定义TextView。1、首先在attrs里定义TextView的属性。2、创建一个View,继承自TextView。默认的TextView能设置粗细。3、初始化获取定义的属性。4、重写onDraw方法。合起来的View就是。
2024-11-06 12:07:10
848
原创 Build Type ‘debug‘ contains custom BuildConfig fields, but the feature is disabled.To enable the f
安卓开发在运行时build.gradle配置了debug环境,且引用了BuildConfig 文件,但是找不到。解决方法:在项目根目录的。
2024-10-25 13:29:45
1598
2
原创 判断apk是否带so文件
将apk使用cool file viewer打开,或者将apk解压缩。如果含有lib带有各cpu架构的so文件,则该apk带so文件。
2024-10-20 12:30:00
347
原创 Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 4693 (GLThread 139), pid 4338
闪退报错:Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 4693 (GLThread 139), pid 4338。在配置清单文件文件中application中添加 android:allowNativeHeapPointerTagging="false"官方文档中有说明:似乎是targetsdk导致的不兼容问题。而我的targetsdk版本是34。
2024-10-16 18:07:01
1956
原创 CLEARTEXT communication to xxxx.cn not permitted by network security policy
原因:我的项目访问是http,Android 系统默认禁止了对明文 HTTP 站点的访问。在res/xml下新建network_security_config.xml。解决方法:在AndroidManifest.xml添加配置。
2024-10-12 16:14:40
549
原创 Linear gradient requires ‘angle‘ attribute to be a multiple of 45
测试反馈apk闪退,日志如下。必须是45的倍数角度。解决:打开as,全局搜索。将25改为45的倍数即可。原因:线性渐变的角度。
2024-10-11 11:45:39
454
原创 toolbar默认最左侧有空白间隙的问题
com.google.android.material.appbar.MaterialToolbar的左侧有空白间隙。解决办法:在布局文件中添加。可以看到空白间隙已经解决。
2024-08-01 11:27:48
294
原创 Immutable workspace contents have been modified: C:\Users\xxxx.gradle\caches\transforms-4\64
直接找到C:\Users\xxxx.gradle\caches\transforms-4\6449adf46cbc13099a0d674827aa4325.删除该目录即可。
2024-07-01 09:34:19
1158
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅