我正在编写一个与 Android 1.6 兼容的应用程序,但我想为运行 Android 2.2 的用户提供将应用程序安装移动到他们的 sd 卡的选项。
如何为 1.6 编译我的应用程序,但仍允许 2.2 用户将其安装到他们的 sd?
我正在编写一个与 Android 1.6 兼容的应用程序,但我想为运行 Android 2.2 的用户提供将应用程序安装移动到他们的 sd 卡的选项。
如何为 1.6 编译我的应用程序,但仍允许 2.2 用户将其安装到他们的 sd?
在您的清单中:
<manifest>
,加上“ android:installLocation="preferExternal
”uses-sdk
为“ <uses-sdk android:minSdkVersion="4">
”然后转到 Project > Properties > Android(在左侧),将构建目标更改为 2.2,一切就绪。
您的项目将使用 2.2 构建(但仍然只需要 1.6),但运行 1.6 的设备将简单地忽略清单中的新“installLocation”设置。请注意不要在您的实际代码中添加任何 2.2 引入的材料,因为编译器将不再捕获它。
这并不像开发人员指南建议的那样无缝。首先,当清单中存在 installLocation 并且构建目标设置为 2.2 以外的任何内容时,应用程序不会构建:
error: No resource identifier found for attribute 'installLocation' in
package 'android'
因此,为了通过将构建目标设置为 1.6 来测试向后兼容性,还必须编辑清单。
其次,一旦构建目标设置为 2.2,我就无法选择 API 级别较低的模拟器进行测试。不过,我仍然可以手动启动 1.6 模拟器并在其上运行应用程序,但我很好奇如果我的构建目标是 2.2(即使 minSdkVersion=4),我的应用程序是否会出现在 1.6 设备的 Android Market 上。我没有要测试的实际设备。有人可以确认这不会影响市场上的可用性吗?
最后,这个警告仍然存在:
Attribute minSdkVersion (4) is lower than the project target API level (8)