Android
Android 文件系统、应用存储与权限边界,附开发工具入口和历史玩机备忘。
#ops
#concept
#growing
#android
[!info] related notes
- 开发配置: Android 开发环境配置, Android SDK
- 设备工具: Android Platform Tools, ADB
- 跨平台开发: React Native, expo
Android
Android 是基于 Linux 内核的移动设备软件平台。这里记录设备文件系统、存储术语和权限边界;具体构建工具链见开发配置笔记。
文件系统与分区
路径、挂载点和刷机镜像不是同一层概念。下面是常见结构,实际布局随设备、Android 版本和 ROM 变化。
| 路径 / 名称 | 作用与边界 |
|---|---|
/ | 文件系统根目录;能否访问某处取决于目录权限、进程身份与 SELinux 等限制 |
/system、/vendor | 系统与厂商组件;通常受只读挂载、Verified Boot 等机制保护,获得 root 不等于可以直接修改 |
/data | 应用与用户数据;/data/app 常用于安装包,/data/user/<用户编号>/<包名> 等保存应用私有数据 |
/cache | 部分旧设备或布局的缓存分区;现代设备不保证有独立 cache 分区,OTA 不一定暂存于此 |
/proc | 内核提供的虚拟接口,如 cpuinfo、meminfo;并非全部只读,部分节点在相应权限下可写 |
/dev | 块设备、字符设备等接口,受系统权限控制 |
/mnt、/storage | 存储挂载相关路径;/storage/emulated/0 常对应主用户的模拟外部存储,SD 卡路径不能统一写死为 sdcard1 |
boot、init_boot、vendor_boot、recovery | 分区或镜像名称,随设备设计组合;不应统一写成 /boot、/recovery 普通目录,也不是所有设备都有独立 recovery 分区 |
系统属性可用 getprop 查询。build.prop、fstab 等配置可能分布于不同分区或 ramdisk,不能将 /system/build.prop、/system/etc/fstab 当作所有版本的唯一位置。/system/etc/hosts 是常见 hosts 路径,修改仍受系统保护机制限制。
应用存储术语
手机设置里的“内部存储容量”不能直接等同于 Android 开发文档中的 internal storage。
| 开发语境 | 含义与访问方式 |
|---|---|
| Internal storage | 应用私有内部目录,如 filesDir、cacheDir;通常不向其他普通应用开放,卸载时删除 |
| External storage | 可以是内置闪存上的模拟存储,也可以是可移除介质;不等于物理 SD 卡 |
| 外部存储中的应用专属目录 | 如 getExternalFilesDir()、externalCacheDir 对应目录;Android/data/<包名> 不是通用公共缓存目录 |
| 共享媒体与文档 | 照片、音乐、下载文件等,按用途使用 MediaStore、Photo Picker 或 Storage Access Framework |
Android 10 引入分区存储(scoped storage),具体行为还与应用 target SDK 和后续版本有关。旧的 READ/WRITE_EXTERNAL_STORAGE 不能作为现代 Android 上“访问任意公共文件”的通行证;Android 13 等版本进一步细分媒体权限,文件选择器还可授予特定 URI 的访问权。
权限与调试
- Linux
rwx控制传统文件访问;SELinux 的强制访问控制也约束 root 进程,不应把关掉 SELinux 当作普通调试步骤。 adb shell通常以受限的 shell 身份运行,不自动获得 root。USB 调试需主机授权,无线调试有独立配对流程,见 adb。- Android Studio 的 Device Explorer 可查看允许访问的文件;可调试应用的私有目录可通过调试机制访问,不是必须 root 才能看到任何
/data/data内容,也不能查看所有应用数据。 - Recovery 的进入方式、bootloader 解锁与 fastboot 支持由设备决定,不能通用地指定一组按键或刷机路径。
历史玩机备忘
原记录列出 shizuku 和 scene,没有版本、下载来源或使用结果。
- Shizuku:上游说明其通过以 adb 或 root 权限启动的进程,让支持它的应用使用部分系统 API;使用 Shizuku 不等于设备已经 root。
- scene:保留原始名称,尚不能据此确定具体应用与版本。
- 原记录还写了“drawin / 苹果开源系统”:可对应的系统名称是 Darwin,属于 Apple 开源系统基础,与 Android 不是同一实体;这里保留为旧备忘,不当作 Android 组件。