自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(381)
  • 资源 (3)
  • 收藏
  • 关注

原创 Ninja,Kati,Soong等知识深入扫盲

最开始,Ninja 是用于Chromium 浏览器中,Android 在7.0 中也引入了Ninja,因为随着Android系统和应用程序的增长,这种构建方式变得越来越慢,尤其是在大型项目中。为了解决这个问题,Google开始引入新的构建系统来提高编译速度和效率。Ninja是一个小型的、专注于速度的构建系统,最初由Google的程序员Chris Manson开发,最初用于加速Chrome浏览器的构建过程。Ninja的设计思路简化构建过程,通过精确指定输入和输出关系,实现快速增量构建。

2025-04-07 01:27:57 512

原创 Android.bp如何快速掌握经验分享

定位与作用‌:Android.bp 是 Android 构建系统(Soong)的核心配置文件,用于定义模块的构建规则及依赖关系。它替代了传统的 Android.mk 文件,语法类似 JSON,但更简洁高效,支持模块化管理‌。发展历程‌:从 Android 7.0 开始引入,Android 8.0 后成为默认配置‌,基于 Ninja 构建框架,通过 Blueprint 解析,最终生成 Ninja 文件执行编译‌。

2025-04-06 01:05:51 635 1

原创 android如何不修改系统代码拦截Activity启动禁止打开某些应用在车机行车过程?-学员答疑总结

这个学员大概思路就是,可以在桌面applist图标点击进行屏蔽,这个明显不行哈,首先不说改了Launcher代码,最重要是只是applist点击进行屏蔽根本无法覆盖,你能保证你的app启动都是通过桌面点击么,完全有可能其他场景,比如后台service启动,或者其他Activity拉起。注释明显看出IActivityController实际上是监测AMS一些实际的发生接口,一般用于一些测试来监测系统的Activity的一些状态,这个不针对普通第三方app,属于一个隐藏api,不过对于系统app肯定是可见的。

2025-04-02 12:32:14 646

原创 自由开发者aosp源码修改部分如何提交保存上传服务器?-记录AI帮助我们实现过程

虽然AI无法完美满足你的实战需求代码,但是AI确实可以给你生成一个基本上可以用的成品代码,这个已经最少帮你节省了%70以上时间了,万事开头难,AI都帮助你开好了头,也帮你实现了一个基本可用的代码,你只需要在这个基础上改善完善他的功能,修复一些bug既可以,所以AI完全替代程序员这个事情是不太存在的,但是AI可以大大提升我们每个程序员的开发效率,让AI做出一些基本可用的模块类工作,节省我们大量的时间成本,我们程序员注意力集中在更高难度的一些AI无法实现需求和bug上。下面介绍2种常见方案来解决该痛点。

2025-04-01 11:25:58 957

原创 android studio调试aosp手机userdebug版本无法查看局部变量和参数问题如何解决?

针对上面的问题,大家第一反应可能会说,既然eng版本没有问题,那么是否可以考虑编译一个整体eng的包不就行了?这种方法其实有条件情况下确实是一个最省事方法,但是很多时候出版本的不一定是自己,大家可能都是取公司编译好的版本用,然后修改自己模块push进去就行,所以很多时候不一定有完全eng的大版本可以使用。因为我们都是使用模拟器居多,模拟器编译的版本一般都是eng版本,所以没有这个同学问题,针对这样一类问题一般都是可能和自己的手机设备版本类型有关系,这个有问题版本确定是一个userdebug版本。

2025-03-28 13:37:56 535

原创 你知道桌面和壁纸Wallpaper都接收触摸事件原理吗?--第二篇

更多framework实战干货,请关注下面“千里马学框架”

2025-03-27 12:57:09 688

原创 聊一聊安卓WallpaperService壁纸窗口触摸事件接收原理-第一篇

