Android高级知识分享官
码龄14年
关注
提问 私信
  • 博客:234,781
    社区:23,623
    问答:557
    动态:92
    学院:16,966
    视频:4
    276,023
    总访问量
  • 11
    原创
  • 2,327,757
    排名
  • 191
    粉丝
  • 25
    铁粉

个人简介:安卓技术专家

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江西省
  • 加入CSDN时间: 2011-04-02
博客简介:

liaosongmao1的专栏

查看详细资料
个人成就
  • 获得103次点赞
  • 内容获得21次评论
  • 获得510次收藏
  • 代码片获得913次分享
创作历程
  • 20篇
    2025年
  • 160篇
    2024年
  • 62篇
    2023年
  • 58篇
    2022年
  • 42篇
    2021年
  • 1篇
    2018年
  • 4篇
    2016年
  • 4篇
    2015年
  • 6篇
    2014年
  • 1篇
    2013年
成就勋章
TA的专栏
  • 鸿蒙
    23篇
  • android系统
    107篇
  • 分屏
    14篇
  • Framework
    107篇
  • WSM
    33篇
  • pip
    3篇
  • 投屏
    2篇
  • 嵌入式
    4篇
  • andoid
    72篇
  • andoid c++
    8篇
  • java
    1篇
  • gif
    1篇
  • gradle
  • linux gradle
  • android命令行gradle
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    spring架构
  • 服务器
    linux
TA的社区
  • 王雨晨的课程社区_NO_1
    2 成员 104 内容
    创建者
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

漏学Input知识系列之“偷”走了其他窗口的事件pilferPointers

偷”走了其他窗口的事件,本质实现就是调用pilferPointers方法,实现让其他窗口收到CANCEL事件,同时派发的窗口列表中移除非token的window,后续事件派发时候,只派发给token对应的window。更多framework实战干货,请关注公众号“千里马学框架”
转载
发布博客 2025.01.17 ·
11 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

千里马社群学习初次尝试-如何解决安卓偶现类黑屏,闪黑等问题

一旦这类偶现问题频繁出现会给造成很差的用户体验,但是这类问题又是偶现的,对于测试或者开发来说都是基本上束手无策,测试不知道这类偶现问题什么时候出现,无法抓取设备对应有效分析现场资料,开发无法得到偶现问题的资料,也无法进行有效的分析。‌社群学习‌是指一群有共同学习目标和兴趣的人,通过线上或线下的形式,进行知识分享、资源互助和共同进步的组织。一个人学习某个知识可能认知和理解都会比较有限,一群志同道合的人在一起学习讨论某一个知识,分享各自的理解,观点和成果,这样可以大大扩宽知识面,提高学习效率等。
转载
发布博客 2025.01.17 ·
16 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

千里马2024年终总结-android framework实战

心里焦虑加大了,需要调节好平常心面对创业以来最大感受就是“创业艰难”,原本预想的很美好,终于可以有勇气为了理想和兴趣奋斗了,一定是每天满怀激情的干。实际情况是:当自己的兴趣与谋生的收入挂钩时候,一切变得不那么理想和美好。每天还是会有担心自己课程的销售情况,必然就会有焦虑,这种心态和上班兼职搞完全不是一回事。所以心态上确实是相比以前有焦虑一些,这个部分做的不够好。时间不够用创业初期,也没有很多资金搞团队,大部分工作都落到我的头上,比如一些售前咨询,课程研发录制,答疑服务等。
转载
发布博客 2025.01.09 ·
28 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

am trace-ipc使用小技巧之Binder服务端方法systrace打印剖析

这里的systrace打印跨进程的方法,不是针对所有接口都有哈,一般针对aidl文件实现的接口才有,因为都是会通过aidl工具进行编译时候植入相关trace,本质上要systrace可以看到更多完整的aidl接口相关调用,需要以下两步:2、抓取perfetto时候偶带上tag为aidlBinder通讯如何打印client调用堆栈即systrace查看对应方法
转载
发布博客 2025.01.09 ·
12 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

framework踩坑:aosp/lineageos系统apk签名导出到as进行使用

ps:这里最重要就是keytool使用的要和android studio对应的jre目录的一致,一定要注意这里的keytool要注意它对应的java版本,如果java版本不对会导致生成的platform.jks无法被android studio编译,会不断报错Invalid keystore format。经常做framework开发或者系统应用开发时候,都会有一个很熟悉的名词“系统签名”,因为有了系统签名才可以有比普通第三方应用更高的权限,很多核心函数才可以进行调用成功等。
转载
发布博客 2025.01.09 ·
24 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

安卓app/framework开发中meta-data数据剖析作用及实战

