android系统—储存知识源码分析
来源:互联网 发布:pppoe网络 编辑:程序博客网 时间:2024/05/21 18:42
1.存储相关名词:
RAM
Ramdom Access Memory 随机存取存储器
ROM
Read Only Memory
ROM image 只读存储器镜像
NAND Flash
flash内存的一种
2.OBB
OBB:Opaque Binary Blob
Android 2.3引入的OBB文件
一种隔离的文件系统
APK分离出的资源文件放在SD卡上,别的程序没有权限访问
可以通过mkobb.sh、obbtool 加my_secret_key生成obb文件
访问时也需要my_secret_key
3.USB连接模式
默认连接模式
persist.sys.usb.config
bicr mtp adb mass_storage
内置光盘 Built in CD ROM
MTK_BICR_SUPPORT
system/etc/iAmCdRom.iso
PTP Picture Transfer Protocol
MTP 媒体传输协议
MIDI
Musical Instrument Digital Interface
乐器数字接口
4.android服务总览
ServiceManager为系统服务管家
1、主要负责添加服务,获取服务,查找服务以及当某个服务意外终止时,对该服务的资源进行回收
2、所有的Service使用前都必须先在ServiceManager中进行注册
3、 ServiceManager的启动。
5.Android启动流程
init是第一个进程。
init进程挂载目录,
比如/sys、/dev、/proc,
二是运行init.rc脚本。
rc文件叫做Android初始化语言由四大类型的声明组成
Actions(动作)、Commands(命令)
Services(服务)、Options(选项)
6.Dumpsys
服务: DiskStatsService
This service exists only as a “dumpsys” target which reports statistics about the status of the disk
Dumpsys:打印系统中指定服务的信息
“dumpsys diskstats” 内部存储设备的使用情况
frameworks\base\services\core\java\com\android\server\ DiskStatsService.javaframeworks/native/cmds/dumpsys/dumpsys.cpp
7.DeviceStorageMonitorService
DSMS:监测系统内部存储空间的状态
服务名:devicestoragemonitor
构造函数,
onstart
checkMemory函数
8.MountService
Client —— StorageManager
Proxy —— IMountServie.Stub.Proxy
Parcel ——对象序列化类,数据只有继承Parcelable才能进行RPC
Stub —— IMountService.Stub
Server —— MountService
在SystemServer中调用mSystemServiceManager.startService(MOUNT_SERVICE_CLASS)实例化
9.Vold (Volume Daemon)
Vold:native进程,接收来自内核的外部设备消息,用于管理和控制Android平台外部存储设备,包括SD插拨、挂载、卸载、格式化等
Netlink:
Linux系统中用户空间进程和Kernel进行通信的一种机制,用户空间进程可以接收来自Kernel的消息,同时也可以向Kernel发送一些控制命令
Uevent
和Linux的设备文件系统及设备模型有关,是sysfs向用户空间发送的消息。消息格式实际上是一串字符串。
10.存储大小显示不一致
区分标示容量、实际容量、可以容量
标示1G=1000Mb=1000*1000Kb=1000*1000*1000 字节
实际1G=1024Mb=1024*1024Kb=1024*1024*1024字节
总字节一致时,实际与标示的比值是1000/1024的三次方
数值约为0.9313
遇到的问题如:
总容量显示不是8G,
各存储项大小加起来不够8G
设置和文件管理器大小显示不一致
11.默认存储位置
Google标准接口
String path = Environment.getExternalStorageDirectory().getPath();
2、MTK接口
StorageManagerEx.getDefaultPath()
PROP_SD_DEFAULT_PATH = “persist.sys.sd.defaultpath“
3、通过getVolumeList获取路径
注意:权限、签名
android.permission.WRITE_EXTERNAL_STORAGE“
android.permission.WRITE_MEDIA_STORAG
- android系统—储存知识源码分析
- android 系统源码分析
- Android系统储存方式之文件储存
- Android多线程相关知识总结——源码分析
- android日志系统源码分析
- Android输入系统源码分析
- Android系统源码分析--Context
- Android数据储存——文件储存
- Android数据储存——SharedPreferences储存
- Android数据储存——SharedPreferences储存
- 知识链-源码分析
- Android Settings源代码数据储存简易分析
- Android系统原理与源码分析
- Android磁盘管理-系统源码分析(1)
- Android磁盘管理-系统源码分析(1)
- Android磁盘管理-系统源码分析
- Android磁盘管理-系统源码分析(1)
- Android磁盘管理-系统源码分析(1)
- python调用shell脚本
- Uva 11168 Airport (凸包)
- 在STM32F中使用UCOSII如何支持低功耗模式
- 放心使用Handler的removeCallbacksAndMessages
- omnet++ invalid use of member (did you forget the '&' ?)
- android系统—储存知识源码分析
- 【模拟】洛谷 P1969 积木大赛
- 通用标题栏和状态栏自定义
- 文章标题
- Java中堆内存和栈内存详解
- 交换排序——快速排序
- MYSQL-datatime和timestamp的区别
- Java_log2000_System.err
- JavaScript中常见的设计模式(1)工厂模式