4

我正在编写一个与 Android 1.6 兼容的应用程序,但我想为运行 Android 2.2 的用户提供将应用程序安装移动到他们的 sd 卡的选项。

如何为 1.6 编译我的应用程序,但仍允许 2.2 用户将其安装到他们的 sd?

4

2 回答 2

12

在您的清单中:

  • <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 引入的材料,因为编译器将不再捕获它。

于 2010-07-22T17:56:09.627 回答
0

这并不像开发人员指南建议的那样无缝。首先,当清单中存在 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)
于 2010-11-27T13:37:32.970 回答