在选择目标Android OS进行应用程序开发之前,我需要考虑什么?
这是我对如何做的理解,任何澄清都将不胜感激:
- 确定当前使用哪种OS版本。查看分布图等。
- 针对该版本。
这就是我一直在阅读的内容,但是我有一些问题。
假设4.0是Android电话消费者中使用最多的版本,因此我应该以4.0为目标。现在,假设我不使用4.0唯一的功能。我的应用程序是否可以使用4.0以下的任何版本,包括1.5、2.3等?考虑相反的情况。如果我针对2.3版,并且我的应用仅使用2.3可用的功能,我的应用程序将在运行4.0版的电话上使用,即使我不会使用版本4.0唯一的功能?
谢谢。
请查看您的androidManifest.xml
如果要支持运行2.2及以上的所有设备,则有一个targetSdkVersion
和minSdkVersion
但总的来说,对于针对目标的最新API(目前API 19,Android 4.4),这是一种很好的做法,因此您可以确保它可以从所选的最小钟到最新的OS API
因此,如果您想至少支持姜饼,请在您的清单中执行此操作:
<uses-sdk android:minSdkVersion="9"
android:targetSdkVersion="19" />
并反对API 19:)
假设4.0是Android电话消费者中使用最多的版本,因此我应该以4.0为目标。现在,假设我不使用新功能4.0的功能。我的应用程序是否可以使用4.0以下的任何版本(包括1.5、2.3等)工作?
仅当您不使用希望该应用程序运行的最早版本之后引入的API时。
如果我针对2.3版,并且如果我的应用仅使用2.3可用的功能,我的应用程序在运行4.0版的手机上也可以使用,即使我不会使用版本4.0唯一的功能?
是。有些功能在较新的OS版本中被弃用,但其中大多数仍然可以在较新的版本中起作用以保持兼容性。
我觉得在这里强调的是Android是向后兼容,因此较新版本几乎可以运行为较旧的OS版本开发的应用程序。
目标版本是您已测试的最高版本。如果可以的话,您应该始终瞄准绝对最新的目标。最低版本是能够安装应用程序的最低版本。
因此,在清单中,您通常会有类似的东西:
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="19" ...
根据您的应用程序运行绝对需要的功能选择minSdkVersion
。
因此,您可能会想知道targetSdkVersion
的目的是什么。原因之一是您的应用程序具有一些可选功能,这些功能是SDK的以后版本。targetSdkVersion
将允许您使用这些以后的功能,但是您需要使用
if (Build.VERSION.SDK_INT >= 11)
myMethodThatUsesFeaturesOnlyInHoneycombAndLater();
另一个原因是,有时Android团队会更改您类的各种设置中的某些默认值,但是要维持未测试应用程序的将来版本的兼容性,如果您的应用程序不使用,则它们会保留旧默认值't声称以此为目标。
例如,在蜂窝之后,菜单应该与动作栏集成在一起。但是,与较早的SDK一起编译的旧应用程序尚未与Honeycomb或更晚进行测试,因为它们的targetSdkVersion
少于11,因此OS知道显示旧样式的菜单。一旦该开发人员决定在最近的targetSdkVersion
上测试其应用程序,他们会更新该值,并且操作系统可以相信他们已经在蜂窝上测试了它,因此它可以安全地显示新样式菜单。