<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hanhan1016的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hanhan1016</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hanhan1016]]></copyright><item><title><![CDATA[Android 13----在framworks层映射一个物理按键]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/137959330</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/137959330</guid><author>hanhan1016</author><pubDate>Fri, 11 Jul 2025 00:10:51 +0800</pubDate><description><![CDATA[在keycodes.h中增加AKEYCODE键值对PS.这个701是自己定义的，只要取比上一个大的值（这里是288）即可，但是考虑到289在attrs.xml中已经被占用，故这里取大一点的值，给AOSP预留一部分取值范围。]]></description><category></category></item><item><title><![CDATA[深度学习预备知识]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/148478331</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/148478331</guid><author>hanhan1016</author><pubDate>Wed, 09 Jul 2025 15:21:27 +0800</pubDate><description><![CDATA[张量（tensor）表示一个由数值组成的数组，这个数组可能有多个维度（轴）。具有一个轴的张量对应数学上的向量，具有两个轴的张量对应数学上的矩阵，具有两个以上轴的张量目前没有特定的数学名称。]]></description><category></category></item><item><title><![CDATA[Android Studio 2024版本设置前进和后退按钮显示在主界面]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/144560231</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/144560231</guid><author>hanhan1016</author><pubDate>Wed, 18 Dec 2024 16:34:18 +0800</pubDate><description><![CDATA[Android Studio 2024（Ladybug）安装后发现前进和后退按钮不显示在主界面的工具栏，且以前在View中设置的办法无效：Android Studio 2024（Ladybug）的设置方式：如下图：]]></description><category></category></item><item><title><![CDATA[product 分区和权限]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/126100509</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/126100509</guid><author>hanhan1016</author><pubDate>Mon, 01 Aug 2022 14:25:29 +0800</pubDate><description><![CDATA[permissions.xml文件必须与特权应用位于同一个分区中。----之前有遇到过，应用在product分区，然后在system分区的permissions.xml文件中声明签名/特权权限导致不生效。在特权应用/system分区中放置permissions.xml文件不会将这些权限扩展到/product分区中的特权应用，即使前者是后者的扩展也不例外。在Android9及更高版本中，权限和列入白名单过程的更改会影响product分区上授予特权应用权限的方式。...]]></description><category></category></item><item><title><![CDATA[查看Settings中的值]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/125981231</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/125981231</guid><author>hanhan1016</author><pubDate>Mon, 25 Jul 2022 18:54:00 +0800</pubDate><description><![CDATA[/package代表这个值是谁赋值的，如tv_user_setup_complete就是com.google.android.tungsten.setupwraith给赋值的。(如settings_system.xml，settings_secure.xml，settings_config.xml，settings_global.xml等)所有的Settings值都保存在/data/system/users/0/路径下的各个settings_xxx.xml文件中。3.设置(不存在就增加)一个指定的值。...]]></description><category></category></item><item><title><![CDATA[开机动画制作及多分辨率适配]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/125980976</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/125980976</guid><author>hanhan1016</author><pubDate>Mon, 25 Jul 2022 18:44:41 +0800</pubDate><description><![CDATA[c115part1代表该片段显示1次，显示后暂停15*(1/60)=0.25s，该片段的显示图路径为bootanimation.zip/part1。p00part4代表该片段无限循环显示，与下一个片段间隔0s，该片段的显示图片路径为bootanimation.zip/part4。c10part0代表该片段显示1次，与下一个片段间隔0s，该片段的显示图路径为bootanimation.zip/part0。第2个数字为该片段重复显示的次数，如果为‘0’，表示会无限重复显示；...]]></description><category></category></item><item><title><![CDATA[常用selinux debug方法]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/125980722</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/125980722</guid><author>hanhan1016</author><pubDate>Mon, 25 Jul 2022 18:32:05 +0800</pubDate><description><![CDATA[可以先dmesg-C，清空kernellog，然后执行相应的操作，接着再看dmesg，查看是否有selinux报错信息。cat/proc/kmsg|grepavc//查看kernel中的SELinux权限报错。cat/dev/kmsg|grepavc//查看kernel中的SELinux权限报错。]]></description><category></category></item><item><title><![CDATA[拷贝文件时FileNotFoundException：Permission denied]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/125980547</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/125980547</guid><author>hanhan1016</author><pubDate>Mon, 25 Jul 2022 18:10:19 +0800</pubDate><description><![CDATA[最后分析是跟要打开的文件(data/xxxxxlog/logcat.log)的权限有关，查看文件的权限，只是普通的-rw-------；通过chmod777/data/xxxxxlog/logcat.log后，可以拷贝不会报错。应用是系统应用，且sharedUserId为android.uid.system；该给的权限也都给了，selinux关闭后也有同样的问题。...]]></description><category></category></item><item><title><![CDATA[Android系统修改data分区大小]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/125979630</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/125979630</guid><author>hanhan1016</author><pubDate>Mon, 25 Jul 2022 17:51:41 +0800</pubDate><description><![CDATA[另外发现，虽然第一次刷机后有此问题，但是复位（factoryreset）后/dev/block/data的大小是OK的复位后data就会变为正确的容量，因为复位操作会重新根据分区大小对data分区进行格式化操作，不再以userdata.img中的容量为准。此时需要分析为什么data分区的大小是OK的（系统自适应出来的大小，dts中不用设置data分区的具体大小，但是最后emmc及partitions中的data分区大小一致），但是/dev/block/data分区大小只有525M。.............]]></description><category></category></item><item><title><![CDATA[使用命令启动init.rc中的service:setprop ctl.start xxxservice]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/125978886</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/125978886</guid><author>hanhan1016</author><pubDate>Mon, 25 Jul 2022 17:01:09 +0800</pubDate><description><![CDATA[在串口中输入setpropctl.startxxxservice来启动init.rc中定义的service。通过property_set("ctl.start",service_xx);来启动init.rc中的service。]]></description><category></category></item><item><title><![CDATA[快捷编译----编译frameworks/base&services时不编译odex]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/124674005</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/124674005</guid><author>hanhan1016</author><pubDate>Mon, 09 May 2022 20:37:14 +0800</pubDate><description><![CDATA[编译frameworks/base和services的时候，修改一下android.bp，不编译odex：
Android.bp


android_app{

    //添加下面配置
dex_preopt:{...]]></description><category></category></item><item><title><![CDATA[Android R上curl和wget等无法使用的解决办法]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/123295734</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/123295734</guid><author>hanhan1016</author><pubDate>Sat, 05 Mar 2022 15:38:59 +0800</pubDate><description><![CDATA[1.问题
sh脚本文件中使用到了curl和wget，在编译的时候出现了异常：
11:00:44 Disallowed PATH tool "curl" used: xxx ... ...
11:00:44 See https://android.googlesource.com/platform/build/+/master/Changes.md#PATH_Tools for more information.
...
11:00:44 Disallowed PATH tool "wget" used: x]]></description><category></category></item><item><title><![CDATA[Activity相关类及startActivity流程总结----基于Android Q]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/122125492</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/122125492</guid><author>hanhan1016</author><pubDate>Fri, 24 Dec 2021 12:48:49 +0800</pubDate><description><![CDATA[1.Activity相关类介绍



（1）ActivityRecord

Activity由ActivityRecord表示。

一个ActivityRecord对应一个Activity，保存了一个Activity的所有信息。

一个Activity可能会有多个ActivityRecord,因为Activity可以被多次启动，这个主要取决于其启动模式。

ActivityRecord中存在着大量的成员变量，包含了一个Activity的所有信息.

ActivityRecord中的成员变量task表示其所在]]></description><category></category></item><item><title><![CDATA[PackageManagerService介绍----基于Android Q]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/122122206</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/122122206</guid><author>hanhan1016</author><pubDate>Fri, 24 Dec 2021 10:27:40 +0800</pubDate><description><![CDATA[1.PKMS功能概述

PackageManagerService是系统的核心服务之一，负责系统中Package的管理，应用程序的安装、卸载、信息查询等。



2.类继承结构图



IPackageManager：接口类，定义了服务端和客户端通信的函数以及Stub（从Binder派生并实现IPackageManager接口）,在编译过程中由IPackageManager.aidl文件生成。

PackageManagerService: 继承 IPackageManager.stub，具体实现功能类，是]]></description><category></category></item><item><title><![CDATA[Apk安装流程----基于Android Q]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/122121407</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/122121407</guid><author>hanhan1016</author><pubDate>Fri, 24 Dec 2021 10:02:19 +0800</pubDate><description><![CDATA[基于Android Q，以普通三方应用通过PackageInstaller进行安装的安装流程为例来进行分析。

1.Apk文件结构



2.PackageInstaller中的Activity介绍以及流程

(1).相关Activity介绍

InstallStart：入口，以及通过不同的协议（content,package等）启动InstallStaging或是PackageInstallerActivity。

content uri: InstallStaging

package uri: Pa.]]></description><category></category></item><item><title><![CDATA[Android bp 介绍]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/122106053</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/122106053</guid><author>hanhan1016</author><pubDate>Thu, 23 Dec 2021 14:15:29 +0800</pubDate><description><![CDATA[filegroup: 文件组（功能相对独立的一组源文件集合，可供编译目标srcs直接使用）
name：编译目标名称
java_library：编译目标jar
installable：是否可安装（控制是否输出or只编译中间件）
compile_dex: 是否进行odex优化；
sdk_version: sdk版本
srcs：源码路径；
aidl: 编译所依赖的aidl；
libs: 编译所依赖的动态库；













...]]></description><category></category></item><item><title><![CDATA[DirectBootAware分析]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/122105862</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/122105862</guid><author>hanhan1016</author><pubDate>Thu, 23 Dec 2021 14:10:39 +0800</pubDate><description><![CDATA[1.android:directBootAware
在Android M及之前，在开机启动到锁屏界面时，所有程序阻塞，等待用户解锁(即使未设置开机密码，也需要滑屏解锁)后才会继续。
Android N引入的新特性：Direct Boot Mode：设备启动后进入的一个新模式，直到用户解锁（unlock）设备此阶段结束。
Direct Boot模式下，仅限于运行一些关键的、紧急的APP，比如：
Apps that have scheduled notifications, such as alarm cloc]]></description><category></category></item><item><title><![CDATA[预置app时mk文件中的编译问题]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/122102732</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/122102732</guid><author>hanhan1016</author><pubDate>Thu, 23 Dec 2021 11:20:33 +0800</pubDate><description><![CDATA[1.预置应用的时候，没有指明LOCAL_MODULE_CLASS的值，编译出现了异常：
build/make/core/base_rules.mk:200: error: vendor/xx/presetresources/presetapp/XXXXX: LOCAL_MODULE_CLASS must contain exactly one word, not ""
有的Android.mk文件中有指定LOCAL_MODULE_CLASS的值(一般是预置.apk文件的时候)，有的Android.mk文件中]]></description><category></category></item><item><title><![CDATA[应用对系统的跨进程调用次数太多，超过了系统规定的阈值，导致应用被Kill]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/122100072</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/122100072</guid><author>hanhan1016</author><pubDate>Thu, 23 Dec 2021 09:47:40 +0800</pubDate><description><![CDATA[1.问题描述：
【Super Cleaner-Antivirus..】【必现】【非单机问题】点击进入软件，软件闪退

2.根本原因
从log来看，是由于应用发送了太多Binder给系统，也就是应用对系统的跨进程调用次数太多，超过了系统规定的阈值，导致应用被Kill。


05-29 12:04:32.364 1218 1374 E ActivityManager: Uid 10109 sent too many Binders to uid 1000
05-29 12:04:32.365 1218 1374]]></description><category></category></item><item><title><![CDATA[安装应用手机内部存储不足时弹框流程]]></title><link>https://blog.youkuaiyun.com/hanhan1016/article/details/122099577</link><guid>https://blog.youkuaiyun.com/hanhan1016/article/details/122099577</guid><author>hanhan1016</author><pubDate>Thu, 23 Dec 2021 09:31:03 +0800</pubDate><description><![CDATA[安装应用时，手机内部存储空间不足的弹框流程：

1.手机内部存储空间阈值为500M：

StorageManager.java中：


    /**
     * Return the number of available bytes at which the given path is
     * considered running low on storage.
     *
     * @hide
     */
    public long getStorageLowBytes(File]]></description><category></category></item></channel></rss>