1、壁纸窗口本身在创建时候就已经有创建好对应的InputChannel,而且也会和正常窗口一样会有InputWindow在InputDispatcher,而且位置一般处于最底层2、要让壁纸可以接收事件,需要调用 setTouchEventsEnabled(true),主要是把Window不进行设置NOT_TOUCHABLE的flag。

2025-03-26 11:32:43 1027

原创 wms窗口/多窗口/自由窗口systemui侧边栏手势退出实战-学员作业

简单说就是学员朋友反应自由窗口置顶后,发现无法通过systemui的侧边栏返回手势进行返回了。课程时候,有一个需求就是实现自由窗口置顶的功能,这个需求实现后,自由窗口就会一直处于顶端,不会因为打开其他Activity导致自由窗口退出。明显看到焦点输入在自由窗口上,但是操作侧边栏依然是底部的联系人窗口退出的,自由窗口的联系人无法退出。2、设置自由窗口为置顶模式,让自由窗口处于顶部,具体方法可以看马哥分屏课程自由窗口最后一节。可以看到要实现的目标就是侧边栏滑动后退出是有焦点顶部自由窗口Activity。

2025-03-25 10:11:35 308

原创 安卓15/aosp15/lineage21使用brunch编译老是报错OOM内存不足

原理:因为breakfast,brunch其实属于lineage os自定义的函数帮助我们包装了一些操作而已,本身aosp是没有的,lineage os本质还是基于aosp的,所以自然aosp的所有编译命令也可以正常使用。1、物理解决方法,直接增加内存条,把内存变成64G,这种方式可能最简单啥也不需要改变,不过很多同学可能也有条件限制不一定可以,比如内存插槽不够,或者是内存条贵。2、增加swap虚拟内存,这种方法也是可以的,但是也需要消耗相关的硬盘空间等,需要重新扩展swap。

2025-03-19 16:22:12 507

原创 安卓面试题:第三方App如何ANR监听之SIGQUIT信号方案

正常在产生ANR时候,都会发送一个SIGNAL_QUIT信号给app进程来实现退出,所以就是抓住这个信号的发送与接受作为切入点来实现监测ANR。

2025-03-19 01:14:46 739

原创 安卓黑屏,空白屏,不显示等系统疑难问题-千里马直播讲解带你解决

工程师来说可能根本不知道如何入手分析这类黑屏,白屏,不显示等系统疑难问题,马哥也对这块非常重视,无论是vip课程还是平时vip群讨论,都给大家准备了很多实战案例给大家进行实战解决这类疑难问题,不完全统计这类案例数量大于10个,目的增加vip学员们这块疑难问题的实战能力。在作业布置出去后,很多vip学员们也纷纷尝试分析解决该问题,因为说实话这类问题确实是不可多得的实战机会,所以vip学员朋友们都非常珍惜,广大非学员网友也请珍惜,这种问题后续可能马哥这边就只对vip内部进行分享,不再公开哈。

2025-03-15 12:17:41 353

原创 聊一聊binder传递文件fd原理及新版本性能优化

上面可以看出与老版本巨大差别在于,新版本根本没有直接在binder_translate_fd中获取target_fd和install target_fd到file,只是构造了binder_txn_fd_fixup对象,赋值file后,然后加入到事物t的fd_fixups列表中。‌收集阶段‌:在源进程的 Binder 线程中,通过 binder_translate_fd 收集所有待映射的 fd,形成 fd_fixups 链表。下面看看真正干活的binder_apply_fd_fixups。

2025-03-13 15:45:19 1072

原创 看一看系统Task都为啥不显示的问题--学员作业

这个MyTaskOrganizer主要就是在构造时候有调用registerTaskListener,这个最后会调用到TaskOrganizer自带的registerOrganizer方法中去。其实从修改可以看出来,只是简单的构造了一个MyTaskOrganizer就会导致桌面Task无法显示,整个复现过程其实都属于程序员正常写代码行为,但是就是出现了个Task不显示问题。上面现象可以看到明显系统启动后桌面已经不显示了,那么就是针对这样一个桌面不显示问题作为学员作业布置给大家来进行探索。

