App2sd功能和Asec文件

App2sd功能和Asec文件本文原创作者:CloudChou.欢迎转载,请注明出处和本文链接1.asec文件是什么?asec的全称是AndroidSecureExternalCaches以前app安装好之后,app和app的数据都是放在data分区,而data分区经常存储空间不够,于是从Android2.2,Froyo版本开始,Android开始支持App2Sd功能,所谓的App2Sd就是安装ap

大家好,又见面了,我是你们的朋友全栈君。

本文原创作者:Cloud Chou. 欢迎转载,请注明出处和本文链接

1. asec文件是什么?

asec的全称是Android Secure External Caches
以前app安装好之后,app和app的数据都是放在data分区,而data分区经常存储空间不够,
于是从Android 2.2, Froyo版本开始,Android开始支持App2Sd功能,
所谓的App2Sd就是安装apk时把apk安装到Sd卡,apk的数据也放到sd卡,
官方的app2sd功能比较鸡肋,由开发者自己决定是否支持app2sd功能,这样大部分应用不支持app2sd功能
而民间的app2sd功能实现时,直接把sdcard挂载到data目录,这样所有的数据都会放在sdcard上,
如果sdcard够大的话,便能解决手机data分区不够的问题。
官方的app2sd功能实现时会建立/sdcard/android_secure,
然后在该目录为每个支持app2sd功能的应用建立asec文件

2.官方app2sd功能的最初实现

官方实现的app2sd功能,最初是在/sdcard目录下建立一个android_secure目录,
然后在该目录下为支持app2sd功能的应用建立一个对应包名的asec文件,
比如com.shuame.mobile,那么建立的文件是com.shuame.mobile.asec,
asec文件是一个镜像文件,Android利用该文件建立一个loop设备,
Android还会为每个应用创建一个挂载点,例如:/asec/com.shuame.mobile
然后将建立好的loop设备挂载到/asec/com.shuame.mobile

3. asec文件存在哪个目录

最初asec文件存放在/sdcard/android_secure目录,
后来存放在/sdcard/.android_secure目录下

4. 为了保护sdcard目录下的android_secure目录不被其它第三方应用搞坏,所采取的措施

为了保护sdcard目录下的android_secure目录不被其它第三方应用搞坏,
最先采取的措施是采取挂载一个只读并且零字节的临时文件系统到/sdcard/android_secure目录,
这样第三方应用就不能操作该目录
为了实现该目的,采取的步骤如下所示:
1) Mount checked media at a secure location (/mnt/secure/staging)
2) Ensure /android_secure exists on the media, (creating if it doesnt)
3) Bind-mount /mnt/secure/staging/android_secure -> /mnt/secure/asec
(where only root can access it)
4) Mount an RDONLY zero-sized tmpfs over /mnt/secure/staging/android_secure
5) Atomically move /mnt/secure/staging to the publicly accessable storage
directory (/mnt/sdcard),move挂载时,其实是使用了MS_BIND选项
采取这个措施后, Android还为每个应用创建的挂载点也变化了,
放在/mnt/asec目录,例如/mnt/asec/com.shuame.mobile,
所以在支持app2sd功能的手机上常常可以看到很多/mnt/asec/* 的挂载点
后来为了进一步保护android_secure目录,
将android_secure目录重命名为.android_secure目录

5. /data/app-asec目录用途

/Path to external storage where *only root can access ASEC image files*/
const char *Volume::SEC_ASECDIR_EXT = “/mnt/secure/asec”;
/Path to internal storage where *only root can access ASEC image files*/
const char *Volume::SEC_ASECDIR_INT = “/data/app-asec”;
/mnt/secure/asec对应外置sd卡上的.android_secure目录,
/data/app-asec对应内置sd卡上的.android_secure目录,
该目录下一般用于存放asec文件,Android系统会将这些asec镜像文件挂载到/mnt/asec/com.*

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162114.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • ipset如何与netfilter内核模块进行通信

    ipset如何与netfilter内核模块进行通信最近需要使用ipset,iptables,和netfilter,所以把三者的源代码看大概阅读了一遍。前面我们学习过应用层ipset和netfilter模块之间通信是采用的netlink套接字用户空间的ipset命令通过libipset.so这个库和内核通讯一、ipset主流程下面是我总结的主流程 二、用户层如何将创建set的名称和类型传递到内核层的我们都知道ip…

    2022年10月6日
  • linux怎么配置tomcat的端口,linux下安装tomcat及iptables开放端口

    linux怎么配置tomcat的端口,linux下安装tomcat及iptables开放端口在Linux运行Tomcat之前必须安装jdk,并配置环境变量。以下是Tomcat的安装配置:1.下载安装包解压以tomcat7为例,https://tomcat.apache.org/download-70.cgi,下载apache-tomcat-7.0.88.tar.gz即可可在/usr下建以tomcat目录,将安装包解压在此目录下即可tar-zxv-fapache-tomcat-7.0…

    2022年5月15日
  • Elasticsearch数据库

    Elasticsearch数据库1、什么是Elasticsearch1、概念以及特点        1、Elasticsearch和MongoDB/Redis/Memcache一样,是非关系型数据库。是一个接近实时的搜索平台,从索引这个文档到这个文档能够被搜索到只有一个轻微的延迟,企业应用定位:采用RestfulAPI标准的可扩展和高可用的实时数据分析的全文搜索工具。   2、可拓展:支持一主多从且扩容简易,只要clust…

    2022年6月14日
  • python垃圾回收机制原理

    python垃圾回收机制原理#python垃圾回收机制详解一、概述:  python的GC模块主要运用了“引用计数(referencecounting)”来跟踪和回收垃圾。在引用计数的基础上,还可以通过标记清除(markandsweep)解决容器(这里的容器值指的不是docker,而是数组,字典,元组这样的对象)对象可能产生的循环引用的问题。通过“分代回收(generationcollection)”以空间换取时间来进一步提高垃圾回收的效率。二、垃圾回收三种机制  1、引用计数  在Python中,大多数对象的生命周

    2022年6月24日
  • 枚举类型

    枚举类型

    2021年9月16日
  • java json对象和json字符串互转的方法_java json转字符串

    java json对象和json字符串互转的方法_java json转字符串java对象和JSON字符串互转

    2022年9月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号