杂项命令
文章平均质量分 84
千里马学框架
安卓架构师,安卓技术专家,android framework
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
安卓系统log日志分析都有哪些高效工具notepad++?
Notepad–是一个国产跨平台、轻量级的文本编辑器,英文全称 Notepad-double-decrease, 代号 Notepad-- ,简称 Ndd。Notepad–是notepad++的国产替代软件,支持Windows/Linux/Mac 平台和国产操作系统统信 Uos、麒麟 kinly 系统。gitee地址为:https://gitee.com/cxasm/notepad–原创 2026-04-08 15:07:24 · 359 阅读 · 0 评论 -
Android Automotive 15/16车载模拟器如何调多屏多音区功能?
车载模拟器因为有个特性和手机模拟器不一样,执行emualtor命令,车载模拟器会有热启动,就是可以秒启动上次模拟器,而不需要每次开机重启节省时间,但是这个热启动车载模拟器问题比较多,经常造成编译代码后不更新,或者容易模拟器整体冻屏等情况,所以建议大家每次启动使用恢复出厂设置命令,虽然麻烦一点但是能保证每次从头启动。基于上面学员们对车载模拟器的迫切多屏多音区的需求,这里进行马哥也进行系统中源码的调研,搜索,实践等终于给大家找到了解决办法。上图就可以看出车载多屏的出现,有驾驶舱,副驾驶舱,乘客舱等。原创 2026-04-07 11:02:23 · 331 阅读 · 0 评论 -
aospc/c++的native 模块VScode和Clion
VSCode 通过语言服务器和灵活的文件扫描机制,能够在不依赖完整构建系统的情况下实现代码跳转。而 CLion 依赖于 CMake 项目模型和编译数据库,确保了对大型项目的精确索引和跳转支持。因此,在使用 aidegen 生成项目后,若要实现完整的代码跳转功能,必须确保生成的 CMakeLists.txt 正确包含了所有源文件,并且存在有效的 compile_commands.json 文件。原创 2026-03-29 10:28:20 · 368 阅读 · 0 评论 -
Under the hood: Android 17’s lock-free MessageQueue(google官方原文)
针对国内无法访问问题,马哥这边联系相关学员帮忙搞出html文件,我这边进行格式等调整后进行转载,下面开始Under the hood: Android 17’s lock-free MessageQueue的原文分享,方便很多同学想要看原版google原文blog的同学。新系统的核心改进在于优化了MessageQueue的内存锁定机制,从而缩短了软件线程之间的等待时间。这两天学员朋友们在vip群,都在讨论google官方发布的blog,安卓17版本上google引入了无锁消息队,提升手机流畅度的文章。原创 2026-02-28 14:55:46 · 750 阅读 · 0 评论 -
安卓17版本上google引入了无锁消息队?老版本MessageQueue的锁解密剖析
马哥方便贴出一下相关的源码么,只是看到文章写的MessageQueue有锁竞争,但是没注意看哪里有锁,还有MessageQueue应该也还有native代码吧,也有锁么?正常java端进行发送消息,都是只需要有一个Handler调用sendMessage方法就可以,不管任何线程都可以调用Handler的sendMessage方法进行消息发送。这两天学员朋友们在vip群,都在讨论google官方发布的blog,安卓17版本上google引入了无锁消息队,提升手机流畅度的文章。原创 2026-02-27 16:26:37 · 574 阅读 · 0 评论 -
春节后如何高效投入工作?--祝大家开工大吉
不过,一些人的生物钟还停留在春节期间到处走亲访友,热闹非凡,一家人团圆,其乐融融的轻松惬意里,还没有走出假期营造出的心理舒适区,导致工作没办法集中注意力,工作效率低下,没办法重启工作模式,疲劳焦虑等症状。工作从简单任务入手,提前梳理并列出工作清单,明确优先顺序,让心理提前过渡。可以给自己半天到一天的缓冲期,优先处理整理文件、回复消息等常规性事务,逐步建立信心后再过渡到复杂任务。如果公司整体工作较少,因为很多,可以尝试多学习马哥课程,积极参与vip群的技术讨论,不断获取知识带来的成就感。原创 2026-02-25 09:12:16 · 70 阅读 · 0 评论 -
Samsung设备系统,app开发重大福利:免费设备远程调试不在需要买设备
大家经常在做系统开发,或者app开发时候,开发的app想要验证在某个品牌手机上是否完美运行,或者针对某个品牌的适配的一个功能是否正常,比如开发手机公司钱包相关功能集成sdk,适配手机公司折叠屏幕场景等,或者偶尔调研某个手机品牌的功能。这些时候情况下常规做法那就是你去买某品牌的手机,而且这个品牌可能手机机型比较多,每个机型都可能出现不一样的问题,所以这种对于开发者来说去买实体设备手机来测试确实是一个比较大的花费开销,而且各种机型都要的话也是一笔不少开销。所以针对开发者为了测试app需要花费大量金钱买设备这种痛原创 2026-01-23 10:48:24 · 975 阅读 · 0 评论 -
敏感权限如何自动授权?pkms的permission部分常用命令汇总
经常有一些同学在做安卓系统相关的一些定制时候,会有一些客户有需求要求对app的相关的敏感权限可以进行自动授权,一般这种需求其实相对来说要修改源码相关的白名单等方式居多,而且一般都是过不了google相关测试,那么有没有什么更加简单方式可以实现对apk的权限进行自动授权呢?那么今天马哥给大家介绍一下pm相关一些授权命令来实现对apk的自动授权部分,而不再需要权限相关弹框。在同学们自己知道这些pm命令可以进行相关的自动授权时候,再结合。,相信大家可以很容易的实现对敏感权限的自动。原创 2026-01-18 16:17:01 · 584 阅读 · 0 评论 -
车机AAOS系统开发调试:将 Pixel 设备用作开发平台
如果您尚未执行此操作,请启用开发者选项。依次转到“设置”>“系统”>“关于手机”,然后点按“build 号”七次。以下设备受支持,但未进行有效测试。您必须使用 Android 14,build 为 android-14.0.0_r30。在设备上,选择“解锁引导加载程序”。Pixel 6、Pixel 6a 和 Pixel 6 Pro。Pixel 7、Pixel 7a 和 Pixel 7 Pro。平板电脑不支持 GPS,位置需要“模拟位置应用或类似应用”您可能会导致设备变砖,请谨慎使用!原创 2025-12-29 09:26:44 · 941 阅读 · 0 评论 -
如何使用豆包手机的READ_FRAME_BUFFER权限截图密码画面
READ_FRAME_BUFFER权限确实是需要系统签名才可以使用的,默认不设置setCaptureSecureLayers(true)那确实无法截图到手势密码等secure画面,但是如果设置了setCaptureSecureLayers(true)就可以截图到各个secure的内容。但是文章也给大家留下了一个疑问,那就是具有READ_FRAME_BUFFER权限到底是否可以截图到手机上secure画面,比如银行等密码手势画面。注释可以看出是可以截图安全的layer到sc。原创 2025-12-18 09:54:03 · 638 阅读 · 0 评论 -
AI豆包手机权限文章补充:Mainfest中某个权限的protectionLevel具体是如何被系统定义的?
一般这里里面的关键signature,recents,role一般都是有在对应attrs.xml中有定义,是不可以随意对写一个字符signaturexxx,role1xxx的,这样写的不对会直接报错。上面xml其实也自带了相关的注释非常详细,大概意思就是protectionLevel中在xml中的只可以是上面这些,每个保护字符都是有自己的含义,具体含义可以看注释哈,这些字符都会变成一个个的int类型的数字。可以看到这里查找到了,原来是在attrs_manifest.xml中进行的定义。原创 2025-12-15 10:00:47 · 874 阅读 · 0 评论 -
系统开发必学技巧:安卓调试logcat/grep命令常用高阶技巧
在平常的安卓framework实战开发中经常会用到logcat来抓取分析相关的日志,同时也会结合grep进行过滤相关日志。但是这里明显只会过滤出带有TAG的关键字的日志,还有TAG1,TAG2,TAG3这些关键字呢?所以本文分析一些高阶常用的logcat和grep命令结合使用方法。命令,能高效过滤和分析Android日志,帮助快速定位问题。需要过滤日志中多个关键字应该如何呢?原创 2025-12-14 11:08:41 · 625 阅读 · 0 评论 -
android系统开发必会技巧:手把手教你framework层面依赖第三方静态jar
重点在看看这个bp。原创 2025-11-14 08:55:13 · 939 阅读 · 0 评论 -
aosp需求开发:java核心库libcore如何单编及打印log和堆栈
经常在aosp开发时候会使用很多的java本身的核心库,这个核心库的类本身就不是单独针对android开发的,而是各个平台都可以使用,就像我们电脑上eclipse编译运行java代码一样,完全不需要android部分的framework代码。那么这个时候系统开发可能经常就容易和app进行扯皮,所以需要考虑在System.exit等方法中加入相关的堆栈来证明app的退出是哪块代码触发的,所以就有需求在System.exit方法中加入相关的堆栈打印等。重点来了,请问写完这个代码后如何进行编译呢?原创 2025-10-24 10:41:53 · 759 阅读 · 0 评论 -
干货分享:aosp13锁屏壁纸部分原理剖析
这里主要就是到DataSystem目录获取对应的目录/data/system/users/0,加上锁屏壁纸对应的文件名字wallpaper_lock_orig,wallpaper_lock,构造出对应的File文件对象。到此服务端返回了fd后就业务完成,下面就是跨进程传递fd客户端,客户端拿到了fd后进行数据写入,这块回到最开头的WallpaperManager.java的setStream方法既可以。这里在设置的壁纸中就有壁纸设置的入口,选择正确壁纸图片,然后可以选着设置锁屏还是桌面壁纸。原创 2025-10-21 12:10:47 · 778 阅读 · 0 评论 -
安卓系统中线程优先级Priority查看方式汇总
在audio相关模块开发时候,会有遇到一些优先级比较高的线程比如快速混音线程FastMixer,但是这个快速混音中的快到底是如何体现的呢?其实有一个部分就是线程的优先级,优先级直接会影响线程的cpu获取情况,本文主要来给大家讲解一下如何获取查看系统中相关线程的优先级情况。可以看到其实这里看到静态priority是 96和101,和上面top获取的是有一个转换关系。FastMixer线程优先级为96 (real-time)这里主要看到 PR NI这两个值。原创 2025-10-20 10:53:30 · 385 阅读 · 0 评论 -
安卓如何查看settings是被哪个进程更新的?相关dumpsys命令剖析
经常在开发中会使用settings来保存共享一些数据,方便各个进程进行直接读取,这样就不需要额外写跨进程接口了,但是settings值也是可以被多个进程进行修改的只要这些进程是有权限和系统签名的话。这里我们采用adb shell的settings命令来更新一下enable_freeform_support的值,然后看看他的pkg名字是否在更新后有变化。明显看到这里的pkg变成root,其实也就是我们的adb shell哈,明显pkg不是原来的settings了。那么有没有更好的方法呢?原创 2025-10-18 11:55:06 · 1162 阅读 · 0 评论 -
aosp native源码基础: Futex同步机制实战剖析
Futex按英文翻译过来就是快速用户空间互斥体。Futex是一种用户态和内核态混合的同步机制。首先,同步的进程间通过mmap共享一段内存,futex变量就位于这段共享的内存中且操作是原子的,当进程尝试进入互斥区或者退出互斥区的时候,先去查看共享内存中的futex变量,如果没有竞争发生,则只修改futex,而不 用再执行系统调用了。当通过访问futex变量告诉进程有竞争发生,则还是得执行系统调用去完成相应的处理(wait 或者 wake up)。原创 2025-10-15 15:55:01 · 454 阅读 · 0 评论 -
系统开发干货技能:系统广播broadcast调试命令汇总
这个命令模拟了一个应用内定义的动作,并传递了多种类型的参数。原创 2025-09-24 11:09:12 · 826 阅读 · 0 评论 -
程序员跳槽频繁简历花怎么办??
当然可能有的公司会很严格等,这时候我建议你还是如实说明哪些公司和离职原因既可以,入职公司多了时间久远了偶尔时间短的不记得也正常,也不可能调查那么细致,最后大公司录用不录用还是会综合考察你的技术得分等,你如果技术业务上足够优秀,那么其实还是很大概率被录用。比如你阅读了岗位要求fw中input,wms,ams,分屏自由窗口等模块的,那么你的简历既可以修改强调这块的实战项目和重大成果等,把能与岗位进行匹配的所有优点重点突出,并且可以考虑修改就职公司中也有相关职位要求的模块经验。原创 2025-08-21 12:30:50 · 854 阅读 · 0 评论 -
零基础学习Dagger--google官方文档
务必先了解 Dagger 的优势及其工作原理的基础知识,然后才能在更复杂的场景中使用它。更多framework实战开发干货,请关注下面“千里马学框架”原创 2025-07-23 11:06:14 · 1117 阅读 · 0 评论 -
User手机上如何抓取界面的布局uiautomatorviewer
android studio上下载那些插件等,使用过程中都发现有需要设备是user-debug的,如果是user版本那就无法进行抓取。那么有没有什么方法课可以在user版本也进行抓取和进行相关的分析呢?uiautomatorviewer工具使用介绍在sdk中其实有一个自带的布局展示和抓取工具uiautomatorviewer,所在路径如下:如果安装了sdk,在~/Android/Sdk/tools/bin下面的uiautomatorviewer可执行文件.这里大家可以尝试执行一下:明显会报错哈,这里报原创 2025-07-09 14:41:33 · 911 阅读 · 0 评论 -
提升系统开发效率:Android 系统编译及搜索内容命令
jgrep Java/Kotlin 文件 grep -R --include=*.java jgrep “extends Activity”sepgrep SELinux 策略文件 grep -R --include=*.te sepgrep “allow system_app”mgrep Makefile 文件 grep -R --include=Makefile mgrep “LOCAL_MODULE”cgrep C/C++ 源文件 grep -R --include=-i:不区分大小写搜索。原创 2025-07-09 11:43:47 · 667 阅读 · 0 评论 -
Winscope在aosp 13/14/15版本的使用总结
这里说的是一般并不是绝对,其实本质就是只要各个版本之间设备上抓取的Winscope的数格式差异不大可以兼容就可以,但是一般aosp13以后几个版本这块数据格式都有修改,所以13版本Winscope不支持抓取展示14,15设备版本数据。因为Winscope这个网页软件肯定是会考虑老版本兼容的功能,所以一般Winscope网页是新的,是可以兼容抓取老版本安卓设备的Winscope数据,比如aosp 15版本Winscope支持抓取展示aosp13设备的数据。3、Winscope的版本直接兼容原则是怎么样的?原创 2025-07-05 00:07:13 · 2086 阅读 · 0 评论 -
如何解决AndroidStudio自带的LayoutInspector工具无法抓取到布局/StatusBar布局如何抓?
针对Android Studio的版本不一样,对应LayoutInspector无法抓取布局解决方法也不一样,解决方法本质就是寻找一个合适替代插件Plugin工具,上面展示了两个版本Android Studio的插件安装方法,大家注意尽量大家用Android Studio的插件市场搜索方式下载,这样可以最大程度减少插件兼容问题,每个as版本插件不一定相互兼容。更多framework实战干货,请关注下面“千里马学框架”原创 2025-07-02 15:06:00 · 2566 阅读 · 0 评论 -
干货笔记:安卓系统开发工程师必须掌握常用命令汇总二(不断更新)
经常做系统开发,经常会与Settings进行打交道,一般我们可能大部分去设置app里面找相关开关ui进行操作,但是经常有一些情况下一些新加的settings或者不常见的settings无法使用,这种可以直接使用命令进行调试就不要每次编写demo代码进行测试。本节在这个基础上进行额外增加一些实战工作提效命令,方便新手vip学员查阅,后续熟悉了其实也就不在需要查阅,大家一定要多在实际工作学习中多使用文章中命令,用这些命令来提升你的工作效率等。一般需要把cpp的如下屏蔽的define进行开放。原创 2025-06-09 12:17:25 · 663 阅读 · 0 评论 -
学员投稿:华为,ov等手机主流大厂桌面未读计数角标更新接口汇总
不过最简单方法当然是去网上搜人家现成开源的,当时我们就有参考github上一个开源的角标适配库,用它就可以实现大部分主流手机桌面的角标功能。有一个学员朋友就积极联系马哥,说他原来做第三方应用的,有负责过app在各个手机桌面显示角标功能,对这个角标适配深感麻烦,也非常希望google官方可以完全统一这一块的桌面角标功能各个手机厂商各自为战的情况。学员朋友也分享出来的了他以前适配各个手机厂商的桌面角标的相关详细接口调用,当时适配有10种手机的桌面角标功能。下面学员朋友开始分享app适配各个手机厂商的桌面角标。原创 2025-05-26 10:30:00 · 952 阅读 · 0 评论 -
想一想android桌面的未读计数角标应该如何设计呢?
角标是华为桌面提供给各应用一种展示未读信息的操作,以未读信息的数字合成一张图片并绘制到该应用图标的右上角。角标是华为桌面提供给各应用显示未读消息用的,会在应用图标右上角绘制一张消息条数的图标。原创 2025-05-25 08:30:00 · 1159 阅读 · 0 评论 -
面试福利:安卓系统framework开发面试题目汇总
列出的面试题目大部分都是有答案的,答案可以vip群获取,有的是没有答案的,毕竟是去人家公司面试的,面试官也不是马哥,当然也就没有相关的答案,不过看到题目大家一般都可以有自己的答案,大家不确定的可以vip群中丢出来讨论。5、binder通信中不同进程的指向同一个Binder服务的客户端请求服务端时使用的handle是否是相等的呢?12、判断权限的时候,经常会传入一个uid,这个uid跟多用户的userId有什么联系吗?3、既然后黑屏冻屏的问题,你说说你分析的这个几个问题,是怎么分析的?原创 2025-05-16 12:58:24 · 627 阅读 · 0 评论 -
安卓陌生知识点:IntentFirewall组件启动“防火墙”实战方式
源码位置:组件IntentFirewall的作用IntentFirewall是Android框架中的一个组件,它可以根据XML文件中定义的规则来控制Intent的发送和接收。Intent是Android中用于组件间通信和启动的一种消息对象,它可以携带动作、数据、类别等信息。IntentFirewall可以根据Intent的属性和调用者的信息,决定是否允许或拒绝Intent的传递,从而增强系统的安全性和灵活性。原创 2025-05-02 01:14:38 · 1059 阅读 · 0 评论 -
Android.mk必读的一些基础知识部分
(CLEAR_VARS):清除模块变量(如LOCAL_MODULE),需在每个模块开头使用。原创 2025-04-30 12:28:32 · 957 阅读 · 0 评论 -
干货笔记:安卓系统开发工程师必须掌握常用命令汇总(不断更新)
经常在做系统开发需要使用一些命令来查看某个模块相关的信息,根据这些信息来清楚了解模块当前状态,比如常用的dumpsys activity,dumpsys SurfaceFlinger等命令,这些命令其实用多了自然就熟悉了。属于非常高频命令,主要用来展示当前设备上展示的画面,图层信息,一般用于调试,定位一些显示异常等疑难问题,属于做系统窗口和显示开发必须会的命令。这个命令内容太多,一般在想要展示所有信息时候使用,但是因为输出内容太多,一般会用他的子命令,更有目标性。1、某个apk是否安装,apk的安装路径。原创 2025-04-27 13:16:01 · 1351 阅读 · 0 评论 -
system.img无法打包非PRODUCT_PACKAGES目标解析
不过在文件查找发现并没有我们新编译的目标没有加入PRODUCT_PACKAGES的文件,所以基本上我们就可以断定,aosp15相比aosp14就是在打包img时候,多了这个file_list.txt文件作为过滤依据,在打包img文件时候就是只会打包只有在file_list.txt文件中的,不在文件中也就不会打包。明显多了了个文件file_list.txt和file_list.txt.rsp,这里其实主要就是看file_list.txt文件既可以,可以看看它的内容。c.通过前置过滤机制保障输入目录纯净度。原创 2025-04-25 10:10:19 · 907 阅读 · 0 评论 -
aosp15 VSCode调试 native程序完整笔记
对于代码调试,原来也只实战讲解过Java代码在Android Studio进行Debug,虽然Debug不适用于所有场景,但是在分析源码堆栈,调用关系时候还是非常有作用,所以学员朋友们也一直希望native 代码也有很方便的调试Debug方法,可以看到native代码的调用堆栈,这样也可以大大提高native代码的分析效率。这个报错暂时也没深入查找原因,重启模拟器设备后,重新调试就好了,大家也可以尝试重启。c++/c部分代码 ---->使用VSCode进行代码查看。在开启调试过程中发现偶尔会出现如下报错。原创 2025-04-16 16:33:45 · 1015 阅读 · 0 评论 -
Android.mk和Android.bp同时需要定义一个目标怎么办?
如果Android.bp和Android.mk同时存在情况下,什么也修改,那么会怎么样呢?明显报错already defined ,这个其实完全可以理解,因为Android.bp和Android.mk都同时哟定义目标linux_thread。所以Android.mk和Android.bp要同时存在的话,必要考虑解决重复定义的问题,即一套代码只能允许一个生效,要么是Android.mk生效,要么Android.bp生效。原创 2025-04-14 12:50:55 · 1076 阅读 · 0 评论 -
Android.bp中添加条件判断编译方式
面临上面要适配多个机型差异的问题,大家可能第一时间会想到用不同的代码分支不就行了么,但是大家注意如果用不同的代码分支同时意味着每个分支的代码你都需要进行维护,维护工作量极大,也就是经常可能修改了一个bug,做了一个新需求,你不得不同步一遍到多个分支,这样一旦机型多了,差异多了,你的维护成本会越来越多。情况2:代码编译依赖api或者库都有差异,即会有编译上的差别情况,那么这种就一定需要通过Android.mk,Android.bp中进行相关的条件判断才可以。案例1:使用不通过的依赖代码文件夹。原创 2025-04-11 12:42:15 · 1770 阅读 · 0 评论 -
来看看文件监听的FileObserver的底层原理inotify实战demo
上面可以看出FileObserver本质都是调用的linux相关inotify接口,下面针对linux的inotify监听文件变化采用一个demo实战案例方便大家立即。1、自定义一个DataFileObserver继承FileObserver类,重写onEvent方法,一旦有文件相关变化时候就会回调这个方法。上面原理主要方法也有注释,这里可以看出ObserverThread主要还是一个线程类,主要核心业务方法都是调用到了native层面。在我们构造对应的FileObserver最后会调用到下面。原创 2025-04-09 10:11:19 · 695 阅读 · 0 评论 -
Ninja,Kati,Soong等知识深入扫盲
最开始,Ninja 是用于Chromium 浏览器中,Android 在7.0 中也引入了Ninja,因为随着Android系统和应用程序的增长,这种构建方式变得越来越慢,尤其是在大型项目中。为了解决这个问题,Google开始引入新的构建系统来提高编译速度和效率。Ninja是一个小型的、专注于速度的构建系统,最初由Google的程序员Chris Manson开发,最初用于加速Chrome浏览器的构建过程。Ninja的设计思路简化构建过程,通过精确指定输入和输出关系,实现快速增量构建。原创 2025-04-07 01:27:57 · 1171 阅读 · 0 评论 -
Android.bp如何快速掌握经验分享
定位与作用:Android.bp 是 Android 构建系统(Soong)的核心配置文件,用于定义模块的构建规则及依赖关系。它替代了传统的 Android.mk 文件,语法类似 JSON,但更简洁高效,支持模块化管理。发展历程:从 Android 7.0 开始引入,Android 8.0 后成为默认配置,基于 Ninja 构建框架,通过 Blueprint 解析,最终生成 Ninja 文件执行编译。原创 2025-04-06 01:05:51 · 1304 阅读 · 5 评论 -
自由开发者aosp源码修改部分如何提交保存上传服务器?-记录AI帮助我们实现过程
虽然AI无法完美满足你的实战需求代码,但是AI确实可以给你生成一个基本上可以用的成品代码,这个已经最少帮你节省了%70以上时间了,万事开头难,AI都帮助你开好了头,也帮你实现了一个基本可用的代码,你只需要在这个基础上改善完善他的功能,修复一些bug既可以,所以AI完全替代程序员这个事情是不太存在的,但是AI可以大大提升我们每个程序员的开发效率,让AI做出一些基本可用的模块类工作,节省我们大量的时间成本,我们程序员注意力集中在更高难度的一些AI无法实现需求和bug上。下面介绍2种常见方案来解决该痛点。原创 2025-04-01 11:25:58 · 1303 阅读 · 0 评论
分享