2025-03-11 09:45:38 227

原创 做一做native层面消息实战Looper,Handler,Message

在了解了整个消息机制的原理后,可能大家对消息机制都有了一个新的高度。但是想要进一步的深刻理解消息机制的作用,那么还是需要针对消息机制进行相关的实战使用。大家在java层面经常都会使用到Hander,Message,Looper,但是学习了前面的消息机制后,其实native层面也是完全可以和java层一样使用消息机制,所以本文主要在native层面来使用Looper,Message,Handler组成的消息机制。回顾了Java端的消息机制使用流程后,再来写native的就方便多了。

2025-03-10 00:57:06 314

原创 聊一聊 Android 的消息机制

在 Android 平台上,主要用到两种通信机制,即 Binder 机制和消息机制,前者用于跨进程通信,后者用于进程内部通信。从技术实现上来说,消息机制还是比较简单的。从大的方面讲,不光是 Android 平台,各种平台的消息机制的原理基本上都是相近的,其中用到的主要概念大概有:1)消息发送者;2)消息队列;3)消息处理循环。示意图如下:图中表达的基本意思是,消息发送者通过某种方式,将消息发送到某个消息队列里,同时还有一个消息处理循环,不断从消息队列里摘取消息,并进一步解析处理。

2025-03-09 09:56:22 893 1

原创 安卓binder驱动内核日志调试打印开放及原理(第二节)

这里看到binder_debug_mask赋值一共两个地方,有一个初始值,有一个传递到module_param_named方法中的,其实binder_debug_mask的改变就是靠这个module_param_named方法,下面我们来重点讨论一下module_param_named方法。当通过echo xxx > debug_mask命令,会触发动态修改module_param_named的第二个参数binder_debug_mask值进行改变,一旦binder_debug_mask改变就会。

2025-03-07 15:10:03 705

原创 用IdleHandler来性能优化及原理源码分析

因此,在 UI 主线程相对繁忙时,通过 IdleHandler 来分摊任务,可以让系统先处理用户的核心交互,就比如onCreate是生命周期方法,如理里面初始化太多东西影响冷启动速度,针对一些可以延后不那么紧急任务可以待系统空闲时再处理任务,充分利用 CPU 空闲时间。它允许开发者在主线程处于空闲时,执行一些低优先级的任务。3、如果IdleHandler的queueIdle返回false则会从mIdleHandlers删除,下次空闲就不会在执行这个IdleHandler,否则true的话会每次空闲都执行。

2025-03-06 21:41:57 1083

原创 安卓binder驱动内核日志调试打印开放及原理(第一节)

经常有学员朋友在做系统开发时候,有时候遇到binder相关的一些问题,这个时候可能就需要比较多的binder相关日志,但是正常情况下这些binder通讯的的内核日志都是没有的打印的,因为经常binder通讯太过于频繁,如果正常版本都开放出来这些binder调试日志,那样会让系统卡顿,影响性能。所以只需要对debug_mask写入 8既可以实现让binder的中所有BINDER_DEBUG_OPEN_CLOSE相关binder_debug打印出来。下面给大家介绍一下相关的打开日志的命令。

2025-03-04 00:39:55 737

原创 桌面最近任务展示Task缩略图源码剖析

这里主要是通过ActivityManagerWrapper.getInstance().getTaskThumbnail接口来进行ThumbnailData获取,ThumbnailData就是代表缩略图相关的对象,获取到了ThumbnailData数据后就可以进行对应缩略图展示。反正最后调用putSnapshot进行缓存当前taskId的Snapshot,那么接下看看这里的Snapshot是怎么来的就相对简单了。这里又会调用到TaskSnapshotCache的,注意这里这些注释时时刻刻体现不要持有大锁。

2025-03-03 01:46:08 997

