<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[JabamiYu的博客]]></title><description><![CDATA[研究总结与进步]]></description><link>https://blog.csdn.net/a568478312</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; a568478312]]></copyright><item><title><![CDATA[rk3586开发版新增系统调用(Android13)]]></title><link>https://blog.csdn.net/a568478312/article/details/146836969</link><guid>https://blog.csdn.net/a568478312/article/details/146836969</guid><author>a568478312</author><pubDate>Mon, 31 Mar 2025 16:34:33 +0800</pubDate><description><![CDATA[最近想学一下kernel和hal,所以买了一块板子,带了个摄像头和屏幕,1100+,学习投资了。这个Android内核定一个系统应用感觉是真的麻烦，主要是有一层bionic C，一开始不熟悉的时候还是花了点时间去配置。]]></description><category></category></item><item><title><![CDATA[Lineageos 22.1(Android 15)制定应用强制横屏]]></title><link>https://blog.csdn.net/a568478312/article/details/146443835</link><guid>https://blog.csdn.net/a568478312/article/details/146443835</guid><author>a568478312</author><pubDate>Sat, 22 Mar 2025 18:40:30 +0800</pubDate><description><![CDATA[有时候需要系统的某个应用强制衡平显示，不管他是如何配置的。我们只需要简单的拿到top的Task下面的ActivityRecord，并判断包名来强制实现。]]></description><category></category></item><item><title><![CDATA[Lineageos 22.1(Android 15)应用双开]]></title><link>https://blog.csdn.net/a568478312/article/details/146401422</link><guid>https://blog.csdn.net/a568478312/article/details/146401422</guid><author>a568478312</author><pubDate>Thu, 20 Mar 2025 17:03:48 +0800</pubDate><description><![CDATA[应用双开简单说就是创建一个用户然后将已经存在的APP安装到制定的userId中，下面新建一个系统应用来实现功能。]]></description><category></category></item><item><title><![CDATA[Lineageos 22.1(Android 15)实现负一屏]]></title><link>https://blog.csdn.net/a568478312/article/details/146370772</link><guid>https://blog.csdn.net/a568478312/article/details/146370772</guid><author>a568478312</author><pubDate>Wed, 19 Mar 2025 15:21:11 +0800</pubDate><description><![CDATA[方案是参考的这位大佬的，大家可以去付费订阅支持一波。我大概理一下Android15的修改。大佬的方案代码。]]></description><category></category></item><item><title><![CDATA[Lineageos 22.1(Android 15)通知栏添加截图开关]]></title><link>https://blog.csdn.net/a568478312/article/details/146141471</link><guid>https://blog.csdn.net/a568478312/article/details/146141471</guid><author>a568478312</author><pubDate>Mon, 10 Mar 2025 00:16:55 +0800</pubDate><description><![CDATA[通知栏添加截图要注意一个问题，就是截图的时候要关闭通知栏，不然就直接截图通知栏了，然后就没有意义了。在下面的路径下添加开关，使用dagger注解注入即可。
lineageos/frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tiles/
加上finishi方法的回调
lineageos/frameworks/base/packages/SystemUI/src/com/android/systemui/shade/Notificat]]></description><category></category></item><item><title><![CDATA[Lineageos 22.1(Android 15)Launcer打开Taskbar]]></title><link>https://blog.csdn.net/a568478312/article/details/145779408</link><guid>https://blog.csdn.net/a568478312/article/details/145779408</guid><author>a568478312</author><pubDate>Fri, 21 Feb 2025 15:54:20 +0800</pubDate><description><![CDATA[Taskbar是Android高版本给大屏幕设备定制的快捷导航条，屏幕宽度或者高度达到一定程度，就会判断为平板而显示taskbar。/***/]]></description><category></category></item><item><title><![CDATA[Lineageos 22.1(Android 15)Launcer简单调整初始化配置]]></title><link>https://blog.csdn.net/a568478312/article/details/145764194</link><guid>https://blog.csdn.net/a568478312/article/details/145764194</guid><author>a568478312</author><pubDate>Thu, 20 Feb 2025 22:03:43 +0800</pubDate><description><![CDATA[Launcer的初始化配置主要在如下的xml文件夹下，默认读取的5x5

