<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Only_Studio的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Only_Studio</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Only_Studio]]></copyright><item><title><![CDATA[设备开机后进入Launcher慢]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/166099651</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/166099651</guid><author>Only_Studio</author><pubDate>Sun, 20 Sep 2026 10:06:17 +0800</pubDate><description><![CDATA[4.根据以上ipc_trace.txt的一段堆栈结合perfetto trace确认了代码层的java调用（QsbContainerView$QsbFragment.createQsb）后，手动加trace埋点，重新抓取pefertto trace，验证查找的binder调用是否正确。5.后续优化，则是把该binder调用改为异步，优化后抓取的trace，已经可以看到该binder逻辑已经移到子线程UiThreadHelper。2.分析trace，Launcher进程有个binder请求耗时，阻塞主线程。]]></description><category></category></item><item><title><![CDATA[SystemUI状态栏流程]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/161917066</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/161917066</guid><author>Only_Studio</author><pubDate>Fri, 12 Jun 2026 10:21:48 +0800</pubDate><description><![CDATA[基于源码与绘制。]]></description><category></category></item><item><title><![CDATA[SystemUI之锁屏模块流程]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/161915677</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/161915677</guid><author>Only_Studio</author><pubDate>Fri, 12 Jun 2026 09:41:56 +0800</pubDate><description><![CDATA[fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;UI 层 (ViewModel + View)Domain 层 (Interactor)Data 层 (Repository)入口 / 中枢系统底层亮灭屏通知显隐生物识别 HAL(指纹/人脸)(中枢协调器 CoreStartable)(系统事件观察者)(转场唯一数据源)]]></description><category></category></item><item><title><![CDATA[SeekBar设置进度条背景不起作用]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/153638569</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/153638569</guid><author>Only_Studio</author><pubDate>Mon, 20 Oct 2025 17:34:54 +0800</pubDate><description><![CDATA[如果设置了progressDrawable,以及thumb，但并未生效，有可能是progressTint跟thumbTint这两个属性引起，把它们设置为null，可能问题就解决了。系统UI定制_SeekBar。]]></description><category></category></item><item><title><![CDATA[提升android 16的编译速度]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/151364906</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/151364906</guid><author>Only_Studio</author><pubDate>Tue, 09 Sep 2025 16:31:55 +0800</pubDate><description><![CDATA[echo ‘zram-size = ram / 2’ | sudo tee -a /etc/systemd/zram-generator.conf # 设置zram大小为物理内存的一半（16G）如果经常卡死可以临时配置sudo sysctl -w vm.min_free_kbytes=1048000。sudo systemctl start /dev/zram0   提示超时的话需要重启生效。sudo swapon --show    根据线程分配内存。配置完后，单编耗时20分钟左右。]]></description><category></category></item><item><title><![CDATA[Settings数据库导出的xml乱码]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/151106953</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/151106953</guid><author>Only_Studio</author><pubDate>Tue, 02 Sep 2025 11:32:15 +0800</pubDate><description><![CDATA[目前的版本Android15,adb pull /data/system/users/0/settings_system.xml，导出来后，直接打开，是乱码。修改frameworks/base/core/java/android/util/Xml.java。还有类似Settings.Secure.put…,Settings.Global.put…把该值直接写死为false，然后重新编译framework即可.]]></description><category></category></item><item><title><![CDATA[镜像语言相关问题]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/148806823</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/148806823</guid><author>Only_Studio</author><pubDate>Sat, 21 Jun 2025 10:20:27 +0800</pubDate><description><![CDATA[镜像语言：阿拉伯语言，波斯语，希伯来语等。]]></description><category></category></item><item><title><![CDATA[系统UI定制_Spinner]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/148605924</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/148605924</guid><author>Only_Studio</author><pubDate>Thu, 12 Jun 2025 11:12:44 +0800</pubDate><description><![CDATA[android:dropDownSelector该属性用来设置下拉列表的点击效果。android:popupBackground该属性用来设置下拉列表的背景。android:background该属性用来设置spinner本身的背景。]]></description><category></category></item><item><title><![CDATA[Android 编译相关]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/148472281</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/148472281</guid><author>Only_Studio</author><pubDate>Fri, 06 Jun 2025 12:14:26 +0800</pubDate><description><![CDATA[如果我们要验证在PRODUCT_PACKAGES添加一个app是否会参与编译，不需要等待编译完成。1 初始化环境变量（source build/envsetup.sh / lunch）2 输入get_build_var PRODUCT_PACKAGES。同理其他的宏都可以这样打印，可以快速检查配置是否正确。输出的结重新检查配置。]]></description><category></category></item><item><title><![CDATA[Patch的合入]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/147482707</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/147482707</guid><author>Only_Studio</author><pubDate>Thu, 24 Apr 2025 17:53:08 +0800</pubDate><description><![CDATA[也就是其实patch的路径应该是a/sys/vendor/blackview/openSource/DK_Settings/dkSettingsCore/res_bv/drawable/incar_icon_battery_health.xml,所以这里一共是5级，p后面的参数就是5.  如果这个数字不对，会提示找不到xxx文件，导致patch打入失败。执行：patch -p5 < /home/huangxiaofeng/Downloads/0001-.patch。]]></description><category></category></item><item><title><![CDATA[adb&git常用命令]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/144815758</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/144815758</guid><author>Only_Studio</author><pubDate>Mon, 30 Dec 2024 09:41:03 +0800</pubDate><description><![CDATA[system/priv-app/SystemUI/ # mv SystemUI.apk System.apk.bak // 通过修改后缀名，使其不生效，或者拷贝出去备份一下。adb shell screenrecord --time-limit 30 /sdcard/test.mp4  //限制30秒。adb shell pm path com.android.systemui //查找出apk在手机中的路径。adb reboot // 重启后，替换的apk才生效。1.#####抓取多个关键字的log。]]></description><category></category></item><item><title><![CDATA[系统UI定制_Toolbar]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/143060636</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/143060636</guid><author>Only_Studio</author><pubDate>Fri, 18 Oct 2024 19:18:08 +0800</pubDate><description><![CDATA[系统应用UI定制_Toolbar]]></description><category></category></item><item><title><![CDATA[AOSP编译]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/140551900</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/140551900</guid><author>Only_Studio</author><pubDate>Fri, 19 Jul 2024 15:54:54 +0800</pubDate><description><![CDATA[修改swap分区：https://blog.youkuaiyun.com/qq_35395195/article/details/125616388。FAILED: out/soong/build.ninja，原因swap分区太小。1.创建新的swap文件，以创建64G大小为例。3.设置为swap文件。4.启用swap文件。5.最后查看是否生效。]]></description><category></category></item><item><title><![CDATA[基于Android14 Mtk平台移植系统应用Settings到AS中编译]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/139498762</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/139498762</guid><author>Only_Studio</author><pubDate>Thu, 06 Jun 2024 17:56:41 +0800</pubDate><description><![CDATA[系统应用，settings，移植，Android studio单独调试系统应用，私有资源]]></description><category></category></item><item><title><![CDATA[记录修改系统默认导航模式]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/132230008</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/132230008</guid><author>Only_Studio</author><pubDate>Fri, 11 Aug 2023 16:40:23 +0800</pubDate><description><![CDATA[修改Android默认系统导航]]></description><category></category></item><item><title><![CDATA[JAVA字节码]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/110938630</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/110938630</guid><author>Only_Studio</author><pubDate>Wed, 09 Dec 2020 19:50:35 +0800</pubDate><description><![CDATA[什么是class文件
JAVA字节码文件（.class文件）是java编译器编译java源文件（.java文件）所产生的目标文件。它是一种8位字节的二进制流文件，各个数据项按顺序紧密的从前向后排列，相邻的项之间没有间隙，这样使得class文件非常紧凑，体积轻巧，可被JVM快速加载到内存，并且占据较少的内存空间。理解字节码其实就是了解JVM是如何解析字节码的。JVM能够解析并执行字节码文件，而不关心字节码是由哪种语言编译而来的，所以理论上JVM还可以支持除了JAVA以外的其他能够编译生成字节码文件的语言，如G]]></description><category></category></item><item><title><![CDATA[关于AIDL接口定义中oneway的修饰符源码解析.]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/106071443</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/106071443</guid><author>Only_Studio</author><pubDate>Tue, 12 May 2020 11:37:33 +0800</pubDate><description><![CDATA[以下源码出自于Android 8.1
该部分源码基于我另外一篇文章，Binder通信流程浅析有提到，在binder进行传输数据时有提到这个方法binder_proc_transaction，该方法是把当前client要发送的数据t加入到队列中，并唤起binder线程执行该事务，当时忽略了一个细节oneway修饰符：
static bool binder_proc_transaction(struct binder_transaction *t,
				    struct binder_proc *pro]]></description><category></category></item><item><title><![CDATA[Binder通信流程浅析]]></title><link>https://blog.youkuaiyun.com/Only_Studio/article/details/102667097</link><guid>https://blog.youkuaiyun.com/Only_Studio/article/details/102667097</guid><author>Only_Studio</author><pubDate>Thu, 31 Oct 2019 17:28:33 +0800</pubDate><description><![CDATA[某位牛逼的大神层说过：Read The Fucking Resource Code.这句话是个程序员应该都懂…最好的学习方式就是阅读其源代码，源码之下，了无秘密，所以在学习binder机制的时候，我选择了从源代码下手，过程很枯燥…
binder机制中，有4个重要的角色，Client，Serve，ServiceManager，Binder驱动。简单来讲，各种服务通过ServiceManager将服务...]]></description><category></category></item></channel></rss>