美文网首页
APK安装路径移动至外部存储设备

APK安装路径移动至外部存储设备

作者: 坚持啊小伙子 | 来源:发表于2017-12-25 09:36 被阅读0次

背景:

新需求:APK能安装在外部存储器设备(TF卡或U盘)的功能区。

Android软件结构:

Android关于安装APK外部存储设备

App:

1)APP的AndroidManifest.xml中android:installLocation的数值为"preferExternal","auto","internalOnly".其中"preferExternal"把该app安装到"外部存储"

2)Settings

APK或者其他系统应用,调用boolean setInstallLocation(int loc)设置:app安装到"外部存储"

3)在安装程序中,调用的installPackageWithVerificationAndEncryption()中flag,添加PackageManager.INSTALL_EXTERNAL。app安装到"外部存储"。

注:1)"外部存储"在这里可能是内置SD卡,也可能是外置SD卡;2)部分APK不能被安装”外部存储”,则会返回Error

PackageManagerService:

1)安装Apk,处理“外部存储”等信息

2)其中内部类AsecInstallArgs通过PackageHelper,调用MouthService操作将“外部存储”与”/mnt/asec”相关内容。

MountService:

1)调用VOLD中内容,对/mnt/asec相关进行处理(及安装apk的目录的新建,mount等)

VOLD:

2)通过device

mapper将/mnt/asec/内的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存储空间或内置SD

现有方案:

目前代码已存在相关方案:在Settings选择”Default storage equipment”为外部存储区的时候,若在安装时候,PMS收到的消息安装信息中包含PackageManager.INSTALL_EXTERNAL,并APP。则将APP安装到外部存储区。

验证操作如下:

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相关设备节点是否存在,使用df命令查看外置SD卡的空间是否发生变化

需要对现有方案修改的点:

1)在packagemanagerservice中,添加判断条件,赋值flagPackageManager.INSTALL_EXTERNAL。或者其他方式,设置安装Apk为外部存储区域

整体方案风险:

1.因为对现网的盒子进行处理,所以必须考虑版本升级带来的问题。例如:升级后,data/app的原有aok是否能正常启动;升级后,再对/data/app/的缘由Apk进行升级,是否存在问题;

2.所有APK是否能安装成功。

3.在Apk使用过程中,若热插拔外部存储区(如:插拔SD),APK是否能导致整体系统出现异常;APK热插拔后,能否正常使用;插拔后,再次安装相同APK,能否安装成功。

4.外置存储区只能同事支持一个,中途修改外置存储位置将导致之前外置存储安装应用无法识别。

5.添加外置存储后会影响开机速度,而且和开机优化有冲突,建议关闭。

相关文章

  • APK安装路径移动至外部存储设备

    背景: 新需求:APK能安装在外部存储器设备(TF卡或U盘)的功能区。 Android软件结构: App: 1)A...

  • Android数据存储

    (一)文件存储分类: 获取文件路径:内部路径和外部路径如下: 文件写操作如下: 文件读操作如下: 文件存储在设备上...

  • adb常用命令

    1.查看连接设备 adb devices 2.安装apk adb install (apk在PC上的路径/)*.a...

  • Android获取外部存储设备路径

    StorageManager类中,以下三个接口都被标注为@hide: getVolumePaths()返回全部存储...

  • Android的一些小知识

    0. 查看Android设备上所有安装的apk及路径的命令:adb shell pm list packages ...

  • Adb - Linux 常用命令

    ADB常用命令 查看设备adbdevices 安装软件 adbinstall-r(APK路径) 卸载软件 adbu...

  • ADB常用命令

    ​查看设备连接:adb devices -l 安装app格式:adb install [.apk文件的绝对路径]例...

  • android存储分区和android11填坑

    android的物理存储划分 安卓设备的物理存储 分为两大块,内部存储和外部存储 内部存储设备中每一个安装的 Ap...

  • adb经常使用命令

    1.安装软件adb -s 设备 install apk包路径 2。卸载软件adb uninstall 应用包名 3...

  • adb 常用命令

    adb devices adb install + 指定apk文件位置 : 安装一个应用到移动设备 adb s...

网友评论

      本文标题:APK安装路径移动至外部存储设备

      本文链接:https://www.haomeiwen.com/subject/qhewyxtx.html