APK安裝路徑移動至外部存儲設備

背景:

新需求:APK能安裝在外部存儲器設備(TF卡或U盤)的功能區(qū)顿天。

Android軟件結構:

Android關于安裝APK外部存儲設備

App:

1)APP的AndroidManifest.xml中android:installLocation的數(shù)值為"preferExternal"蜀肘,"auto","internalOnly".其中"preferExternal"把該app安裝到"外部存儲"

2)Settings

APK或者其他系統(tǒng)應用,調(diào)用boolean setInstallLocation(int loc)設置:app安裝到"外部存儲"

3)在安裝程序中尼啡,調(diào)用的installPackageWithVerificationAndEncryption()中flag,添加PackageManager.INSTALL_EXTERNAL袋励。app安裝到"外部存儲"乙嘀。

注:1)"外部存儲"在這里可能是內(nèi)置SD卡显蝌,也可能是外置SD卡预伺;2)部分APK不能被安裝”外部存儲”,則會返回Error

PackageManagerService:

1)安裝Apk琅束,處理“外部存儲”等信息

2)其中內(nèi)部類AsecInstallArgs通過PackageHelper扭屁,調(diào)用MouthService操作將“外部存儲”與”/mnt/asec”相關內(nèi)容。

MountService:

1)調(diào)用VOLD中內(nèi)容涩禀,對/mnt/asec相關進行處理(及安裝apk的目錄的新建料滥,mount等)

VOLD:

2)通過device

mapper將/mnt/asec/內(nèi)的APP目錄映射成了ext4設備:/dev/block/dm-0

Android原生“App安裝到外部存儲”的功能,實際上是安裝/dev/block/dm相關的設備上艾船,鏈接(SEC_ASECDIR_EXT= "/mnt/secure/asec")葵腹。

3)外置SD插上時,將相關路徑(SEC_ASECDIR_EXT= "/mnt/secure/asec")mount到外置SD存儲空間或內(nèi)置SD

現(xiàn)有方案:

目前代碼已存在相關方案:在Settings選擇”Default storage equipment”為外部存儲區(qū)的時候屿岂,若在安裝時候践宴,PMS收到的消息安裝信息中包含PackageManager.INSTALL_EXTERNAL,并APP爷怀。則將APP安裝到外部存儲區(qū)阻肩。

驗證操作如下:

1)插入SD卡

2)將/system/build.prop中修改“ro.defaultStorage.enable=false”為”ro.defaultStorage.enable=true”

3)進入“Settings” ->”Default storage

equipment” ,然后選外置存儲設備

4)adb install –s apk路徑(例如:adb install –s testExample.apk)

5)查看/mnt/asec/是否存在安裝apk的相關信息,查看/dev/block/dm相關設備節(jié)點是否存在,使用df命令查看外置SD卡的空間是否發(fā)生變化

需要對現(xiàn)有方案修改的點:

1)在packagemanagerservice中烤惊,添加判斷條件乔煞,賦值flagPackageManager.INSTALL_EXTERNAL∑馐遥或者其他方式渡贾,設置安裝Apk為外部存儲區(qū)域

整體方案風險:

1.因為對現(xiàn)網(wǎng)的盒子進行處理,所以必須考慮版本升級帶來的問題雄右。例如:升級后空骚,data/app的原有aok是否能正常啟動;升級后擂仍,再對/data/app/的緣由Apk進行升級囤屹,是否存在問題;

2.所有APK是否能安裝成功逢渔。

3.在Apk使用過程中牺丙,若熱插拔外部存儲區(qū)(如:插拔SD),APK是否能導致整體系統(tǒng)出現(xiàn)異常复局;APK熱插拔后,能否正常使用粟判;插拔后亿昏,再次安裝相同APK,能否安裝成功档礁。

4.外置存儲區(qū)只能同事支持一個角钩,中途修改外置存儲位置將導致之前外置存儲安裝應用無法識別。

5.添加外置存儲后會影響開機速度呻澜,而且和開機優(yōu)化有沖突递礼,建議關閉。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末羹幸,一起剝皮案震驚了整個濱河市脊髓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌栅受,老刑警劉巖将硝,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異屏镊,居然都是意外死亡依疼,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門而芥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來律罢,“玉大人,你說我怎么就攤上這事棍丐∥蠹” “怎么了沧踏?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長稀余。 經(jīng)常有香客問我悦冀,道長,這世上最難降的妖魔是什么睛琳? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任盒蟆,我火速辦了婚禮,結果婚禮上师骗,老公的妹妹穿的比我還像新娘历等。我一直安慰自己,他們只是感情好辟癌,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布寒屯。 她就那樣靜靜地躺著,像睡著了一般黍少。 火紅的嫁衣襯著肌膚如雪寡夹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天厂置,我揣著相機與錄音菩掏,去河邊找鬼。 笑死昵济,一個胖子當著我的面吹牛智绸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播访忿,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瞧栗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了海铆?” 一聲冷哼從身側(cè)響起迹恐,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎卧斟,沒想到半個月后系草,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡唆涝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年找都,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廊酣。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡能耻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晓猛,我是刑警寧澤饿幅,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站戒职,受9級特大地震影響栗恩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜洪燥,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一磕秤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捧韵,春花似錦市咆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至芒篷,卻和暖如春搜变,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背针炉。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工痹雅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人糊识。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像摔蓝,于是被迫代替她去往敵國和親赂苗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容