`

应用程序安装在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

分享到:
评论

相关推荐

    APP2SD 软件安装到内存卡上

    标题 "APP2SD 软件安装到内存卡上" 提到的是一个常见的智能手机优化技巧,即移动应用程序(Apps)到外部存储设备,通常是SD卡,以释放手机内部存储空间。这种做法对于那些内置存储容量有限,但经常需要下载和使用...

    内存卡的应用

    1. 权限管理:由于Android的安全模型,应用程序需要获取相应的读写权限才能访问SD卡。因此,在使用`SDCardFileExplorer`前,用户需要在应用的权限设置中授予它访问外部存储的权限。 2. 文件分类:`...

    Link2Sd将手机的应用挪到内存卡

    通常,Android系统默认将应用程序安装在手机的内部存储上,包括其APK(应用程序包)文件、数据文件和缓存。Link2Sd利用了Android系统的挂载和绑定功能,将这些文件从手机内存转移到SD卡。这涉及到对SD卡进行特定的...

    mmc.rar_MMC下载_MMC卡驱动程序_sd卡 驱动程序_sd卡驱动_sd卡驱动程序

    标题中的"mmc.rar_MMC下载_MMC卡驱动程序_sd卡 驱动程序_sd卡驱动_sd卡驱动程序",不仅体现了该资源的下载性质,还清晰地指明了内容涉及的存储卡类型(MMC和SD卡),便于目标用户快速识别和定位所需资源。...

    安装软件至SD卡

    2. **进入应用程序管理**:在设置菜单中,找到并进入“应用程序”或者“应用管理”设置,然后选择“管理应用程序”或“应用信息”。 3. **选择可移动的应用**:在"管理应用程序"界面,你会看到"已下载"的列表,显示...

    解决手机内存不足,让手机借用SD卡做内存.pdf

    Android系统虽然允许将应用程序移动到SD卡,但这种方式仅仅是将应用的数据部分存放在FAT32分区的SD卡上,实际占用的手机内存并没有减少。本文将介绍一种利用Link2SD工具,通过将SD卡进行特殊分区,将应用程序完全...

    内存卡分区

    这样做的好处是,用户可以在内存卡上安装更多的应用程序,而不受默认内部存储空间的限制。另一个分区则可以作为传统的外部存储,用于存储媒体文件和其他非应用数据。 进行内存卡分区需要使用专业的分区软件,这些...

    手机无限扩大内存

    通常需要创建一个扩展分区(ext2, ext3, 或 ext4格式)在你的SD卡上,以便存储应用程序的数据。 3. 接下来,选择你想要移动到SD卡的应用。应用会自动处理移动过程,确保应用能在SD卡上正常运行。 4. 完成上述步骤后...

    内存卡修复方法

    - 对于某些特定型号的手机(例如QD),可以尝试安装SeleQ等应用程序,并将其安装到手机存储而非内存卡中。这样可以绕过密码限制,进而清空内存卡内容。 ##### 3. I/O错误 当内存卡出现I/O错误时,计算机将无法正常...

    安卓手机内存扩展到TF卡(LINK2SD)

    1. **应用程序管理**:LINK2SD提供了方便的应用程序管理界面,用户可以轻松查看已安装的应用,选择哪些应用需要移动到SD卡,哪些保留在手机内存中。 2. **双击挂载**:通过创建一个链接,LINK2SD使得应用程序在启动...

    ANDROID内存卡分区工具

    在Android系统中,内存卡(通常指MicroSD或SD卡)是扩展设备存储空间的重要方式。内存卡分区工具是一款专为这些存储设备设计的应用,它能够帮助用户将内存卡划分为多个逻辑分区,以满足不同用途的需求。这些分区可能...

    Android把软件安装内存卡方法App2sd必看教程.docx

    App2sd是通过创建SD卡上的第二个分区(通常格式化为Linux支持的ext2、ext3或ext4),并将这个分区映射到系统目录system/sd下,使应用程序看似安装在这个"虚拟"目录中。这种方法虽然牺牲了一些应用的运行速度和稳定性...

    安卓内存卡分区

    另外,把应用程序安装在SD卡上并不意味着可以完全释放手机内部存储空间,因为应用程序的缓存数据通常仍然存储在手机内存中,这可能会占用一部分空间。此外,把应用程序的缓存数据移动到SD卡上可能会对应用的运行速度...

    android通过配置文件设置应用安装到SD卡上的方法

    在Android平台上,应用程序的默认安装位置通常是设备内部存储器,但有时由于应用的大小或用户设备的存储空间限制,可能需要将应用安装到外部存储器(通常称为SD卡)。为了解决这一问题,Android提供了通过配置文件...

    VM虚拟机安装Android2.2和设置虚拟SD卡[汇编].pdf

    3.2 设置虚拟SD卡:继续回车,选择第二个选项,新建虚拟SD卡,选择内存卡的大小,最大2047MB。 四、启动Android 2.2 4.1 重启虚拟机:选择第一个选项,重启虚拟机,出现启动界面,选择第二个选项,启动Android 2.2...

    内存卡清理应用源码

    内存卡清理应用源码是开发移动设备应用程序的重要资源,它为开发者提供了深入理解如何优化存储空间、提升设备性能的视角。源码是程序的基础,它包含了一系列编程语言编写的文件,这些文件共同构成了一个功能完整的...

    SD卡序列号修改工具(1).zip

    1. 数据隐私:在共享或出售SD卡时,为了保护个人隐私,用户可能会选择改变序列号,以防止数据被追踪。 2. 设备兼容性:某些设备可能对SD卡序列号有特定要求,如旧版设备可能无法识别新序列号,此时修改序列号可解决...

    文件转移sd卡工具

    "文件转移SD卡工具"就是专为了解决这个问题而设计的,它可以帮助用户将安装在手机内存中的应用程序轻松迁移到外部SD卡上,以此释放宝贵的内存资源,提升手机的运行效率。 该工具的核心功能在于其能够智能识别并处理...

    让32位程序能申请到4GB内存方法

    在Visual Studio中,右键点击项目,选择“属性”,然后在“应用”选项卡中,勾选“启用32位应用程序”(即使目标平台是x86,这个选项也是可用的)。这样,运行时会自动开启LAA。 需要注意的是,尽管程序可以申请更...

Global site tag (gtag.js) - Google Analytics