原创 程序员失业了应该如何调整好心态?

在失业后的第一时间大家切记不要着急投递各个公司简历,然后没有准备的去面试,这样的面试成功率会大大降低。大家最后按以下几个步骤进行找工作:1、了解行业人才需求,一定要先分析清楚自己行业的就业情况,招聘网站看看相关招聘需求,自己行业公司需要什么人才,自己的知识技能是否可以完全cover,比如你会发现纯android app可能岗位很少,有app岗位也发现要求framework相关技能,这个时候你就得考虑自己是否要深入framework这块知识点。

2025-03-01 17:20:06 918

原创 手机大厂如何处理安卓分屏退出后最近任务显示一半问题?

其实这种解决方法理论上也是可以做到的,但是逻辑上是不合理的,因为最近任务只是展示task曾经的一种状态,即task显示的内容肯定是已经展示过给用户了,如果我们是从分屏退出,其实task对于用户来说只展示过分屏的task画面,没有展示过task的全屏画面,但是如果因为我们强制想办法修改相关逻辑,让最近任务显示全屏task的内容,这个反而会让用户觉得很奇怪,为啥我都从来没见过task全屏画面,但是在最近任务里面却显示是task的全屏画面。直接不让截图到半屏,只要进入到最近任务就是让task全屏,截图到全屏呢?

2025-02-27 11:28:28 582

原创 android系统死机hang机冻屏问题如何分析?am hang命令原理剖析

明显上面堆栈中可以看到,在执行ActivityManagerService.hang方法时候,一直持有locked <0x0dc0cc58> (a com.android.server.am.ActivityManagerService)这个锁,而且一直处于还一直处于wait状态不释放。针对这类系统冻屏,死机,hang机问题分析的流程其实和系统ANR问题分析基本一样套路,今天就以系统中的自带命令am hang模拟让系统出现死机,冻屏这种现象,然后我们通过trace相关来反剖析出am hang命令相关原理。

2025-02-25 11:04:02 1038

原创 kill只是杀进程吗?信号部分实战--系统开发必学linux基础知识

上面针对linux信号的基础知识进行了相关的学习和巩固,并且也进行了相关的实战开发。主要对信号的概念介绍,信号的实战处理,信号的发送,上面也分享了相关的运行代码,大家可以直接在Ubuntu上进行编译验证,这个代码可以不需要在android平台编译运行。学习了信号相关知识以后,大家在平常看android系统相关信号处理,信号发送代码时候就不会那么陌生。更多framework实战干货,请关注下面“千里马学框架”

2025-02-24 10:42:06 705

原创 如何避免重要app进程被系统lmk-lowmemorykiller杀掉-实战源码

经常在系统内存出现低内存不够情况下会触发low memory kill掉相关的应用进程,其实本来这个就是系统的一种自我保护机制,lmk目的是为了保护系统的正常运行,根据系统内存情况和系统应用的优先级adj值,然后杀掉哪些adj值高的系统应用,adj值高代表优先级低。(注意:虽然下面会给大家介绍相关的方案,但是还是建议大家要非常慎重使用该方案,一般情况下不要让自己系统应用不被杀,而是应该考虑完善自己系统应用功能,哪怕被杀了也可以正常保留相关数据和及时重启)2、设置对应的白名单包名,进程名字到prop。

2025-02-21 09:28:50 640

原创 疑难ANR原因分析-冻结导致直播讲解相关完整笔记

日志可以看出ANR是在pid=3930,原因是因为MotionEvent在5秒前就已经发送,但是Gesture Monitor] Screenshot这个接受者根本没有响应导致,这里也打印表面原因就是Gesture Monitor] Screenshot没有响应导致的ANR,注意这里的。明显可以看到InputDispatcher确实有在ANR时间的5秒前有进行相关的该事件派发,这里看看派发中是否有带上我们的 Gesture Monitor] Screenshot。2.3 查看ANR时候派发的事件。