这里我们把device_profiles调整一下，然后新建一个default_workspace_my.xml作为我们自己的配置就行。注意Lineageos 的Launcer是在lineageos/packages/apps/Trebuchet这个目录下面，和原生aosp有点差别。
简单调整
device_profiles.xml，
就调整了两行代码
然后是 default_workspace_my.xml
这里也调整了几个地方，把时]]></description><category></category></item><item><title><![CDATA[Lineageos 22.1(Android 15) 开机向导制作]]></title><link>https://blog.csdn.net/a568478312/article/details/145709426</link><guid>https://blog.csdn.net/a568478312/article/details/145709426</guid><author>a568478312</author><pubDate>Tue, 18 Feb 2025 16:48:22 +0800</pubDate><description><![CDATA[开机向导原理其实就是将特定的category的Activity加入ComponentResolver，如下然后我们开机启动的时候，FallbackHome结束，然后启动Launcher的时候，就会找到对应的开机向导Activity页面。所以我们现定制我们自己的应用。]]></description><category></category></item><item><title><![CDATA[Lineageos 22.1(Android 15) 编译隐藏API的 android.jar]]></title><link>https://blog.csdn.net/a568478312/article/details/145692647</link><guid>https://blog.csdn.net/a568478312/article/details/145692647</guid><author>a568478312</author><pubDate>Mon, 17 Feb 2025 22:14:09 +0800</pubDate><description><![CDATA[有时候会我们开发系统应用需要一些系统的方法或者属性之类的,但是被隐藏导致无法正常显示,因为SDK提供的android.jar被隐藏了,所以只能看到sourcecode,实际上编译是会报错的,比如:


