`

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

 
阅读更多

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

 

下面一段是个人废话,可忽略。。

手机内存已经多次告急,安装软件提示内存不足,请清理后再安装。。
国产的很多android软件,像新浪微博、人人网、qq、uc浏览器、腾讯微博、淘宝、支付宝、搜狗输入法、虾米音乐、网易公开课等等数不尽的android客户端,一个个无法移至sd卡,怒其不争啊,你搞社交的、搞电商的、搞音乐的,霸占着rom干啥。参考下国外的优秀电子书、游戏、图片android软件,哪有无法移动的。。唉

 

1、 设置android程序安装到外置储存设备(如sd卡)还是内存

从android api level 8(即andrid 2.2)后,允许将应用程序安装到外置储存设备(如sd卡)中,通过AndroidManifest.xml文件中manifest的android:installLocation属性设置:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      android:installLocation="auto">

此属性可以有preferExternalauto、internalOnly,可选。

preferExternal表示首选安装到外置储存设备(如sd卡)中,如果外设空间不足,则安装到内存中。可以将程序在外设和内存中进行移动

auto表示由系统根据若干因素自动选择将程序安装在外置储存设备还是内存中,可以将程序在外设和内存中进行移动。

internalOnly表示强制安装在内存中,通常用于一些含有必须安装在内存中特性的应用程序,见4的介绍

如果没有此属性表示安装到设备(如手机)内存中,并且不可移动至外设存储中。

 

2、安装到外置储存设备中的程序

若某程序被安装到外置储存设备中,则

(1)当外置储存设备(如sd卡)挂载在手机等设备上时,对应用程序的运行没有什么影响。

(2)apk文件保存在外设上,但是程序的所有私有数据,如数据库、优化后的.dex文件、提取出来的本地代码仍然保存在内存中。

(3)应用程序会被用随机生成的key加密后保存在外设上,只有原来安装该程序的设备(如手机)才能进行解密。所以说安装在外设上的程序只能被唯一的设备使用。

(4)用户可以通过系统设置将该程序移动到内存中。

(5)当外设从设备上卸载时,所有安装在外设上的应用程序被kill

 

3、向后兼容性

开头就介绍了从android api level 8(即andrid 2.2)后,允许将应用程序安装到外置储存设备(如sd卡)中。

对api 8之前编译的程序只能安装在内存中,就算安装在api 8及以上的平台上也无法在外设和内存中移动

如果希望拥有android:installLocation属性的程序能够在api 8以下的平台上运行,需要:

(1)在AndroidManifest.xml文件中manifest元素设置android:installLocation属性

(2)设置android:minSdkVersion,其值可以小于8。并且确保应用程序使用的api和该级别兼容

(3)在android api level 8编译程序,因为低级别的无法识别android:installLocation属性

这样当在api 8以下的平台上android:installLocation属性被忽略,程序安装在内存中

AndroidManifest.xml

 

4、哪些软件最好安装在内存中

当外设从设备上卸载时,所有安装在外设上的应用程序被kill,并且直到外设可用时,系统才能识别该应用程序。除了kill程序外,对于某些程序可能会产生更严重的后果,为了让你的程序始终运行在可预料情况下,当程序包含以下特性时,最好安装在内存中:

(1)Services(服务)

在外设卸载时,运行的服务会被kill,并且当外设可用时不会重新启动,除非注册ACTION_EXTERNAL_APPLICATIONS_AVAILABLE广播intent,这样可以在外设可用时重启服务

(2)Alarm Services(定时服务)

AlarmManager注册的Alarm会被取消,必须在设备可用时手动重启

(3)Input Method Engines(输入法)

在外设卸载时,安装在外设上的输入法不可用,系统会采用默认的IME。当外设可用时,系统必须重新启动该输入法

好吧,怪不得找不到一个可以安装到sd卡的输入法了。。

(4)Live Wallpapers(壁纸)

在外设卸载时,安装在外设上的Live Wallpapers不可用,系统会采用默认的Live Wallpapers

(5)Live Folders(home的文件夹)

在外设卸载时,安装在外设上的Live Folders不可用,系统会采用默认的Live Folders

好吧,怪不得htc默认的壁纸和工具不可移动了

(6)App Widgets(应用的Widgets)

在外设卸载时,安装在外设上的App Widgets不可用。通常直到系统重启方可用(或系统设置home应用程序)

(7)Account Managers

AccountManager创建的Account不可用直到外设可用

(8)Sync Adapters

AbstractThreadedSyncAdapter和所有其同步函数不可用直到外设可用

(9)Device Administrators

DeviceAdminReceiver和它所有的管理功能不可用

(10)Broadcast Receivers listening for "boot completed"

系统在外设挂载前,发出ACTION_BOOT_COMPLETED(系统启动完毕)广播,所以安装在外设上的程序收不到该广播

(11)Copy Protection

如果使用了Android Market's Copy Protection属性,则不可以安装在外设上。如果使用 Android Market's Application Licensing,则可以任意安装在外设还是内存内

 

5、哪些软件最好安装在外设中

毕竟内存有限,所以如果不包含4中所介绍属性最好安装在外设中。通常像apk文件较大的程序,游戏程序。

 

参考:

http://developer.android.com/guide/appendix/install-location.html

http://www.cnblogs.com/wisekingokok/archive/2011/08/26/2154505.html

分享到:
评论

相关推荐

    Unity应用获取外置SD卡路径方法

    Unity程序获取外置SD卡路径方法,包内包含PicoVR SDK,场景安装打包在手机上,可以看到分屏反畸变效果。

    MSDEV.EXE-应用程序错误解决办法.

    使用VS6.0(VC++ or other)打开或添加项目时出现[MSDEV.EXE-应用程序错误"0x5003eaed"指令引用的"0x0000000"内存,该内存不能为"read";"0x73d311c7"指令引用的"0x00000004"内存,该内存不能为"read" ],这个可能是VS6.0...

    \link2sd1.7汉化版.apk

    其一,不像连接了/data/app文件夹那样使所有自行安装的程序都将装在卡上,您可以选择安装程序至SD卡或机身内存。 其二,本程序是一个有着用户接口的程序!也就是说,您可简单地一键管理或移动其它应用程序。 功能: ...

    游戏画面就弹出内存不能为read修复工具

    作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给...

    安卓应用管理工具 AppMgr Pro III 5.19 中文多语免费版.zip

    您是否讨厌必须检查每个应用程序是否支持移动到SD卡?您是否需要一个能够自动为您执行此操作并在可以移动应用程序时通知您的应用程序?此组件可通过设备的“设置”简化将应用移动到设备的外部或内部存储中的过程。...

    0x00000000内存不能为read修复工具

    作为应用程序,在每一次申请内存后都应该检查返回值是否为 0,如果是,则意味着出现了故障,应该采 取一些措施挽救,这就增强了程序的“健壮性”。 若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是...

    如何在Android系统手机上安装软件的三种方法

    如果你的手机使用的是原生的或者没有集成程序安装器的ROM那么你需要去Market中下载一款名为App Installer(其实就是软件安装器)的软件。在Market中下载安装完成后,在程序菜单中就可以找到刚安装的App Installer了...

    AppMgr III Pro 4.68.apk

    如果它支持移动到SD卡,你是否讨厌检查每个应用程序?您想要一个能自动为您执行此操作的应用程序,并且可以在移动应用程序时通知您吗?此组件通过设备的“设置”简化了应用在设备外部或内部存储上的移动。有了这个,...

    IgeoMemoryCardDataRecovery(存储卡数据恢复)V1.0官方安装版

    Igeo Memory Card Data Recovery是一个非常强大的应用程序,可以让您从存储卡中恢复删除的文件。删除的文件可能是由于意外删除、人为错误,或者是由于计算机中的错误造成的。检索SD卡、XD卡、CF (Compact Flash)卡和...

    AppMgr_Pro_III_v4.76.apk

    AppMgr Pro III(App 2 SD)是一种工具,可让您管理设备上已安装的所有应用程序,包括在设备的内存和SD卡之间来回移动APK文件。这是AppMgr Pro III(App 2 SD)的主要且可能是最有趣的功能。它允许您通过将文件存储...

    ROM Toolbox Pro 6.5.1.0.apk

    ☆将任何用户应用程序移动到SD卡 ☆清理dalvik-cache ☆Zipalign,修复权限,擦除数据和缓存,强制关闭任何应用程序 ★Root Explorer★ ☆访问整个android的文件系统(包括难以捉摸的数据文件夹!)。 ☆批量复制/...

    无需重启即可在 Mac 上运行 Windows 的应用程序.rar

    是一款专业的 Mac 虚拟机,可在 Windows 与 Mac OS 应用程序之间随意拖放文件并直接从 Mac dock 启动 Windows 程序,能够在 Mac 上以最便捷、快速、高效的方式运行 Windows! 是功能强大灵活度高的虚拟化方案,无论...

    计算机应用基础试卷-带答题卡.doc

    xx大学网络与继续教育学院 《计算机应用基础》期末考试A卷 姓名:xxx 专业: 行政管理 学号:xxxxxxx 学习中心:xxxxxxxxxxx 成绩: 一、单项选择题(答案务必写在表格中,每小题1分,共30分) 1 "2 "3 "4 "5 "6 "7 ...

     一.JAVA程序传送到手机的方法:

     通过手机上网下载以及使用短信定购的方式,直接在手机的个人文档或者应用程序中找 到(根据手机各不相同),无需在安装,直接可以在类似"我的文件夹"之类的选项找到。  使用电脑下载就需要将文件传送到手机上。 ...

    Cognos10_Business_Intelligence_安装和配置

    ● 在单独的计算机上安装应用程序层组件和Content Manager。 选择此选项以基于组织的处理特性最大化性能、可用性、容量或安全性。 如果您计划安装Cognos Content Database,则可以在安装Content Manager 的计算机上...

    factorytalk-view-入门培训教程.pdf

    本地工作站上的设置, 用于构建及测试应用程序 ("通信设置"编辑器, "设计"(本地) 选项卡。 ) 部署到实际目标设备 (例如 PanelView Plus) 的设置("通信设置"编辑器"运行时"(目标)选项卡。 ) 根据联网设备...

    bios的设置,,,,,

    设置为"&lt;Fn+F2&gt;/Application"时无线设备可以通过"Quickset"等应用程序或热键启用或禁用。设置为"Always Off"时无线设备被禁用,并且不能在操作系统中启用。 Wireless 无线设备:使用该选项启用或禁用无线设备。该...

    安卓重复文件搜索工具 Search Duplicate File 4.96 中文免费版.zip

    支持内部存储,外部SD卡,OTG存储,安装点。 Android Kitkat有对外部SD卡的访问限制,请参阅下面的“已知问题”。 在“设置 – 常规”中指定文件类型|扩展|大小。 预览|定位|共享|保存图像,音频,视频或应用程序,...

    citrix 中文管理操作手册

    管理多个场中的应用程序及服务器 31 使用 Access Management Console 查看区域 31 管理用户会话和服务器进程 31 使用 Access Management Console 创建报告 31 使用 Access Management Console 配置应用程序访问权限 ...

    安卓系统调谐器

    安卓调谐器3C Toolbox(Android Tuner)是款应用合集,合并了电量显示器小部件、系统调整和多任务切换小部件等。 功能说明: - 支持Android 4.1.x Logcat 阅读器,自动...- 可测试和调整SD卡读取速度,支持内存详细分析

Global site tag (gtag.js) - Google Analytics