2025-02-18 23:07:42 801

原创 ANR问题基于aosp14修改monitor事件导致的复现及测试分析-学员作业

那么他这个anr到底是怎么复现的呢,具体是个啥情况呢?针对这个ANR问题,我与该学员沟通了解情况后,发现他这种anr问题明显不是常规的那种app某个地方执行耗时导致的卡顿,所以常规那种抓取anr trace来分析定位的套路明显就不行了。需要复现该问题,其实需要对系统正常的相关源码进行一些修改才可以,学员朋友也是一样,他修改了相关源码引入了ANR问题,但是又不知道怎么引入的。昨天有相关学员朋友一直在vip群里提出他的一个ANR问题,一直说自己分析这个ANR完全没有相关的头绪。2、分析出anr的原因。

2025-02-14 07:15:00 425

原创 defaultPassthroughServiceImplementation在android新老版本的差异

但是这里看到对应的构造Interface::getService,可以看出这个Interface其实是依赖我们传递模板,这个getService其实实现是hidl工具编译自动生成的。这个注册服务方式以前安卓8.1老版本的其实还比较常见,新版本安卓没有再使用这种方式都是使用如下方式。这里面说明了目的就是为了减少相关的对接口库相关的强依赖,想直接通过名字这种方式进行注册,实现松耦合。有学员朋友很可能就被它的名字误解了,以为这个就是直通式,这块比较疑惑,同时。

2025-02-12 12:01:28 523

原创 小米手机解锁刷lineage os踩坑记录

学习framework课程时候,很多学员朋友问我是否需要买开发板啥的,我经常建议买个便宜二手小米手机然后刷开源的lineage os系统既可以,这样做的性价比最高,二手小米手机等价钱较低,而且还可以刷入有系统源码的lineage系统。但是针对小米手机的解锁部分,很多同学都发现有点难搞,经常还需要去花钱请求淘宝外援10-20块来远程控制帮忙解锁,今天针对小米手机的解锁到刷入lineage系统来手把手指导。注意如果解锁失败一般会有相关的提示,主要就是账号要绑定,要插入sim卡等,这些步骤不能少。

2025-02-11 08:00:00 1195

原创 sysprop变化通知native层面实现[验证通过]

整体非常非常简单,只需要调用add_sysprop_change_callback既可以,参数就是callback方法。2、prop变化回调部分,native其实本质就是放入了一个方法指针既可以,有prop变化通知后,会执行传递进来的方法。1、无论java还是native,通知prop变化其实都是通过跨进程通讯调用SYSPROPS_TRANSACTION。可以看到确实有相关的,不过这里会有连续两次回调打印,哈哈,这个你知道为啥吗?可以看到这里有调native_add_change_callback方法。

2025-02-09 09:30:00 677

原创 安卓prop/SystemProperties如何监听值变化

这里先来一个实战案例给大家展示一下具体如何对prop的值的进行监听变化及通知变化。1、监听方法/*** changes.* @hide*/这里监听比较简单,只需要添加一个callback既可以,也可以看出这里并没办法和settings那样针对某一个值进行监听,这里相当于是只要有prop变化通知发出,就会收到回调。2、通知prop变化的相关方法2.1 ActivityManager中的notifySystemPropertiesChanged方法/*** @hide*/@TestApi。

2025-02-07 11:25:54 1102

原创 lmk内存压力测试工具mem-pressure源码剖析

因为这种低内存问题本身就不属于一种功能操作类型的问题,属于一种系统当前可使用的内存少导致的问题,所以分析这类lmk低内存被杀的情况迫切需要一种可以帮助我们复现系统低内存的工具,今天马哥就给大家介绍一个内存压力工具mem-pressure详细使用和源码剖析。系统的mem-pressure并不是自带集成的,需要集成这个mem-pressure工具是需要自己进行额外编译的,所以要先进行编译mem-pressure的bin文件后再使用。3、子进程内存达到极限被杀了后会打印出申请的内存值。1、不断创建新的子进程。