meta-data其实无论在普通app开发还是系统开发过程中都是非常重要的,可以在app的AndroidManifest中配置相关的自定义数据,然后在代码中可以获取到AndroidManifest配置的meta-data数据,不仅仅app进程自己可以获取到这个数据,其他进程也可以获取到这个meta-data数据,这样对于系统识别一些Activity特性时候就提供了重要的依据。更多framework相关技术干货,请关注公众号“千里马学框架”
转载
发布博客 2025.01.09 ·
32 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

学员作业:如何实现Android12版本以后Wallpaper设置以后Activity不会重启?

Android 12基于壁纸的主题设置工具“Monet”,将带来的全新主题设置工具可以从壁纸中选择颜色,并根据选择的颜色调整整个系统的配色,包括快捷设置、通知,还有设置菜单中的按钮和滑条等,这个新工具的代号为“Monet”.上面既可以看出,实际上壁纸切换后导致Activity重启其实属于一个功能,因为壁纸切换后会导致主题颜色等有变化,这样各个Activity相关的控件view等需要跟随壁纸颜色风格走,自然就会导致Activity要重新刷新。更多framework实战干货,请关注公众号“千里马学框架”
转载
发布博客 2025.01.09 ·
13 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

aosp15上winscope离线html如何使用?

文章中也说明在aosp15如果直接使用编译好的离线html是有问题的,无法正常显示抓取的Winscope文件。针对这样一个问题对于有些同学来说还是很不友好,因为很可能他们不想搭建node相关的环境,那么针对 aosp15上Winscope离线的html是否真的不可以使用呢?不过我们可能不关心原因,因为这块毕竟属于前端的知识,我们更关心应该怎么解决。
转载
发布博客 2025.01.03 ·
20 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

请收藏:如何确认uid对应的包名和进程-android系统必学小技巧干货分享

这里面就有这个from uid 10108,即看到uid = 10108,但是这个uid = 10108到底是谁呢?u0_a108 分为两部分,前面u0中的0代表就是userId = 0这个用户,除了0设备还有可能有其他用户比如常见的分身10,后面a108的108就是代表基于10000的累积是108,预先判断uid的值大小,一般普通的apk程序等,uid的值一般大于10000,这种uid大于10000情况确定可以使用直接计算法。那么就用这个108前面加上字符a,即a108去ps -A中进行搜索。
转载
发布博客 2025.01.03 ·
48 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

fallbackhome黑屏闪黑问题修改方案1:开机动画延迟退出时间-framework实战开发

核心思路:既然是因为开机动画退出后,fallbackhome显示期间有黑屏,正常launcher显示时候没有黑屏,那么就考虑把开机动画的退出时间延长,延长到正常桌面显示以后才退出。一般每个Activity显示后会回调onWindowsDrawn方法,所以可以在这里进行检测是不是launcher已经绘制了,如果绘制了既可以启动调用相关的开机动画结束的属性设置。(注意这里只针对设备没有锁屏的场景,有锁屏等考虑其他方案,不可以直接屏蔽)2、上面屏蔽了正常开机动画结束流程,但是开机动画具体哪里进行合适的结束呢?
转载
发布博客 2025.01.03 ·
20 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

学员作业:aosp14上黑屏/闪黑问题的分析及解决案例

但巧合的是前天有学员朋友在解决他们公司疑难bug时候,也有问道和这个fallbackhonme场景闪黑,黑屏问题,群里也进行相关答疑等讨论,后来认真确认后发现复现的场景就是一样的。有对aosp上模拟器有没有开机向导进行了深入的剖析,但是发现在第一次启动安卓模拟器时候,发现开机动画结束进入桌面时候,有大概3-5s的黑屏时间,这个问题当时因为我们重点关注是开机向导相关日志抓取,没有认真分析。aosp14-r5(其他aosp13,15应该也可以,但是没有确认哈)那下面来告诉大家黑屏问题复现步骤,及相关作业要求。
转载
发布博客 2025.01.03 ·
13 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

如何命令查看安卓设备上多核cpu的大小核情况

近来有学员朋友询问到了一个他做性能优化时候的一个疑问,那就是他不知道自己的手机设备上的一个cpu情况,他想要知道目前的平台哪些是cpu的大核哪些是cpu的小核,问马哥有没有啥命令或者方法进行查看,这样就可以不需要通过问其同事了,每次问都容易忘记,而且每个平台也不一样。一般平时常说的cpu大小核情况,其实说的是cpu一般情况下都是有多个核心的,和我们电脑上cpu是一个情况,但是多核心为了综合性能和功耗上都兼顾,就不能说所有核心都是大核或者小核,一般都是大小核都是共同存在的。cpu的4-7属于大核。
转载
发布博客 2025.01.03 ·
21 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

被“边缘化”的程序员应该如何破局??

