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.*

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 扩展卡尔曼滤波算法及仿真实例[通俗易懂]

    扩展卡尔曼滤波算法及仿真实例[通俗易懂]在阅读本篇博客之前希望读者已经具备线性卡尔曼滤波器的基础,或者提前研读我的前一篇关于线性卡尔曼滤波器的文章:线性卡尔曼滤波算法及示例。下面不说废话,直奔主题了。一、扩展卡尔曼滤波器(EKF)理论基础扩展Kalman滤波器算法实质上是一种在线线性化技术,即安装估计轨道进行线性化处理—-泰勒级数展开,再进行线性的Kalman滤波。实际非线性滤波处理,通常对过程噪声和观测噪声近似为高斯分布,…

  • stm32蓝牙模块控制小车_51单片机蓝牙控制小车

    stm32蓝牙模块控制小车_51单片机蓝牙控制小车STM32库函数开发系列文章目录第一篇:STM32F103ZET6单片机双串口互发程序设计与实现第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案文章目录STM32库函数开发系列文章目录前言一、最简单DIY基于STM32单片机的蓝牙智能小车设计方案是什么?二、使用步骤1.准备硬件2.准备一个串口通信的代码3.修改源码三、运行与调试总结前言    daodanjishui物联网核心原创技术之最简单DIY基于STM32单片机的蓝牙智能小车设计方案。    市面上有各种开源STM3

    2022年10月10日
  • IIS7 HTTP.sys远程代码执行漏洞

    IIS7 HTTP.sys远程代码执行漏洞POC:GET/welcome.pngHTTP/1.1Host:www.test.comRange:bytes=0-18446744073709551615显示结果若是包含以下结果证明漏洞存在: RequestedRangeNotSatisfiable 转载于:https://blog.51cto.com/zhpfbk/1878418…

  • 球迷 如何在Linux纯命令行玩转谷歌浏览器,边看欧洲杯,边看足球宝贝[通俗易懂]

    球迷 如何在Linux纯命令行玩转谷歌浏览器,边看欧洲杯,边看足球宝贝[通俗易懂]lsp们,如何在Linux命令行,玩转谷歌浏览器,边看欧洲杯,边搜索足球宝贝

  • “交通·未来”第19期:面向事件的人流预测以及基于人流的救护车需求预测

    “交通·未来”第19期:面向事件的人流预测以及基于人流的救护车需求预测2020年6月份,公众号正式推出了“交通·未来”系列线上公益学术活动等你来~,2021年,新起航新征程,我们继续前行~3月13日晚上19:00,我们将迎来活动的第19期。1、讲座主题…

  • 【sql修改字段类型大小】

    【sql修改字段类型大小】之前在百度上面查询到修改字段的语句:alerttable表名altercolumn列名类型【大小】nullornotnull;但是执行完这句话后发现报错后来修改一下语句altertable表名modify(列名类型【大小】);ok,编译通过。注意:1.()内不能还有column关键字2.()内不能含有nullornotnull关键字使用第二种修改方式可以顺利执行成功。…

发表回复

您的电子邮箱地址不会被公开。

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