2025-02-05 23:58:06 679

原创 自由窗口边框阴影描绘方案汇总-社群讨论学习

可以采用Windowless图层,让Windowless图层需要挂载在Task的父亲,而不是Task哈,因为Task本身被设置了WindowCrop,会裁剪掉面积大小,导致显示异常,所以这里要挂载到Task的显示区域大的父亲上。然后在GPU绘制时候,可以考虑使用skia绘制一个阴影图层,这个在SurfaceFlinger中gpu合成绘制时候是可以使用skia相关的api绘制阴影,具体skia代码如何绘制实现可以参考原来。2、阴影View正常要比Task区域显示要大一些,这样才可以有外阴影的效果。

2025-01-26 11:06:25 451

原创 社群讨论笔记-aosp13/14为什么要Windowless/SurfaceControlViewHost

这些其实都是采用Windowless的方式添加上去展示的,Windowless可以简单字面意思理解为无窗口的画面,即可以看到显示内容画面,但是它并不属于WindowState。3、理论上所有Windowless显示内容都可以使用正常WidnowState显示,但是因为wmshell中有很多额外窗口需求,这样可能会需要额外增加比较多的窗口类型type,这样针对一些少见业务场景,然后去改动整个wms层级结构树的业务成本太大,即实现了一些业务窗口与整个系统窗口结构管理的解耦。

2025-01-23 10:16:09 363

原创 安卓14自由窗口圆角处理之绘制圆角轮廓线

因为本质上划线只是一个自定义的OutlineLayout,所以只需要把当前的绘制矩形变成绘制圆角矩形既可以,但是绘制圆角矩形肯定需要圆角的半径和自由窗口的圆角半径保持一直,所以这里需要把自由窗口圆角半径设置给OutlineLayout。2、针对使用canvas.drawRoundRect绘制圆角的矩形。下面就带大家来解决这样一个小需求小问题。1、提供设置圆角半径的接口给外部。

2025-01-22 11:24:19 651

原创 重学分屏之进入分屏进入动画Splash Screen图层剖析

本文主要带大家认识了一个新的StartingWindowType:STARTING_WINDOW_TYPE_SOLID_COLOR_SPLASH_SCREEN,它主要就代表当前SplashWindow展示的固定的一种颜色背景,没有Icon图标展示。在分屏进入动画过程中其实是也可以看到Splash的图层,但是真实画面录屏看不出来,其实是因为纯色背景自身有alpha值后就看不出来,还有就是Splash窗口自身在真实Activity启动后Splash窗口自身也会有相关的隐藏背景内容的情况。

2025-01-20 22:09:22 1045

原创 跨进程高级玩法方案2-学员分享

大家明显可以看到这里的IDisplayManager.aidl文件被缩减成了只有两个方法,其实这个IDisplayManager.aidl文件属于原生系统的阉割版本,但是因为我们的需求就是获取的getDisplayIds,DisplayInfo.aidl是因为第一个接口getDisplayInfo需要的一个依赖,所以这个阉割的aidl也是完全可以满足的。缺点:需要针对每个跨进程的接口进行详细的细分,特别是组装和拆装parcel对象,这个每个接口都不一样,而且也比较容易出错。上一篇文章已经分享了相关的方案。

2025-01-19 23:20:10 522

原创 安卓java端service如何在native进程进行访问-跨进程通讯高端知识

因为跨进程通讯本质上都是需要通过native端,虽然服务端或者客户端是java端,那都是先经过了native端再jni调用到java的,所以完全是可以实现客户端和服务端不要求两个都属于native或者java,完全可以native和java互通。代码1处的intTRANSACTION_getDisplayIds=2,注意这里的2就是从aidl对应的java文件中获得的,所有这个就是为啥要一定要找一个aidl文件生成的参考代码。,相信大家只要实战过马哥跨进程通讯课程肯定就对这个题目有自己的思路和方案。