上面就是程序员在工作过程中遇到“边缘化”的一些情况及如何面对解决“边缘化”问题,总结就是:面对“边缘化”任何时候都不要自暴自弃,一定要积极面对工作,因为你其实为自己工作,你提升自己工作业务能力才是核心,让自己在市场变得更加值钱,自身能力和修为提高了,你才可以不需要担心焦虑在当前公司被“边缘化”。
转载
发布博客 2025.01.03 ·
13 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Winscope中抓取window相关数据的原理剖析

因为Winscope是一个动态的过程,属于数据是不断变化的而上面只是开始抓取时候有往mBuffer中添加,那么是什么地方可以触发这个WindowTracing源源不断的打入log,即添加到mBuffer中?可以看出来这里会有一个很重要的 mRoot.dumpDebug,mRoot就是RootWindowContainer,它会迭代dump出来整个wms层级结构的所有数据的详细信息,这样也是浏览器上可以绘制层级结构详细信息的关键。然后主要看看WindowManagerShellCommand的相关的方法。
转载
发布博客 2025.01.01 ·
17 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Winscope中抓取Transaction相关的原理剖析

首先这个service call就是直接调用到SurfaceFlinger这个service的onTransact方法,1041代表是code,i32代表是data的int类型,1和0代表就是值。那么选着Transaction选项后抓取Winscope,看看winscope_proxy.py程序的相关输出,看看有没有线索可以查到是如何获取系统的相关Transaction数据。在使用Winscope过程经常会有如下的一些选项供我们进行选择,不同的选项最后就会展示不同的数据项出来。具体这些数据是哪里来的呢?
转载
发布博客 2025.01.01 ·
31 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

CallStack相关的编译报错undefined symbol正面解决方案

可以看到这里确实在编译InputDispatcher.cpp:356时候发现引入ld不到libutilscallstack库,所以导致无法找到符号表报错,但是明明我们确实cpp编译的bp中加入了相关的libutilscallstack,那这种应该怎么解决呢?注意这里如果模拟器整编还是报错,只能回退再编译,但是可以保存单编译libgui.so覆盖回退的,然后再触发打包既可以。这些编译都不是在编译libgui.so时候报错的,都是编译media相关库才报错的,也就是说其实单独编译libgui是可以成功的。
转载
发布博客 2025.01.01 ·
74 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

libgui中的BufferQueueProducer加入堆栈CallStack编译报错问题-大厂企业实战项目难题

这个也就是为啥会报错的原因,那么清楚了原来libstagefright_bufferqueue_helper,libstagefright_bufferqueue_helper_novndk对这个有依赖,那么是否可以直接在这个bp加入 libutilscallstack呢?针对调试和分析某个模块的源码时候,经常需要对某个方法进行堆栈的打印,java相关的代码都没啥问题,大家都可以很正常的打印出来,但是一些native的模块就不是那么顺利了。一看到这些报其实大家可能都一脸懵,不知道为啥会有这种错误。
转载
发布博客 2025.01.01 ·
22 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

记录app多年老司机如何快速上岸framework系统工程师-学员投稿

背景:今天特别感谢学员朋友小菜鸡的投稿,该学员朋友前一两个月才找到马哥报名的framework课程,前些天和我报喜说成功找到framework相关的工作,在这里再次恭喜他成果上岸framework工程师,马哥这边特别邀请他给大家分享一些学习framework的经验。下面开始学员朋友的学习framework的经验分享:-----------------------------------------------投稿开始--------------------------------------自己学习
转载
发布博客 2025.01.01 ·
15 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

aosp14/15上的针对单app录屏原理探索及自实现的方案讨论

时候,有给大家讲解过一个实战项目是针对某个app进行单图层进行截图方案,是不是和这个很类似,大家可以考虑一下是否可以进行简单的修改就可以实现对这个单app录屏功能。新版本的单独app进行录制视频功能的交互大概就是上面的,整个过程就是让用户可以选择一个app,然后启动这个app到前台,再进行单独录屏处理。这里针对aosp上实现单app录屏的进行一些代码的剖析,本篇不进行详细的源码分析,主要把核心原理给大家讲解清楚。如果针对单app进行录屏的功能要我们完全自己实现会如何实现呢?大家是否有相关的方案呢?
转载
发布博客 2025.01.01 ·
23 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

车机车载氢桌面的画中画功能技术调研部分

看到这里大家心里应该也是大概知道了氢桌面画中画的一个原理,本质上实现的方案就是采用了多个虚拟屏,也就是和原来的ActivityView是一个原理,一个ActivityView上面就装载一个虚拟屏幕,这些要并行的Activity都是启动到对应的虚拟屏幕上面既可以。这些信息也可以再次确定其实就是创建了对应的虚拟屏幕,这些虚拟屏幕就是ActivityView自带创建的,然后其他的Activity就可以启动到这个虚拟屏幕上,从而实现画中画等Activity并行功能。他的实现原理是什么呢?
转载
发布博客 2025.01.01 ·
41 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多