- 博客(214)
- 资源 (1)
- 收藏
- 关注
原创 Android 11 定制系统服务实战:从 Framework 开发到 APP 调用全记录
客户需要在 APP 层控制以下系统能力(普通 APP 无权限直接做到):这些能力分散在 system_server、SystemUI、PhoneWindowManager、sysfs 里,APP 无法直接触达。方案是做一个标准的 AIDL 系统服务 MmeService,跑在 system_server 进程,对 APP 暴露统一 Binder 接口;静默安装则由独立的 InstallerSystem 系统应用承接(system_server 读不了 sdcard,也不该持有安装权限)。三、Fram
2026-08-17 18:30:53
26
原创 Android 11 定制设置系统默认语言列表(en-US + zh-CN)与“添加语言“建议项
本文介绍了在Android 11系统上实现两个语言相关需求的修改方案: 修改一:在LocaleStore.java中添加代码,使"添加语言"页的建议列表出现中文选项。关键改动是在fillCache()方法中为zh-CN语言添加SUGGESTION_TYPE_SIM标志。 修改二:在Settings.java中修改首次开机时的默认语言列表设置,使其同时包含英语(美国)和中文(中国)。通过检查system_locales是否为空来判断首次开机,并设置默认LocaleList为"en-US,zh-CN"。 文章还
2026-08-15 13:52:26
46
原创 展讯平台 USB 存储未发送 MEDIA_MOUNTED 广播的排查与修复
展讯平台 USB 存储广播问题分析 摘要:展讯 SPRD Android 15 平台插入 USB 存储设备后,系统能正常挂载但应用收不到 MEDIA_MOUNTED 广播。通过代码追踪发现,问题根源在于 fstab 配置缺少 encryptable=footer 标志,导致 vold 服务未设置 kAdoptable 标记。这使得 framework 层的 isAdoptable() 返回 false,最终未设置 MOUNT_FLAG_VISIBLE_FOR_WRITE 标志,广播发送被阻断。全志 A537
2026-07-30 09:49:08
17
原创 Android 15 系统开发:按应用包名动态伪装系统属性
是系统底层高频接口,在里面打印日志会导致 logcat 刷屏,严重影响启动性能,甚至干扰系统服务日志分析。在定制 Android 系统的开发过程中,经常遇到这样一类需求:某些预装应用需要读取到特定的设备标识信息,而系统真实的硬件平台、产品代号与目标值不符。属性虽然直接,但影响范围太大,会导致系统其他模块、第三方应用、诊断工具全部拿到被修改的值,带来难以预料的副作用。执行之前,先判断当前进程的包名,如果是目标应用,就直接返回构造好的假值,完全不走底层属性读取。在 App 进程里,它会返回类似。
2026-05-30 16:56:51
63
原创 Android 15 AOSP 适配移动云电脑快捷键透传:解决 Win 键、Alt+Tab、Ctrl+Alt+Del 被系统拦截问题
采用本文方案后,只有云电脑 App 前台时才透传这些快捷键,其他场景仍保持 Android 默认快捷键逻辑。在 Android 15 系统上使用云电脑或远程桌面时,如果连接外接物理键盘,经常会遇到一个比较典型的问题:进入云电脑后,本方案适合系统定制场景,尤其是 Android 设备作为云电脑终端、远程桌面终端、办公终端使用时。也就是说,按键并没有完整透传到云电脑 App,而是在 Android 系统层被提前处理了。也类似,按下后可能触发 Android 本机应用切换,而不是云电脑内的窗口切换。
2026-05-15 14:42:44
236
原创 Android 11 系统级定制:深度重构 SystemUI 悬浮音量面板
在 Android 系统底层的定制开发中,SystemUI 的修改往往能带来最直观的用户体验提升。原生的 Android 11 音量面板是一个靠屏幕边缘吸附的整体卡片悬浮窗。如果在某些产品设计中,我们需要更加灵动、现代的 UI,比如 “将顶部铃声控制和底部音量条拆分为两个独立的悬浮胶囊”,该如何实现呢?本文将带你深入 Android 11 的 源码,一步步抽丝剥茧,完成音量面板的深度重构。完整源码与路径均已提供,建议准备好源码直接开干!我们需要在系统资源目录中创建四个背景与进度文件,以此实现真正的圆润胶囊
2026-04-18 23:17:41
2717
原创 Android SELinux 指南:从基本概念到实战修复
这就意味着,即使两个进程都有较高的系统权限,它们在 SELinux 里依旧可以、也应该被限制在不同的职责边界中。这篇文章会从最基础的概念讲起,逐步讲到 Android 中常见的策略文件、标签机制、日志阅读方式,以及一个完整的新服务实战流程。当你开始把 denial 看作一种设计反馈,而不是单纯的报错信息时,SELinux 就不再只是一个令人烦躁的门槛,而会变成帮助你理解 Android 系统结构的一把标尺。这意味着,Android SELinux 不是“文件权限加强版”,而是系统组件边界的一部分。
2026-04-04 14:50:35
446
原创 Android 16 通过 ADB 启动 Activity 实现恢复出厂设置
理想的方案是:通过一条 ADB 命令直接启动一个专属 Activity,由该 Activity 在后台静默完成出厂重置的广播发送,整个过程无需任何用户交互。并注册自定义 Action,我们以最小的代码改动实现了一条 ADB 命令触发恢复出厂设置的能力,非常适合产线自动化测试、压测循环或远程设备管理等场景。执行后,设备将立即进入出厂重置流程,无需任何手动操作。属性,在量产固件中需要评估安全风险,建议仅在工程版本或测试版本中保留,量产版本应通过编译开关或权限保护加以限制。,整个过程无界面闪烁,对用户完全透明。
2026-03-12 17:26:55
87
原创 Android 16 系统预置媒体文件自动拷贝方案
本文介绍了一种Android设备出厂定制中自动拷贝系统内置媒体素材到外部存储的方案。该方案采用三层架构:构建层通过PRODUCT_COPY_FILES将素材打包进系统镜像;启动层通过CoreStartable机制在SystemUI启动时监听开机广播;执行层使用MediaPreloadHelper在后台线程完成文件拷贝,并通过SharedPreferences保证幂等性。关键实现包括构建脚本修改、Dagger注入注册以及核心拷贝逻辑,可将素材自动复制到指定目录(如Pictures、DCIM等),提升用户开箱体
2026-03-05 16:06:32
90
原创 你不是不自律,你只是没找到那个开关
大脑不会记住"你做了什么",大脑记住的是"做这件事的时候你感觉怎么样"。但 Fogg 让我换了个角度看——那些看起来很自律的人,未必是意志力更强,只是他们有意无意地,给自己搭了一个更顺手的结构。Fogg 说,每次完成微小行为之后,你要立刻"庆祝"——对自己说一句"太棒了",或者在心里给自己竖个大拇指,甚至只是微微一笑。Fogg 不是让你用更大的毅力去坚持,而是让你把行为缩小到荒谬的程度——真正阻碍你的,从来不是"做完这件事",而是"开始做这件事"。BJ Fogg 会告诉你——不是你的问题,是方法的问题。
2026-02-10 14:08:24
400
原创 存款多少才能在超市不看价格?
钱就像做菜用的盐。没有盐,菜确实寡淡无味,难以下咽。所以我们在早期确实要努力赚钱,尽快脱离那个"无盐可用"的窘境。但是,盐本身不是一道菜。你不能光吃盐。如果我们为了搞更多的盐,而牺牲了食材本身——我们的健康、家庭、时间、生活——那就是本末倒置。更可怕的是,如果你往菜里放了太多盐,这道菜就彻底毁了。我们在攀登财富阶梯的过程中,最难的从来不是怎么往上爬,而是——知道什么时候该停下来,好好享用这道菜。
2026-02-09 10:29:35
606
原创 金字塔原理的核心原则,它如何提高我们的沟通效率
例如,不能将“财务问题”和“人事建议”混在同一个层级的列表中,除非你能在上一层找到一个能同时概括这两者的名词(如“公司面临的挑战”)。通过预先将信息归纳、分组并按自上而下的顺序呈现,你实际上是把“经过加工的成品”直接喂给受众,让他们不需要消耗额外的脑力去寻找逻辑关系,从而能轻松理解你的观点。这种方式通过描述受众已知的背景和面临的冲突,引出他们心中的疑问,而你的文章正是对该疑问的回答。金字塔原理之所以高效,是因为它顺应了人类大脑处理信息的生理特点,减少了受众在接收信息时的“脑力损耗”。
2026-01-30 17:41:24
572
原创 备忘 frameworks 里的 *ShellCommand.java
【代码】备忘 frameworks 里的 *ShellCommand.java。
2026-01-19 17:07:29
55
原创 Android 15 Settings定制:拦截“开发者选项”并添加动态密码锁
通过上述修改,我们成功实现了一个双重验证机制第一重(自定义):必须输入基于日期的特定暗号(如),此密码仅掌握在开发或售后人员手中。第二重(系统级):如果用户设置了手机锁屏密码,依然需要验证锁屏密码(保留了系统的安全性)。这种修改方式侵入性小,逻辑清晰,是 Android 系统定制中非常经典的功能实现。
2026-01-18 09:26:03
114
原创 【备忘】 展讯 Android16 屏幕休眠状态下插入 usb 充电不点亮屏幕
【代码】【备忘】 展讯 Android16 屏幕休眠状态下插入 usb 充电不点亮屏幕。
2025-12-20 20:36:10
68
原创 【备忘】 展讯 Android16 launcher3 默认无抽屉模式
【代码】【备忘】 展讯 Android16 launcher3 默认无抽屉模式。
2025-12-19 13:49:35
155
原创 【备忘】 Android16 Launcher3 AllApps抽屉页面显示铺满
【代码】【备忘】 Android16 Launcher3 AllApps抽屉页面显示铺满。
2025-12-18 23:21:47
79
原创 备忘 Android 16 通过 init.rc 开机完成后写入一个节点值
【代码】备忘 Android 16 开机完成时通过 init.rc 去写入一个节点值。
2025-11-20 14:28:54
65
原创 Linux 软链接与硬链接详解:Android 系统源码开发实战指南
软链接更灵活,适合动态场景(版本切换、分支跟随、目录引用)硬链接更稳定,适合静态场景(备份、多位置使用、空间优化)🚀 提高开发效率(快速访问深层目录)💾 优化磁盘使用(避免重复数据)🔄 简化版本管理(灵活切换配置)🛡️ 保护重要文件(安全备份机制)软链接是路径,硬链接是文件。根据实际需求选择合适的链接方式,让 Android 源码开发更加高效!Linuxlnman lnAndroid 源码编译指南:https://source.android.com文件系统 inode 原理。
2025-11-08 14:20:07
320
原创 备忘 GMS项目不显示 Launhcer 应用列表里的推荐最近使用 App
【代码】备忘 GMS项目不显示 launhcer 应用列表里的推荐最近使用啊app。
2025-11-07 09:35:05
114
原创 备忘 修复 展讯 Android 16 DreamSoundRecorder 录音列表界面不显示状态栏问题
【代码】【备忘】 展讯 Android 16 DreamSoundRecorder 录音列表界面不显示导航栏。
2025-10-28 20:55:19
67
原创 备忘 Android 16 展锐平台默认使用 boot.img 打包固件
【代码】备忘 Android 16 展锐平台默认使用 boot.img 打包固件。
2025-10-16 15:56:15
223
原创 Android 15 中禁用/启用应用的系统级方法
在 Android 15 的开发中,有时我们需要以系统级权限来控制应用的启用状态。本文将介绍如何使用 PackageManager 来实现应用的禁用和启用功能。
2025-08-02 15:39:55
382
原创 Android 15 限制APK包手动安装但不限制自升级的实现方案
通过这种方式,我们可以灵活控制Android设备上的应用安装行为,既保证了系统的安全性(限制新应用安装),又不影响现有应用的正常升级。这种方案特别适用于企业环境或需要严格控制应用安装的场景。
2025-08-02 14:39:32
538
原创 Android 13/14/15 默认授权应用权限的实现方法
Android版本修改方式实现原理13/14修改Permission.java将所有权限标记为Normal权限15修改DeviceIdleController.java + DefaultPermissionGrantPolicy.java监听应用安装并主动授权。
2025-08-02 14:22:33
2907
1
原创 Android 15 修改系统源码指定安装源
在 Android 15 中,有时需要限制应用的安装来源,确保只有特定的应用商店或安装器才能安装应用。本文将介绍如何通过修改系统源码来实现安装源限制,并解决安装源为 null 的问题。通过修改安装源限制:只允许指定的应用商店安装应用adb 安装拦截:阻止通过 adb 直接安装应用详细日志:便于调试和监控安装行为灵活配置:可以根据需要调整允许的安装源这种方法在企业管理、教育平板等场景下非常有用,可以有效控制应用的安装来源,提高系统安全性和管理效率。
2025-07-28 14:22:37
352
原创 Android 15 修改截图默认音量大小
在 Android 15 中,截图音效的默认音量可能过大,影响用户体验。本文将介绍如何通过修改系统源码来调整截图音效的默认音量大小。// 不同音量级别示例mediaPlayer.setVolume(0.1f, 0.1f) // 10% 音量(很小声)mediaPlayer.setVolume(0.2f, 0.2f) // 20% 音量(较小声)mediaPlayer.setVolume(0.3f, 0.3f) // 30% 音量(适中)
2025-07-28 13:59:01
168
原创 备忘 Android 15 根据包名屏蔽应用通知包括状态栏和下拉菜单
【代码】备忘 Android 15 根据包名屏蔽应用通知包括状态栏和下拉菜单。
2025-07-24 16:17:48
112
原创 Android 15 解决原生Calendar app 竖屏状态下菜单 => 点击更多 => 显示控件异常
【代码】Android 15 解决原生Calendar app 竖屏状态下菜单 => 点击更多 => 显示控件异常。
2025-07-16 15:33:40
84
ApktoolM-2.4.0-原版.apk
2025-02-08
Android 修改安兔兔等三方工具显示的屏幕尺寸 计算Ydpi apk 自动获取参数版
2024-07-15
Android 修改安兔兔等三方工具显示的屏幕尺寸,计算Ydpi apk calculateYdpi
2024-07-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