Android系统在2.1版本之前,应用程序是只能安装到机身内存(RAM)中,这一特性从某种角度上讲,阻止了Android的发展,因为RAM的空间是有限的,所以这一特性限制了应用程序的体积,也就限制了应用程序的功能。
自从Android 2.2版本开始,Android系统引入了一个全新的功能——APP2SD,这个功能让Android系统允许将应用程序安装到SD卡上面,一方面节约出更多的RAM空间,另一方面也允许应用程序扩大自身的体积。
但是仅仅Android系统支持APP2SD,这样还是不够的,应用程序如果不经过处理,仍然会一如既往的转进RAM里。这是因为Android系统保持向后兼容的特性。那么,如果让应用程序不装入RAM,而是装入SD卡呢?这需要在应用程序的Android清单文件manifest.xml的manifest元素里加入android:installLocation属性。其值为:perferExtenal或auto。
<manifest xmlns:android=http://schemas.android.com/apk/res/android
android:installLocation="preferExternal"
...
>
perferExtental——意味着此应用程序安装到扩展存储(通常就是SD卡),但是系统不能保证应用肯定会安装到扩展存储。如果扩展存储没有空间或者不可用,那么系统仍然会将应用程序安装到RAM里。
auto——意味着此应用程序可能安装到扩展存储,但是对安装位置没有特别偏好,将有系统根据自身算法,参考很多因素之后决定将此应用程序安装到哪里。
internalOnly——意味着此应用程序只能被安装到RAM。
一旦加入android:installLocation,不论其值为什么,用户都可以将应用程序在RAM和SD卡之间自由移动。当应用程序安装到SD卡后,需要注意以下几点:
1. 仅apk文件保存在SD卡上,其他所有用户的私有数据、数据库、经过优化的dex文件和释放的原生代码仍然保存在RAM上。
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属性将被忽略。并且该应用会被安装于RAM上。
分享到:
相关推荐
标题 "APP2SD 软件安装到内存卡上" 提到的是一个常见的智能手机优化技巧,即移动应用程序(Apps)到外部存储设备,通常是SD卡,以释放手机内部存储空间。这种做法对于那些内置存储容量有限,但经常需要下载和使用...
为了解决这个问题,Android引入了App2sd功能,允许用户将应用程序移动或安装到外部SD卡上,以扩展可用的存储空间。然而,并非所有Android版本都支持此功能,特别是早期版本如Android 2.1、2.01、1.6和1.5。以下是一...
在Android操作系统中,将应用程序安装到SD卡上是一种节省手机内置存储空间的有效方法。这个过程涉及到Android系统的存储管理机制,以及一些系统级别的设置。本文将详细介绍如何在Android设备上实现软件向SD卡的安装...
在Android操作系统中,"app2sd"是一种技术,允许用户将应用程序的数据和缓存移动到外部SD卡上,以缓解手机内部存储空间的压力。这里我们聚焦于华为C8500手机,它运行的是Android 2.1系统,这是一个相对较早的版本。...
1. **Link2SD**: 这是一款非常流行的App2SD工具,它允许用户将应用程序链接到SD卡,即使SD卡被卸载,应用程序仍可正常运行。 2. **Move2SD Enabler**: 这款应用可以帮助那些不支持默认App2SD功能的设备进行应用移动...
App2SD,全称是“应用程序到SD卡”,是一种在Android设备上将应用程序移动到外部SD卡的技术。这个过程有助于释放手机内部存储空间,尤其对于那些内置存储容量较小或者经常安装大量应用的用户来说,非常实用。App2SD....
这个过程涉及到Android系统的分区管理,通常在Android 2.2(Froyo)版本以上,系统开始支持将应用安装到SD卡的功能,但并非所有应用都能完美地在外部存储运行。data2whatever工具则是进一步优化了这一过程,特别是...
在Android平台上,开发一款应用程序与外部SD卡进行交互是一项常见的需求。这个例子专注于使用Delphi这一集成开发环境(IDE)来构建一个能读取外部SD卡的Android应用。Delphi,以其强大的对象 Pascal 语言为基础,为...
针对这一问题,Android提供了将APK默认安装到外部存储器(如SD卡或TF卡)的设置选项,以扩大应用的存储空间。 首先,了解Android对存储器的划分:内部存储器(Internal Storage)通常包括系统分区和用户数据分区,...
app2sd功能是指将Android设备中安装的应用程序移动到外部SD卡上,以缓解ROM(内置存储)空间不足的问题。这一功能的名称源自英文“APP TO SD”,简写为app2sd,意味着将应用程序从ROM移动到SD卡上。尽管“two”与...
1. **应用移动到SD卡**:AppMgr Pro III的核心功能之一就是帮助用户将应用程序从手机内部存储移动到外部SD卡。这一功能对于那些占用大量存储空间的应用来说尤其有用,它能有效地释放手机内存,提升设备运行速度。 2...
通过以上步骤,我们可以实现一个完整的Android应用程序,能够录制视频音频并将其存储到SD卡,同时以列表形式显示并点击播放。这个实例涵盖了Android多媒体处理的核心知识,对于理解和实践Android应用开发具有很高的...
"收集程序崩溃日志到SD卡"这个Demo就是这样一个实用工具,它演示了如何在Android应用发生错误时,自动将崩溃日志保存到设备的外部存储(通常是SD卡)上,以便后续分析。 首先,我们需要理解Android的日志系统。...
app2sd技术通过修改系统的配置,使应用程序在安装时或安装后能够将其数据和缓存移动到SD卡上,从而释放内部存储空间。需要注意的是,并非所有应用都支持app2sd,部分应用由于自身特性或系统限制可能无法移动。 3. *...
在Android系统中,判断双SD卡的存在是移动设备应用程序中常见的需求,特别是在处理大量数据存储或备份场景下。本项目“Android 判断双SD卡_CheckDoubleSDCard”提供了一个源码示例,帮助开发者理解如何在Android应用...
- 将插件APK的.dex文件提取到内存或存储中,如SD卡。 - 创建自定义的ClassLoader,指定 dex 文件的位置。 - 使用ClassLoader加载插件的类,并通过反射调用其方法。 4. **安全与权限管理**:由于插件apk无需安装...
然而,通过一些技术手段,我们可以将Android系统的软件安装位置移动到SD卡上,从而扩展可用的存储空间。下面详细介绍这个过程: 首先,需要对SD卡进行分区。这包括创建两个不同的分区:一个FAT32分区用于存储常规...
1. **APP2SD是什么**:APP2SD是指将Android系统中的应用程序从手机内部存储(ROM)移动到外部存储卡(SD卡)的技术。它的全称可能是"APP to SD",由于"to"与数字"2"的发音相似,所以简称为APP2SD。这项技术的主要...
【G13一键App2SD】是一款专为HTC G13智能手机设计的应用程序,它旨在简化用户将手机中的应用程序移动到外部SD卡(App2SD)的过程。这个工具通过一键操作,使得原本可能需要复杂步骤和技术知识的操作变得简单易行,...
在Android系统中,内外置SD卡的管理是一个重要的部分,特别是在开发涉及文件存储的应用时。本文将详细探讨“Android判断获取内置外置sd卡demo”所涵盖的知识点,并提供相关代码示例。 首先,理解Android对存储卡的...