我正在编写一个与Android 1.6兼容的应用程序,但我想为运行Android 2.2的用户提供将应用程序安装移动到他们的SD卡的选项。
如何编译我的1.6应用程序,但仍允许2.2用户将其安装到他们的SD?
答案 0 :(得分:12)
在你的清单中:
<manifest>
中,添加“android:installLocation="preferExternal
”uses-sdk
保持为“<uses-sdk android:minSdkVersion="4">
”然后转到Project&gt;属性&gt; Android(在左侧),将构建目标更改为2.2,并且您已全部设置。
您的项目将使用2.2构建(但仍然只需要1.6),但运行1.6的设备将忽略清单中新的“installLocation”设置。请注意不要在实际代码中添加任何2.2引入的材料,因为编译器将不再捕获它。
答案 1 :(得分: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),我的应用程序将出现在Android Market for 1.6设备上。我没有要测试的实际设备。有人可以确认这不会影响市场上的可用性吗?
最后,这个警告仍然存在:
Attribute minSdkVersion (4) is lower than the project target API level (8)