Google Android手机的软件为了安全性和稳定性都是默认安装到手机内存里,但是手机内存有限,所以我们会做app2sd操作,来让我们安装的软件放到sd卡上,这个操作是需要rom的支持的。
    Android 2.2 可以将手机程序安装在外置的sd卡上,也就是我们平常所说的app2sd。但是,官方的app2sd非常鸡肋,需要软件自身支持安装在内存卡上才可以,也就是说用官方的app2sd,要把程序安装在内存卡上,并不是我们使用者说了算,而是软件开发者说了算。经测试安装60多个软件,其中仅有可怜的5个程序能使用官方的app2sd安装在内存卡上。所以,官方的这个app2sd就是忽悠人的。当然,现在很多第三方ROM都自带了第三方的app2sd,可以将任何程序都安装在sd卡上。
    在正式介绍app2sd之前,我先要介绍下android系统的几个比较重要的目录,这是理解后面内容的基础。

/system 存放的是rom的信息;/system/app 存放rom本身附带的软件即系统软件;/system/data 存放/system/app 中核心系统软件的数据文件信息。
    /data 存放的是用户的软件信息(非自带rom安装的软件);/data/app 存放用户安装的软件;/data/data 存放所有软件(包括/system/app 和 /data/app 和 /mnt/asec中装的软件)的一些lib和xml文件等数据信息;/data/dalvik-cache 存放程序的缓存文件,这里的文件都是可以删除的。

/mnt 目录,熟悉linux的人都清楚,linux默认挂载外部设备都会挂到这个目录下面去,如将sd卡挂载上去后,会生成一个/mnt/sdcard 目录。
    /sdcard 目录,这是一个软链接(相当于windows的文件夹的快捷方式),链接到/mnt/sdcard 目录,即这个目录的内容就是sdcard的内容。
    在Android 2.2之后的版本允许将应用程序安装于SD卡,每一个安装在SD卡的应用程序,都可以在SD卡中的/sdcard/.android_secure 目录里找到名称中有出现它的程序名,和副文件名为asec的经过特殊加密处理后的档案。当SD卡挂载于手机时,/mnt/sdcard/.android_secure 目录会被映射到/mnt/asec 目录和 /mnt/secure 目录。其中/mnt/asec 目录中主要是程序的安装目录,包括其执行文件和lib文件等;而/mnt/secure 目录中就存放程序加密后的档案。也就是说,在/mnt路径下看到的/mnt/asec目录和/mnt/secure目录并不是真正存在在手机内存或者sd卡的分区挂载目录,它们只是/mnt/sdcard/.android_secure目录的一个影像而已。
    因此,用户程序安装到到sd卡上后,其内容可能分散到:/mnt/asec , /mnt/secure , /data/data 。

要实现app2sd,目前比较流行有两种方案,分别是app2ext 和 data2ext,下面分别介绍下这2种方案。

在Linux文件系统中,有一种特别的文件叫“软链接”,类似于Windows下的快捷方式,软链接可以把一个文件或者文件夹映射到别的地方,一个例子如上面介绍的/sdcard 就是/mnt/sdcard 的软链接。

app2ext的原理是,删除data区中的app文件夹,然后在sd卡的ext分区上创建一个app文件,并通过软链接映射到data区。这样系统会以为,app这个软链接是一个真实的文件夹,会把程序都安装在里面,但实际上,这些程序都安装到卡上了。但由于操作系统并不知道,所以这种情况下,我们依然看到系统显示这个程序是安装在“内置空间”的。
    data2ext则更彻底,它不是用软链接,而是直接用“挂载”功能,Linux下所有的存储设备都必须挂载成一个文件夹才能进行文件操作(如sd卡就挂载在/mnt/sdcard目录下面)。data文件夹本来是对应手机内部Flash中的一个分区(为了保持术语的准确,这里要把内部Flash和内存相区别,内部Flash是ROM,内存是RAM)。而data2ext则是修改了挂载对应关系,使data文件夹挂载的不是内置Flash,而是sd卡的整个ext分区。这样,不仅是app,连存储程序设置的data和缓存dalvik-cache都会存储到sd卡中。

可以看到,dalvik-cache和data这两个文件夹的位置,是这两种方式的一个重大区别。其中dalvik-cache是虚拟机预编译缓存,data(不同于/data,这个是/data/data)是存储程序数据的地方,例如游戏的存档记录,软件的配置信息等。这样有什么区别,区别在于假如你重刷了ROM,app2ext的话,所有的程序都可以保留,但是这些程序的配置信息和游戏的存档都会丢失。而data2ext则可以连同配置和存档都保留,但是dalvik-cache也是一个容易积累垃圾的地方,这些垃圾也会一同保留。

data2ext由于是把整个data分区都放在sd卡上,因此,我们刷ROM需要WIPE的时候,这个data分区的内容就可能不会被wipe,这可以保存用户的个人资料,但是也可能造成系统莫名其妙的故障。