2025-01-18 22:48:30 1200

原创 aosp系统源码aidl文件如何查看对应生成的java文件-安卓系统开发实战小技巧分享

方案1、直接拿到aidl文件后,使用最aidl命令来手动生成对应的java,或者c++等代码,这种方式优点就是简单方便直接,只要有aidl文件既可以,但是因为系统的aidl文件可能依赖很多系统类和代码,所以这里针对系统的复杂aidl文件手动生成可能就不合适了,较为麻烦。上面发现根本找不到IDisplayManager.java文件,只能找到一堆的IDisplayManager.aidl.d文件,这个不是我们想要的,那么该怎么处理才可以有马哥上面的IDisplayManager.java。

2025-01-17 00:09:09 945

原创 学员答疑:安卓分屏窗口的TouchableRegion设置流程追踪

在framework系统是属于一个很复杂的体系,每个小分支都会有很多不同的处理方式等,所以当使用正规的思路打堆栈分析不出来时候,不应该直接放弃,更应该从逆向,或者多角度来尝试探索分析,这样才符合实际项目中遇到各种问题都可以使用学习的知识灵活应对,而不是仅仅套一下模板,一旦有一些异常变化就又不知道如何分析,教给各位粉丝的知识一定要活学活用哈,整体理解多角度分析。更多framework实战干货,请关注下面“千里马学框架”

2025-01-15 23:55:11 1032

原创 干货答疑分享记录:as导入问题,LSP含义,分屏进入SplashScreen

正确解答其实在ActivityManagerService类中本身有对这个LSP等进行解释,其实指的是锁的范围。学员疑问在正常情况下Splash窗口都是有Icon的,这里明显没有看到有Icon,只看到一个背景图,这个是为啥?3、学员询问分屏过程中请问到底有没有Splash Screen的画面展示,看到有图层,但是没有看到有Icon。对相关的android.iml进行了相关的修改,把sourceFolder放到最顶部了。正常打开App时候,展示的SplashScreenView的相关打印。

2025-01-15 13:52:58 1224

千里马android framework学习课程资料下载

千里马android framework学习资料下载 车载车机系统开发,android 系统源码 aosp 11/12/13/ wms学习,android系统闪黑问题解决 车载多屏互动实战项目经验 surfaceflinger图层实战应用 input全局触摸实战 冻屏触摸问题分析实战 深入理解framework重点模块wms 胜任wms相关的需求开发 掌握系统闪黑,冻屏疑难问题解决 成为业界wms/ams模块专家打下基础

2023-06-28

新加一个app源码到packages/apps编译Android.mk

Android Framework开发之新加一个app源码到packages/apps编译Android.mk配置 hi,粉丝朋友们大家好! 近来有朋友反馈在看我的android framework实战开发合集课程时候 (https://download.youkuaiyun.com/combo/detail/2202) 需要购买可以参考直接找千里马最优惠:https://blog.youkuaiyun.com/learnframework/article/details/124086882

2022-04-16

haxm-windows_v7_5_1新版本github.zip

Enable VT-x in your BIOS security settings, ensure that HAXM is installed properly. Try disabling 3rd party security software if the problem still occurs.问的解决方法 原文链接:https://blog.youkuaiyun.com/learnframework/article/details/117537868

2021-06-04

Android Framework学习资料,系统开发,Framework开发

千里马android framework学习资料下载 车载车机系统开发,android 系统源码 aosp 11/12/13/ wms学习,android系统闪黑问题解决 车载多屏互动实战项目经验 surfaceflinger图层实战应用 input全局触摸实战 冻屏触摸问题分析实战 深入理解framework重点模块wms 胜任wms相关的需求开发 掌握系统闪黑,冻屏疑难问题解决 成为业界wms/ams模块专家打下基础

2021-05-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除