本文原创作者:Cloud Chou .欢迎转载。 请注明出处和这篇文章的链接
1. asec文件是什么? asec的全名是Android安全外部缓存
以前,安装APP后,所有APP和APP数据都位于data分区中,但data分区的存储空间经常不足。
于是从安卓2.2,Froyo版本开始,安卓开始支持App2Sd功能。
App2Sd是指安装apk时将apk安装在Sd卡上,apk的数据也放入Sd卡中,
官方的app2sd功能是鸡肋,开发者自己决定是否支持app2sd功能,如此大部分的APP应用都不支持app2sd功能
实现民用app2sd功能时,将sd卡直接装载到data目录中,所有数据都放在sd卡上。
如果SD卡足够大,就可以解决手机data分区不够的问题。
正式的app2sd功能实现后,将创建/sdcard/android_secure,
然后,在此目录中为每个支持app2sd功能的APP应用程序创建一个asec文件
2 .实现正式app2sd功能最初正式实现的app2sd功能,最初在/sdcard目录下创建android_secure目录,
然后,在此目录下创建与支持app2sd功能的APP应用程序的包名称相对应的asec文件。
例如,对于com.shuame.mobile,创建的文件是com.shuame.mobile.asec。
asec文件是镜像文件,Android使用该文件创建loop设备。
Android还为每个APP应用程序创建装载点,如/asec/com.shuame.mobile
将创建的loop设备装载到/asec/com.shuame.mobile上
3. asec文件所在的目录首先,asec文件存储在/sdcard/android_secure目录中。
然后存储在/sdcard/.android_secure目录中
4 .保护SDcard目录下的android_secure目录不受其他第三方APP应用程序的影响,以保护SDcard目录下的android_secure目录免受其他第三方APP应用程序的影响
首先,在/sdcard/android_secure目录中挂载只读、零字节的临时文件系统。
这将阻止第三方APP应用程序对目录进行操作
为此,请执行以下步骤:
1 ) mountcheckedmediaatasecurelocation (/mnt/secure/staging )。
2 ) ensure/Android _ secureexistsonthemedia,((creating if it doesnt ) ) ) ) ) ) )。
3 )绑定-装载/mnt/secure/staging/Android _ secure-/mnt/secure/asec
(where only root can access it )
4 ) mountanrdonlyzero-sizedtmpfsover/mnt/secure/staging/Android _ secure
5 ) atomically move/mnt/secure/stagingtothepubliclyaccessablestorage
对于目录(/mnt/SD card )和move装载,实际上使用了MS_BIND选项
采取此措施后,Android为每个APP应用程序创建的装载点也发生了变化。
放入/mnt/asec目录,例如/mnt/asec/com.shuame.mobile中,
因此,在支持app2sd功能的手机中,/mnt/asec/*的挂载点很多
之后为了进一步保护android_secure目录,
将android_secure目录重命名为. android_secure目录
5. /data/app-asec目录用途/pathtoexternalstoragewhere * onlyrootcanaccessasecimagewheres * /
const char * volume :3360 sec _ ase cdir _ ext=”/mnt/secure/asec “;
/pathtointernalstoragewhere * onlyrootcanaccessasecimagefiles * /
const char * volume :3360 sec _ ase cdir _ int=”/data/app-asec “;
/mnt/secure/asec支持的外部sd卡上的. android_secure目录是,
/data/app-asec支持内置sd卡上的. android_secure目录,
此目录通常用于存储asec文件,Android系统将这些asec镜像文件存储在/mnt/asec/com.*