App2sd功能和Asec文件
本文原創作者: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.*
總結
以上是生活随笔為你收集整理的App2sd功能和Asec文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于APP2SD
- 下一篇: STM32FSMC扩展SRAM