
Android
文章平均质量分 74
Android系统经验总结
的神等等
这个作者很懒,什么都没留下…
展开
-
TombStone文件如何生成
开发者在分析系统稳定性的时候通常需要知道进程发生异常时候的调用栈来分析发生异常时进程到底正在做什么。这样才能根据进程所处场景或者调用栈、寄存器信息分析异常发生的原因。而在Android中,当Native进程发生崩溃时,会在/data/tombstones/目录下生成tombstones_xxx的文件,里面记录了某一个进程在发生崩溃时候的所有信息,包括调用栈、寄存器信息等等。这极大的有助于开发者来定位问题,本篇文章来分析下TombStone文件到底是如何生成的,里面都记录了哪些信息。首先我们要知道,Nati原创 2021-04-11 14:55:23 · 2319 阅读 · 0 评论 -
Fuse性能优化介绍(解读)
Fuse即file system in user, 此文件系统是为了方便开发者修改文件系统时不需要再修改kernel,仅在用户空间修改就可以达到目的,因为将控制逻辑放到了用户空间,但是因为存在用户态和内核态的切换,所以Fuse的整体性能远不如其他基础文件系统,因为优化Fuse文件系统的性能成为一个关注点,尤其是在读写大量小文件或者发生随机访问的时候,更是体现了Fuse性能差的毛病。本文旨在解读已有的优化措施。优化措施引自于该网站:https://patchwork.kernel.org/project/原创 2021-01-31 14:35:53 · 3612 阅读 · 0 评论 -
Android Vold简介(三)
之前两篇主要介绍了Vold的架构以及运行机制,本篇主要来介绍下Vold是内置存储和外置存储的mount流程。前面已经介绍过,无论什么存储,最终都会调用doMount()这个虚函数,对于不同类型的则会有不同的mount流程(即挂在到不同的文件系统下);对于内置存储,使用EmulatedVolume类来进行出来,而外接sd卡或者OTG设备则基本上都使用PublicVolume类来处理,因此uevent传递上来的消息会通知到vold到底这个存储介质属于什么类型。首先来看下EmulatedVolume处理流程,首原创 2020-11-29 16:51:55 · 2099 阅读 · 0 评论 -
RescueParty 简述
本篇来简单介绍下Android的RecuseParty机制,该功能从O版本继承进来,用于原创 2020-08-16 09:39:06 · 1820 阅读 · 0 评论 -
Android Toybox简述
toybox加粗样式原创 2020-08-08 20:39:12 · 6876 阅读 · 0 评论 -
PropertyService(二)
承接上篇文章继续分析Java层SetProperty的过程,以及native层的处理。 这边用到的文件有:frameworks/base/core/java/android/os/SystemProperties.javaframeworks/base/core/jni/android_os_SystemProperties.cppsystem/core/base/properties.cppbionic/libc/bionic/system_property_set.cppJav原创 2020-06-21 15:52:32 · 1016 阅读 · 0 评论 -
PropertyService(一)
setProperty在Android开发中太常用了,很多地方都会用它来记录一下value,以此作为判断条件或者通信的数据。当然ctl.start也可以启动系统服务,前提是要在ServiceManager中有过注册。偶然一次遇到了ctl.start启动服务失败的问题,本片就来探究下setProperty到底是如何执行和发挥作用的。还是先列一下会用到的文件init.cppproperty_service.cpputil.cppproperty是在Android系统开机后由init进程收集起来的,i原创 2020-06-21 15:52:16 · 1632 阅读 · 0 评论 -
Android Vold简介(二)
上一篇讲完了Vold的启动,本篇主要来介绍一下SM(StorageManager)和Vold、Kerel和Vold之间如何建立联系,以及信息是如何接收处理的。上一篇提到了,NM(NetlinkManager)启动的时候会执行startListener开始监听Kernel的uevent事件,这里详细来看下是如何接收和处理消息事件的。int SocketListener::startListen...原创 2020-05-04 21:06:22 · 1868 阅读 · 0 评论 -
Android Vold简介(一)
Vold(volume Daemon),即Volume守护进程,用来管理Android中存储类的热拔插事件,处于Kernel和Framework之间,是两个层级连接的桥梁。先来看一下Vold在Android系统的整体架构。该图主要包含了Framework和Vold进程的,Kernel和App层涉及的内容这里不再设计,简单介绍一下。Vold主要是接收Kernel的uevent消息,然后通过NM(...原创 2020-05-04 21:05:59 · 8473 阅读 · 1 评论 -
Android系统sdcard目录
随着Android大版本的不断迭代,原本的内存卡现在基本上都没有了,取而代之的是内置sdcard,即系统根目录下的sdcard/目录。那该目录在系统启动过程中什么时间、被谁创建、如何创建呢?本片文章将来介绍下sdcard目录的创建历程。 首先来看下用到的文件目录:system/core/rootdir/init.rcsystem/core/init/frameworks/bas...原创 2020-05-04 21:05:41 · 5324 阅读 · 3 评论 -
Looper、MessageQueue、Handler和Thread之间的关系
在Android中,handler消息随处可见,但是只会用却不知道是如何实现的,Looper和Handler之间又有什么联系呢?Android中的消息机制涉及到Looper、MessageQueue、Thread以及Handler,本篇将从源码来分析它们之间是如何建立的联系以及内部的工作机制是怎样的?...原创 2020-03-22 20:41:01 · 408 阅读 · 0 评论 -
简述Android应用安装的拷贝过程
Android安装过程会区分为预置应用和三方应用,预置应用在首次开机过程中便会扫描安装,而三方应用则由用户使用过程中来完成安装。安装的方式主要分为以下几种:安装预置应用,这部分在首次开机完成;使用ADB命令或者Shell命令来完成,其过程相同,ADB会增加一层ADB调用;通过应用商店或者在其他应用内下载安装;在文件管理中或者浏览器中点击APK文件通过PackageInstaller包进...原创 2020-02-18 21:57:26 · 1840 阅读 · 0 评论 -
APEX包管理器简述(二)
本篇主要讲一下Apex包如何完成原创 2020-02-13 20:31:06 · 1989 阅读 · 0 评论 -
APEX包管理器简述(一)
简述APEX(Android Pony EXpress ) 是Google在Android 10中引进的一种用于管理较低级别系统模块的安装包管理器,用于更新一些不适用APK安装流程的系统组件,比如Bionic 库以及一些运行时类库。APEX文件格式APEX文件是一个zip压缩包,类似于一个APK安装包文件,其内部包含四个文件:1. apex_manifest.json2. Android...原创 2020-02-13 20:31:23 · 6739 阅读 · 0 评论