Android系统在2.1版本之前,应用程序是只能安装到机身内存(ROM)中,这一特性从某种角度上讲,阻止了Android的发展,因为ROM的空间是有限的,所以这一特性限制了应用程序的体积,也就限制了应用程序的功能。

  自从Android 2.2版本开始,Android系统引入了一个全新的功能——APP2SD,这个功能让Android系统允许将应用程序安装到SD卡上面,一方面节约出更多的ROM空间,另一方面也允许应用程序扩大自身的体积。

  但是仅仅Android系统支持APP2SD,这样还是不够的,应用程序如果不经过处理,仍然会一如既往的转进ROM里。这是因为Android系统保持向后兼容的特性。那么,如果让应用程序不装入ROM,而是装入SD卡呢?这需要在应用程序的Android清单文件manifest.xml的manifest元素里加入android:installLocation属性。其值为:perferExtenal或auto。

    perferExtental——意味着此应用程序安装到扩展存储(通常就是SD卡),但是系统不能保证应用肯定会安装到扩展存储。如果扩展存储没有空间或者不可用,那么系统仍然会将应用程序安装到ROM里。

    auto——意味着此应用程序可能安装到扩展存储,但是对安装位置没有特别偏好,将有系统根据自身算法,参考很多因素之后决定将此应用程序安装到哪里。

    internalOnly——意味着此应用程序只能被安装到ROM。

  一旦加入android:installLocation,不论其值为什么,用户都可以将应用程序在ROM和SD卡之间自由移动。当应用程序安装到SD卡后,需要注意以下几点:

    1. 仅apk文件保存在SD卡上,其他所有用户的私有数据、数据库、经过优化的dex文件和释放的原生代码仍然保存在ROM上。

    2. SD卡里的应用程序在进行安装时会被加密,因此安装在SD卡上的应用程序仅对安装这个应用程序的设备起效,在其他设备上将不能运行。

    3. 当用户启用USB大容量存储以共享文件给计算机、或者卸载SD卡,那么所有安装在SD卡上的应用都会被立即结束。

  由于安装在SD卡上的应用程序会受到SD卡状态的影响,所以为了确保应用程序的健壮性,在决定应用程序是否可以安装在SD卡上时,应该做到以下原则:

    1. 有后台服务(Service)的应用程序,不应该支持APP2SD上。因为Service是前台界面不可见的,在卸载SD卡或者启用USB时,用户并无法知道该应用程序的Service是否处于活动状态。所以可能造成Service的意外终止。

    2. 输入法程序不应该支持APP2SD。如果卸载SD或者启用USB,那么该输入法将被终止,并由系统默认输入法所替代。

    3. 壁纸和包含桌面小工具(Widget)等常显于界面的应用程序不应该支持APP2SD。

    4. AccountManager等与用户数据有关的应用程序不应该支持APP2SD,因为在SD卡正常挂载之前,程序都无法看到通过AccountManager创建的用户。

  如果应用程序有Service、或支持桌面小工具等以上提到的功能时,应该尽可能避免被安装到SD卡上。一种保险的做法是指定android:installLocation的值为internalOnly。

  由于APP2SD是Android 2.2版本的新特性,如果该应用程序被计划支持2.2之前的版本,做到向后兼容的话,那么需要进行以下步骤:

    1. 在manifest元素里加入android:installLocation属性,并指定其值为perferExternal或者auto。

    2. 指定andorid:minSdkVersion值,其值可以小于8(2.2版本之前)。

    3. 更改该应用程序的build target为API Level 8,以使编译器能编译此应用程序。(必须)如果不指定build target,那么旧的Android库将无法理解android:installLocation属性,也就无法编译此应用。

  实现以上三个步骤之后,那么如果此应用被安装到API Level低于8的设备上时,android:installLocation属性将被忽略。并且该应用会被安装于ROM上。