一般这种无法是两种,直接添加一个类,同包名同类名,或者依赖framework.jar,可以骗过编译器编译成功.但是都是无法解决这个爆红的问题,我查了很多修改iml的方法,但是高版本的android studio实际上iml已经没啥东西了,所以目前的修改Iml的方法我测试基本实效,现在只能替换sdk目录下的an]]></description><category></category></item><item><title><![CDATA[Lineageos 22.1(Android 15) Winscope编译使用]]></title><link>https://blog.csdn.net/a568478312/article/details/145671663</link><guid>https://blog.csdn.net/a568478312/article/details/145671663</guid><author>a568478312</author><pubDate>Mon, 17 Feb 2025 01:54:37 +0800</pubDate><description><![CDATA[winsocpe对于一些dump的分析还是很有用的，但是Lienageos编译之后的winscope用不了，很坑。记录一下使用的时候遇到的问题。首先我们进入lineageos/development/tools/winscope/ 目录下,默认已经安装好了nodejs环境。编译命令
这里需要开vpn或者切换一下源，不然可能失败。
然后直接提示require xxx version什么的，我们需要更新一下nodejs版本，我这里提示需要16.10.0
接下来执行
2.编译问题
我这里可能vpn还是不太好，执行]]></description><category></category></item><item><title><![CDATA[Lineageos 22.1(Android 15)更换开机动画]]></title><link>https://blog.csdn.net/a568478312/article/details/145654535</link><guid>https://blog.csdn.net/a568478312/article/details/145654535</guid><author>a568478312</author><pubDate>Sat, 15 Feb 2025 18:41:09 +0800</pubDate><description><![CDATA[我们直接用最简单的替换zip的方式来更换开机动画，首先我们要查看系统代码使用的zip包的路径，可能与aosp原生的代码不一定一样。} else {//**省略后续代码**//看到是使用mZipFileName来判断的，我们看看初始化的地方} else {//查找开机动画的路径通过代码我们可以查找到几个路径，最好验证的方式直接adb shell然后查找几个zip是否存在，也可以看Bootanimation的日志。]]></description><category></category></item><item><title><![CDATA[Lineageos 22.1(Android 15)预制APK]]></title><link>https://blog.csdn.net/a568478312/article/details/145643138</link><guid>https://blog.csdn.net/a568478312/article/details/145643138</guid><author>a568478312</author><pubDate>Fri, 14 Feb 2025 23:16:11 +0800</pubDate><description><![CDATA[pixel3设备对应的是/vendor/google/blueline/blueline-vendor.mk。2.Myapp放入预制的Apk文件并且编写Android.bp。1.vender目录下新建apps/Myapp文件夹。3.添加对应的PRODUCT_PACKAGES。编译完成后就可以找到编译之后的apk了。Android.bp文件内容。]]></description><category></category></item><item><title><![CDATA[Lineageos 22.1 aosp15 定制学习专栏介绍]]></title><link>https://blog.csdn.net/a568478312/article/details/145633539</link><guid>https://blog.csdn.net/a568478312/article/details/145633539</guid><author>a568478312</author><pubDate>Fri, 14 Feb 2025 14:56:31 +0800</pubDate><description><![CDATA[学习了一段时间的rom开发，需求也大概做了一些，但是一直没有记录下来总结，这个专栏开始会基于如下平台开始尝试做一些常见模块的需求定制，记录学习，如果有错误欢迎指正，大家一起学习!至于pixel编译刷机大家可自行查看官方文档。设备：Google Pixel 3基于aosp:android-15.0.0_r14。]]></description><category></category></item><item><title><![CDATA[lineageOS22 导入 Android Studio for Platform]]></title><link>https://blog.csdn.net/a568478312/article/details/145119574</link><guid>https://blog.csdn.net/a568478312/article/details/145119574</guid><author>a568478312</author><pubDate>Mon, 13 Jan 2025 17:10:29 +0800</pubDate><description><![CDATA[lineageOS因为用的是brunch命令，和aosp有一点差别。然后asfp需要导入源码必须要lunch命令支持，但是我直接lunch的时候会碰到找不到target的情况。这时候如果直接导入asfp选择这个target会报错是无法建立代码索引的。]]></description><category></category></item><item><title><![CDATA[Android 12.0新增自定义HIDL问题记录]]></title><link>https://blog.csdn.net/a568478312/article/details/144096057</link><guid>https://blog.csdn.net/a568478312/article/details/144096057</guid><author>a568478312</author><pubDate>Wed, 27 Nov 2024 23:05:57 +0800</pubDate><description><![CDATA[在device/generic/goldfish/vender.mk添加一下。我这里用的target就是模拟器的。1.首先最外层的bp不要使用update-makefiles.sh 去生成 ，基本上interface下面的文件夹都会被影响，可能会导致编译问题。最后就是selinux的配置，按照patch来就，由于大佬文章是图片，这里我贴一下新增的文件的内容。修改 system/tools/hidl/build/hidl_interface.go:498。bp使用ir目录下面的直接改一下就行了。]]></description><category></category></item><item><title><![CDATA[新Activity启动时Task的位置（分屏场景）]]></title><link>https://blog.csdn.net/a568478312/article/details/143737678</link><guid>https://blog.csdn.net/a568478312/article/details/143737678</guid><author>a568478312</author><pubDate>Wed, 13 Nov 2024 14:03:04 +0800</pubDate><description><![CDATA[可以看到这类型的task是就孩子算是空也不会被移除，Launcher桌面直接启动的时候可以挂载的parent就是TaskDisplayArea了，和这里分屏的情况又有所区别，也就解释了分屏情况或者在桌面都直接启动的情况下，task位置和bound都显示正常。由此可以简单总结，在需要启动新的Task的情况下，会查找organizer创建的task,如果不需要就直接ActivityRecord挂载了，至于organizer创建的task特性可以看注释。那么这个类型的task是什么时候初始化的呢，经过查找。]]></description><category></category></item><item><title><![CDATA[WSL2编译安卓11源码,，刷入pixel设备，并使用asfp查看源码]]></title><link>https://blog.csdn.net/a568478312/article/details/133323486</link><guid>https://blog.csdn.net/a568478312/article/details/133323486</guid><author>a568478312</author><pubDate>Tue, 26 Sep 2023 21:11:10 +0800</pubDate><description><![CDATA[wsl2使用asfp导入源码以及刷入pixel]]></description><category></category></item><item><title><![CDATA[Android系统zygote启动到Launcher]]></title><link>https://blog.csdn.net/a568478312/article/details/131431058</link><guid>https://blog.csdn.net/a568478312/article/details/131431058</guid><author>a568478312</author><pubDate>Wed, 28 Jun 2023 12:08:32 +0800</pubDate><description><![CDATA[以上第6点其实还是不太理解，理论上跨进程通信不需要通过servicemanger，直接binder驱动是可以直接实现的，如果说是为了统一管理，动态注册或者取消注册之类的，那这个好处是可以解释。5.ServiceManager的addService也是跨进程通信，这个是与servicemanager进程进行通信的，该进程是init进程孵化的。2.SystemServer进程管理了很多服务，比如AMS PMS等逻辑，都是运行在SystemServer中的，不是单独的进程。这里总结一下学习的几个容易混淆的点。]]></description><category></category></item><item><title><![CDATA[WSL2编译安卓8.1源码，直接运行模拟器]]></title><link>https://blog.csdn.net/a568478312/article/details/130899952</link><guid>https://blog.csdn.net/a568478312/article/details/130899952</guid><author>a568478312</author><pubDate>Sat, 27 May 2023 15:08:29 +0800</pubDate><description><![CDATA[学习Android Framework开发，需要linux。但是不管是vmware虚拟机，还是双系统，都或多或少有点麻烦。vmware性能不咋样，双系统切换器了麻烦，如果要玩个游戏，碰到微星啥的自检时间长的主板，重启就很费时间。WSL2就是个很方便的选择，性能接近原生linux系统，配置之后也能直接运行编译之后的模拟器，如果只是编译开发，推荐选择。]]></description><category></category></item><item><title><![CDATA[Glide 使用Transformation 时保持 placeholder、error统一的一种方式]]></title><link>https://blog.csdn.net/a568478312/article/details/127779154</link><guid>https://blog.csdn.net/a568478312/article/details/127779154</guid><author>a568478312</author><pubDate>Wed, 09 Nov 2022 22:33:25 +0800</pubDate><description><![CDATA[有时候我们碰到某个需求，有一个默认的error图片，大部分地方都用这个图片。但是有的地方我们用圆角，有的地方我们用圆形，如果用Glide的transform变换的话，error将不会跟随实际的图片变换，但是我们又不想不同的地方取更换图片，或者直接把ImageView弄成CircleImageView之类的，这里提供一种跟随实际图片转换的方法。比如上图的图片，我们要全局应用，适配圆角和圆形变换。调用的时候,注意必须在写的扩展方法的作用域调用。这样就保证error和实际图片都可以应用转换。]]></description><category></category></item></channel></rss>