2012-04-22 108 views
1

当安装SDK时,我读了大约97%的手机支持Android 2.1 我的问题是我应该在打开一个新项目时选择将其编译为Android 2.1? 为2.1编写的应用程序是否可以在新版本中使用? 会不会有相反的工作?如果我发展到4.0.3,它会在更老的?要选择什么版本?

感谢, 埃里克

回答

5

我的问题是我应该在打开一个新项目时选择将其编译为Android 2.1?

您指定为构建目标(“选择编译为”)对Android的哪些版本可以运行您的应用程序没有直接影响。

为2.1编写的应用程序是否可以在新版本中使用?

对于单词“for”的任何合理解释,是的。

如果我发展到4.0.3,它会在更老的?

与Agarwal的回答一样,这取决于你所说的“to”是什么意思。例如,假设您想要使用CalendarContract。该课程已添加到API Level 14(a.k.a.,Android 4.0)中。只要您使用只需在Android 4.0及更高版本上使用CalendarContract即可。但是,如果您尝试在较旧的设备上使用CalendarContract,则会崩溃,因为该类不会存在于固件中。

因此,您可以有条件地使用更新的API,只要您确保只在运行较新版本Android的设备上使用这些更新的API。通常,这是通过版本防护块完成的,如下所示:

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB) { 
    // do something that requires API Level 11+ here 
} 
+0

对。感谢您的指定答案。 – 2012-04-22 16:44:12

+0

但由于某些原因,我无法在2.2上运行简单的ICS HelloWorld应用程序。任何想法为什么? – 2012-04-22 16:48:41

+0

@BojanKogoj:不,因为您没有提供任何超出“无法运行”的症状,这可能会有很多不同的含义。随意在SO上提问。如果应用程序崩溃,请包含堆栈跟踪。 – CommonsWare 2012-04-22 16:51:38

0

如果发展到4.0.3则不会得到安装在旧版本的设备。 如果您为2.1开发,它将在较新版本上正常工作。但是,如果你使用你不能得到4.0.3功能。

+0

完全取决于您对单词“to”的定义。 – CommonsWare 2012-04-22 16:38:08

+0

相反呢? 2.1版本(或更常见的2.2版本)可用于新设备吗? – 2012-04-22 16:38:34