随笔分类 -  安卓开发

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