在Froyo(android 2.2,API Level:8)中引入了android:installLocation.通过设置该属性可以使得开发者以及用户决定程序的安装位置.
android:installLocation隶属于AndroidManifest.XML中的manifest节点.如下所示:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="string"
android:sharedUserId="string"
android:sharedUserLabel="string resource"
android:versionCode="integer"
android:versionName="string"
android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
. . .
</manifest>
android:installLocation可以设置为"auto"、"internalOnly"、"preferExternal"三个值中的任何一个.
auto:程序可能被安装在外部存储介质上(例如:SD Card),但是默认会被安装到手机内存中.当手机内存为空时,程序将被安装到外部存储介质上.当程序安装到手机上后,用户 可以决定把程序放在外部储介质还是内存中.
internalOnly:默认值.当设置为该值时,程序只能被安装在内存中,如果内存为空,则程序将不能成功安装.
preferExternal:将程序安装在外部存储介质上,但是系统不保证程序一定会被安装到外部存储介质上.当外部存储介质不可以或空时,程序将被安装到内存中.程序使用了for ward-locking机制时也将被安装到内存中,因为外部存储不支持此机制.程序安装后,用户可以自由切换程序应该在外部还是内部存储介质上.
注意:当程序使用了Google Play的Copy Protection特性时,只能安装到内存中.
当程序被安装到外部存储介质时,
① .apk文件将被移动到外部存储介质上,但是程序的数据仍然会在内存中
② 保存.apk文件的容器将会使用一个随机生成的密钥进行加密,这样只有安装该程序的设置可以使用存在外部存储介质上的数据.
警告:当外部存储介质被卸载时,安装在该外部存储介质上的程序将立刻被终止掉!
向后兼容性:
声明了android:installLocation,但android:minSdkVersion小于8时,我们使用不低于Froyo的AVD进行编译,这样在低于Froyo的系统中android:installLocation将被忽略,而不低于Fro yo的系统中将使用我们指定的android:installLocation.
当我们的程序具有如下行为时我们不应该将程序安装到外部存储介质上
①Service
正在运行的服务将被终止,当外部存储介质被重新加载时服务不会被重启.
②Alarm Service
闹钟服务将被取消,开发者必须在外部存储介质重新加载后重新注册闹钟服务.
③Input Method Engines
输入法将被换成系统输入法,当外部存储介质被重新加载后用户可以通过系统设置来启动我们的输入法
④Live Wallpapers
我们的动态壁纸将被替换为默认的动态壁纸.外部存储介质重载后,用户可以更换回来.
⑤Live Folders
我们的动态文件夹将被移出.
⑥App Widgets
我们的小部件将被移出,通常只有系统重启后我们的小部件才可用.
⑦Account Managers
使用AccountManager创建的账户将会消失,直至存储介质被重新加载.
⑧Sync Adapters
只有外部存储介质被重新加载时,我们的同步功能才可用
⑨Device Administrators
我们的DeviceAdminReceiver将会失效
⑩监听开机结束事件
系统会在加载外部存储介质之前发送ACTION_BOOT_COMPLETED广播.因此安装在外部存储介质的程序将不能接受开机广播.
通常,只要我们没有使用上述的特性,我们就可以将我们的程序安装到外部存储介质上.例如,大的游戏程序.当我们的APK文件有几M大时我们应该认真的考虑是否要将程序移动到外部存储介质上以帮助用户节省内存.
分享到:
相关推荐
- 不同版本的Android系统对于`android:installLocation`的支持程度不同,开发者需要确保应用能够在目标设备上正常运行。 - 需要注意的是,从Android 8.0(API级别26)开始,Google对应用的安装位置进行了限制,...
代码如下:android:installLocation=”preferExternal” 这样应用就会被安装在SD卡,不会出现存储空间不足的错误了。 您可能感兴趣的文章:Android SD卡上文件操作及记录日志操作实例分析将文件放到Android模拟器的...
同时,为了兼容不同的Android版本,需要在清单文件中声明`android:installLocation`属性: ```xml android:allowBackup="true" android:installLocation="preferExternal" <!-- 这里设置为 "preferExternal" -...
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0.2" package="com.companyname.boshiac.forklift.app" android:installLocation="auto"> ...
React Native Android Location Services对话框 从Android位置服务打开对话框的React-Native组件安装大多是自动安装(推荐) yarn add react-native-android-location-services-dialog-box 要么npm install react-...
在Froyo(android 2.2,API Level:8)中引入了android:installLocation.通过设置该属性可以使得开发者以及用户决定程序的安装位置. android:installLocation隶属于AndroidManifest.XML中的manifest节点.如下所示: <...
在Froyo(android 2.2,API Level:8)中引入了android:installLocation.通过设置该属性可以使得开发者以及用户决定程序的安装位置. android:installLocation隶属于AndroidManifest.XML中的manifest节点.如下所示: <...
所需开发环境: JDK 5 或 JDK 6 (仅有JRE不够) Eclipse 3.5 (galileo) ...启动 Eclipse,选择window->preferences,在打开的视图左边点击android,在右边的SDK Location中选择Android SDK所在位置。
随着移动互联网的发展,Android平台因其开放性和灵活性成为最受欢迎的移动操作系统之一。对于开发者来说,掌握如何在Windows环境下安装Android SDK(Software Development Kit)是进行Android应用开发的第一步。本文...
在不能上网的电脑上,执行“准备工作”中的第 5、6 步,然后将 android-sdk.zip 解压到指定目录,在 eclipse 中,打开菜单“Window”下的“Preferences”,将 Android 的“SDK Location”设定到此目录。即可完成 ...
启动 Eclipse,选择【Window】 > 【Preferences】>【Android】,然后设置"SDK Location"为 SDK 的安装解压目录。接着,需要配置虚拟设备,启动 Eclipse,选择【Window】>【Android SDK and AVD Manager】,然后创建...
但要注意,非市场来源的应用需要设置`android:installLocation="preferExternal"`来允许安装在外部存储,同时需要用户手动开启“未知来源”权限。 4. **权限处理**:在Android 6.0及以上版本,应用需要在运行时请求...
该项目不再维护。...cd android-mock-location-helper bundle install 用法 # Make sure that <android>/platform-tools is in your PATH. cd bundle exec rackup # Open http://localhost:9292/ in
### Android开发之旅环境搭建知识点详解 #### 一、环境搭建 **环境搭建是开始Android开发旅程的第一步。本文将详细介绍如何搭建完整的Android开发环境,并创建第一个应用“HelloWorld”。** ##### 1.1 JDK安装 -...
Eclipse作为一个广泛使用的集成开发环境(IDE),曾经是Android开发者们的首选工具之一。虽然现在更多的人倾向于使用Android Studio,但对于初学者来说,Eclipse仍然是一个不错的选择。 #### 二、环境搭建 ##### 1...
<manifest xmlns:android=”http://schemas.android.com/apk/res/android” package u201dcom.hzhi.restart” android:versionCode=”1″ android:versionName u201d1.0″ android:installLocation=”...
5. **配置Eclipse的Android SDK路径**:在Eclipse中,点击"Window" -> "Preferences" -> "Android",在SDK Location中指定你刚才解压的Android SDK路径。 6. **安装所需Android SDK版本**:在SDK Manager窗口(通过...
插件,并指定`installLocation`为`"preferExternal"`,这样模块就会被安装到外部存储卡上。 - 主应用的build.gradle文件需要声明对DFM的依赖,并设置`installTimeDelivery`或`onDemandDelivery`,前者表示安装时...