随笔分类 - 安卓开发
摘要:概述 在launcher中点击应用来启动应用。 1. 调用流程 1.1 start-activity-call ActivityTaskManagerService类:startActivity -> ActivityStarter类:startActivityMayWait -> mSupervi
阅读全文
摘要:概述 在launcher中点击应用来启动应用。 启动应用的过程中,用intent通过PMS来查询对应的activity信息,得到ActivityInfo信息和applicationInfo信息 1. 调用流程 PackageManagerInternalImpl类:resolveIntent ->
阅读全文
摘要:概述 zram-writeback就是像电脑的swap分区那样,将zram中的压缩数据,写回到磁盘当中 执行流程 开机的时候:StorageManagerService: handleSystemReady -> if (!zramPropValue.equals("0") // persist.s
阅读全文
摘要:概述 编译emulator使用的qemu的kernel,调试内核 1. emulator内核编译 # 下载内核 git clone https://android.googlesource.com/kernel/goldfish.git # 切换分支,android-10.0.0_r13 tag对应
阅读全文
摘要:概述 使用伪终端的方式来处理子进程的log输出,logwrapper会等待子进程执行完毕之后再退出 源码解析 1. logwrap模块 1.1 logwrap_fork_execvp // {"/system/bin/vdc","cryptfs", "encryptFstab", attempted
阅读全文
摘要:概述 在launcher中点击应用来启动应用。 launcher发一个intent来启动应用。 1. 应用图标 通过android studio的tools → layout inspector工具可以看到,桌面上的app图标使用的是DoubleShadowBubbleTextView类,第二级菜单
阅读全文
摘要:概述 源码解析 1. NetlinkListener模块-处理socket消息的 1.1 NetlinkListener构造函数 NetlinkListener::NetlinkListener(int socket) : SocketListener(socket, false) { mForma
阅读全文
摘要:概述 vold进程启动流程: 注册vold服务 创建emulated volume 创建netlinkmanager,用来监听uevent事件,add disksource属于mmc1(sd卡)和usb的 源码解析 1. main模块 1.1 main函数 int main(int argc, ch
阅读全文
摘要:概述 用于A/B系统切换A/B的hal 源码解析 源码位置:android/hardware/interfaces/boot/1.1/default/boot_control/libboot_control.cpp文件 1. bootctl模块 1.1 IsSlotMarkedSuccessful-
阅读全文
摘要:概述 rc文件中的配置 on fs mount_all /vendor/etc/fstab.sun50iw10p1 --early on late-fs mount_all /vendor/etc/fstab.sun50iw10p1 --late 这个--early和--late是用在metadat
阅读全文
摘要:概述 ftrace:是一个内核函数跟踪器,function tracer,旨在帮助开发人员和系统设计者可以找到内核内部发生的事情。 atrace:Android tracer,使用ftrace来跟踪Android上层的函数调用。为数据采集部分 systrace:Android的trace数据分析工具
阅读全文
摘要:概述 ├── aac // 用于Android的全称Fraunhofer FDK AAC编解码器库,多媒体相关 ├── adeb // 为Android设备提供Ubuntu那样的shell环境,可以运行python,apt-get安装软件等等 ├── adhd // 用于监视A / V设备事件的守护
阅读全文
摘要:概述 android/system/core/init目录下,init进程解析rc文件 rc文件三个关键字打头: on 为action service 为service import 引入其他rc文件 源码解析 1. ActionManager类 actionmanager用来收集action的 1
阅读全文
摘要:概述 创建进程会话密钥 初始化属性服务-创建线程-建立socket通信-用来设置属性的 SELinux 第二阶段准备后续工作 初始化子进程终止信号处理函数 初始化init进程唤醒函数-使用eventfd机制-唤醒来处理action 设置mount namespace 新建subcontext进程-建
阅读全文
摘要:概述 1. 按context来进行分类 属性是以context为基础的 (1)读/system/etc/selinux/plat_property_contexts文件,按照Trie形式,组织成树形形式 三种情况 (1)ro.boot. u:object_r:exported2_default_pr
阅读全文
摘要:概述 android/system/core/libmodprobe-first stage init阶段用来加载内核模块的 源码解析 1. Modprobe模块 1.1 Modprobe构造函数 // "/lib/modules","modules.load" Modprobe::Modprobe
阅读全文
摘要:概述 android/system/core/liblog-logd的接口函数库 源码解析 1. logger_write-往logd写消息 1.1 __android_log_set_logger void __android_log_set_logger(__android_logger_fun
阅读全文
摘要:概述 android/system/core/base-log打印,字符串,文件读写 源码分析 1. logging模块 1.1 InitLogging-初始化进程的log输出 // android::base::KernelLogger和InitAborter void InitLogging(c
阅读全文
摘要:概述 android/system/core/fs_mgr/libdm和dm设备的创建 源码解析 1. DmTarget模块 1.1 DmTargetLinear构造函数 DmTargetLinear(uint64_t start, uint64_t length, const std::strin
阅读全文
摘要:概述 android/system/core/fs_mgr/liblp目录下的库,和super分区的数据结构的解析相关 源码解析 1. utility模块-工具函数 1.1 SlotNumberForSlotSuffix-a为0-b为1 uint32_t SlotNumberForSlotSuffi
阅读全文

浙公网安备 33010602011771号