有关/mnt/asec /mnt/secure文件夹及app2sd原理相关推荐

  1. /mnt/asec /mnt/secure文件夹

    Google Android手机的软件为了安全性和稳定性都是默认安装到手机内存里,但是手机内存有限,所以我们会做app2sd操作,来让我们安装的软件放到sd卡上,这个操作是需要rom的支持的.     ...

  2. android手机几个目录的介绍:/system/app; /system/vender;/data/app;/data/dalvik-cache;/mnt/asec;/mnt/secure

    看到很多android用户搞不清楚自己手机里这些目录到底是干什么的,索性就一一解释清楚,当然也会涉及到系统软件和用户自己的软件的区分,以及app2sd(软件搬家:从内存搬到SD卡)方面的知识 /sys ...

  3. /hgfs下无共享文件夹?/mnt下没有hgfs文件夹?vmhgfs-fuse:找不到命令?

    前言:最近在使用linux的过程中,需要在宿主操作系统与客户操作系统间建立共享文件夹,遇到了些许问题,在网上参考了许多文章与各种尝试后,现得以解决,分享如下. 1.系统环境: 宿主操作系统:Windo ...

  4. Ubuntu 在设置共享文件夹时/mnt下没有hgfs文件夹(vmware-tools)

    虚拟机设置共享文件夹(关机后) 编辑虚拟机设置 默认存放在/mnt/hgfs/share中.(但是发现在/mnt下没有hgfs目录) 在虚拟机图标上右键,选择重新安装vmware-tools,VMwa ...

  5. sdcard 和mnt/sdcard 两个文件夹的区别

    mount   的缩写是mnt ,在Linux系统中,这是一个命令,意思就是挂载一个文件系统,在这个目录下的文件就可以访问了,在Windows下是对磁盘进行分区,而在Linux下是以文件夹进行存储的, ...

  6. 关于文件文件夹加密隐藏原理的一点想法

    最近研究了市面上比较常见的几款文件加密软件原理, 单文件的加密解密已经没什么可说的了. 常见的文件夹加密方法被我归纳为以下4种: 1.利用windows系统特殊的保留文件名后缀,使文件夹无法打开和删除 ...

  7. android系统目录和作用是什么意思,安卓Android手机系统内文件夹目录解释

    public static final String SDPATH = Environment .getExternalStorageDirectory().getAbsolutePath(); // ...

  8. 安卓Android手机系统内文件夹目录解释

    Bluestorm's Space 博客园 首页 新随笔 联系 订阅 管理 随笔- 423 文章- 3 评论- 58  /storage/sdcard, /sdcard, /mnt/sdcard 三者 ...

  9. kali创建文件_在kali中使用ecryptfs创建加密文件夹-bin文件夹

    在linux中有一个加密工具叫ecryptfs,我们可以在kali中安装它,创建一个用于加密的文件夹,用eCryptFS加密的伪文件系统挂载到你现有的文件系统上,把我们需要加密的文件放入这个文件夹就可 ...

最新文章

  1. 乐视网回击贾跃亭:债务处理没有进展,先拿出57亿再说
  2. 计算机网络拓扑分层,计算机网络和工程实践教程讲座主讲内容网络拓扑和分层体系结构.ppt...
  3. 全新的membership框架Asp.net Identity(2)——绕不过的Claims
  4. 超声波传感器闪光|乐高EV3教学
  5. 目标检测:Object Detection in 20 Years: A Survey
  6. CCNA考试题库中英文翻译版及答案16
  7. spyder使用笔记
  8. 既往不恋,当下不杂,未来不迎
  9. 正则表达式匹配原则和常用检验表达式
  10. Docker 配置国内镜像加速器
  11. 【FL论文阅读】Communication-Efficient Learning of Deep Networks from Decentralized Data
  12. 重磅突发!支付宝下架互联网存款产品,蚂蚁集团回应
  13. Javascript数组部分
  14. 第二个c程序,日语208音练习
  15. 00后表示真干不过,部门新来的00后网络安全工程师已把我卷崩溃,想离职了...
  16. 归一化数字角频率_数字信号处理中的各种频率
  17. 申请阿里云免费版SSL证书并配置在宝塔Nginx上
  18. 《麦肯锡方法》学习笔记9
  19. 惯性导航算法(五)-等效旋转矢量+双子样算法
  20. 《机器学习实战 学习笔记》(二):端到端的机器学习项目

热门文章

  1. 使用face-api实现html前端摄像头人脸检测
  2. bergerAimi
  3. 董明珠的权力危机:半年两位元老出局,格力进入动荡时刻
  4. 罗克韦尔 Allen-Bradley AB 1442系列传感器 电涡流传感器/速度传感器/加速度传感器
  5. SpringBoot 整合mybatis,mybatis-plus
  6. 细粒度图像分析综述2019
  7. 使用C语言开发web
  8. 【MATLAB教程案例3】QPSK解调过程的MATLAB开发
  9. java 计算 点是否在电子围栏范围内
  10. windbg调试ACPI ASL Code 实例一则