2010-07-22 102 views
4

我正在编写与Android 1.6兼容的应用程序,但我想让运行Android 2.2的用户将应用程序安装移动到他们的SD卡上。为Android 1.6设置安装位置?

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

回答

12

在您的清单:

  • <manifest>,加上 “android:installLocation="preferExternal
  • 保留目前uses-sdk为 “<uses-sdk android:minSdkVersion="4">

然后去项目>属性>安卓(左),将构建目标更改为2.2,然后全部设置。

您的项目将使用2.2(但仍然只需要1.6)构建,但运行1.6的设备将简单地忽略清单中新的“installLocation”设置。只要注意不要在实际代码中添加任何2.2引入的材料,因为编译器将不再捕获它。

+0

好吧。有种痛苦,但我想它必须要做。 – GuyNoir 2010-07-22 21:26:00

+1

您可以在此处找到更多信息:http://developer.android.com/guide/appendix/install-location.html在“向后兼容性”下 – 2010-07-22 21:31:51

+3

一个建议:在推出新版本之前,将构建目标版本设置回到1.6并做一个干净的构建。如果你遇到任何编译错误,你就知道你不小心引入了2.2特有的功能,而你的应用程序将会在1.6下崩溃。如果一切正常,请切换回2.2。 – EboMike 2010-10-25 02:52:49

0

这并不像开发者指南所建议的那样无缝。 首先,应用程序时的installLocation出现在清单和构建目标被设定为以外的任何其他2.2不建:

所以为了通过构建目标设定为1.6,以测试向后compatibililty ,清单也必须进行编辑。其次,一旦构建目标设置为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) 
+0

我可以证实,市场上的可用性不受影响。我使用官方Android开发者页面描述的方法。我的应用的市场要求显示为“Android 1.6或更高版本”。使用运行Android 1.6的HTC Magic,我可以毫无问题地从市场中发现,下载和运行应用程序。 – Philipp 2011-07-12 14:29:46