让Android应用程序支持安装到SD卡(APP2SD)相关推荐

  1. Android的.apk软件安装到sd卡的方法

    对于Android 2.2开始的软件可以装到到SD上的支持,对于adb命令而言也有了改进,对于Android 2.2固件中的pm命令开支持安装选项参数,这里新增了参数setInstallLocatio ...

  2. 把android系统装到sd卡,在Android系统中将软件安装在SD卡的方法

    这样就可以装上更多自己喜欢的软件了. 在Android手机刚面世的时候,系统版本1.5至后来的2.1都不支持把程序装到SD卡上,由于系统内置的空间较小,装不了太多软件,于是人们 想出App2SD的概念 ...

  3. Android 制定安装重写迁移至SD卡 APP2SD

    /********************************************************** 大家都知道写博客会很累的,希望 转载请注明出处:http://blog.csdn ...

  4. 让你的Android应用支持转移到SD卡

    最近买了台入门级的Android手机,可能大家已经猜到了中兴U880,在安装了几款应用后发现的确存储空间不够,由此想到如果能够将应用安装到SD卡里面就好了,其实如果你的应用不能转移到SD卡上的话,被卸 ...

  5. Link2SD_让2.1的系统也可以将程序安装在SD卡

    Link2SD: 一款能让android 1.6和2.1系统的用户将应用程序移动到的SD卡上,需要root权限支持,其实就是Link2SD挂载的ext2为/ data/sdext2你的SD卡分区,使a ...

  6. 应用程序安装在sd卡还是内存选择及设置

    点击打开链接 主要内容是介绍如何使得自己开发的android程序安装到外置储存设备(如sd卡),安装到外置储存设备(如sd卡)的程序有哪些特别的地方.兼容性.哪些软件最好安装在内存中,哪些最好安装在外 ...

  7. android app安装在存储卡,怎么把应用安装到sd卡?节约手机空间的诀窍

    伴随着科技的不断进步和发展,现在互联网领域的各个数据量也变得越来越大,尤其是照片和视频,过去一张照片可能也就差不多100多k,而现在的一张照片就差不多5M甚至更大.为此,虽然手机的存储空间扩大了,但是 ...

  8. 魅蓝note6的android怎么升级,魅蓝note6怎么把应用安装到sd卡

    魅蓝note6升级到安卓6.0后不再支持把应用安装到sd卡,我们可以通过刷机降级的方式恢复该功能.将魅蓝note6系统版本刷至Flyme 6.1.4.7A后,打开手机设置并进入[存储备份]选项,选中需 ...

  9. Android应用程序未安装错误:Installation error: INSTALL_FAILED_UID_CHANGED

    Android应用程序未安装错误: Android开发时使用Eclipse或AS 安装应用到手机时会报错 错误信息如下 Installation error: INSTALL_FAILED_UID_C ...

最新文章

  1. Android开发之三种动画
  2. pytorch Spawning 子线程
  3. DataGrid中的高级ToolTip
  4. 【存储知识学习】第三章磁盘原理与技术3.2磁盘的通俗演绎和3.3磁盘相关高层技术--《大话存储》阅读笔记
  5. IBatis.Net学习笔记(四)--再谈查询
  6. ExtJS + Gears
  7. 学习mysql中使用inner join,left join 等
  8. K8S集群安装KubeSphere失败记录
  9. 【Clickhouse】Clickhouse MergeTree家族引擎
  10. 让多核CPU占用率曲线听你指挥(Windows实现)——《编程之美》1.1学习笔记
  11. [福大软工] Z班 软件工程实践总结 作业成绩
  12. 力扣题目系列:860. 柠檬水找零
  13. 696.计数二进制子串(力扣leetcode) 博主可答疑该问题
  14. html可视化编辑器 mac,Sparkle For Mac v2.8.11 强大的可视化网页编辑设计工具 _ 黑苹果乐园...
  15. NVIDIA安装程序失败(组件全部未安装)
  16. C#窗体 绘画一棵树
  17. MATLAB去除数据中的异常值、离群值
  18. 【论文分享】图嵌入恶意域名检测算法:Malicious Domain Detection via Domain Relationship and Graph Models
  19. 图解通信原理与案例分析-30:6G-天地互联、陆海空一体、全空间覆盖的超宽带移动通信系统
  20. Linux中安装亚马逊OpenJDK11

热门文章

  1. 区块链新规,不可忽视的几个细节
  2. Mixly第三方库开发的两种方法——U8g2库二次开发
  3. 数据分析实际案例之:pandas在餐厅评分数据中的使用
  4. 每日关注:微软发Bing可视化搜索功能(9月15日)
  5. 学猫叫歌词计算机,学猫叫歌词 小峰峰(陈峰)、小潘潘(潘柚彤)_晴格歌词网
  6. 安全标准ISO7498-2(Security Architecture)名词定义
  7. 成熟男人的处事说话技巧
  8. 甲骨文战略收购一览表
  9. 没有今天的百度,难道它真的天亮了?
  10. 刷机后的路由器使用经历