在为应用开发选择目标Android操作系统之前,我需要考虑什么?
这是我对如何做到这一点的理解,任何澄清都将受到赞赏:
这是我一直读到的,但我有一些问题。
假设4.0是Android手机消费者中使用最多的版本,所以我应该定位4.0。现在,假设我不使用4.0特有的功能。我的应用程序是否适用于4.0以下的任何版本,包括1.5,2.3等?考虑相反的情况。如果我的目标版本是2.3,并且我的应用程序仅使用2.3可用的功能,我的应用程序可以在运行4.0版本的手机上运行,即使我不会使用4.0版本独有的功能吗?
感谢。
答案 0 :(得分:1)
看看你的AndroidManifest.xml
如果你想支持所有运行2.2及更高版本的设备,那么有一个targetSdkVersion
和minSdkVersion
然后将minSdkVersion设置为api level 8(android 2.2)
但总的来说,它是一个很好的做法,可以针对最新的API作为目标(目前是API 19,Android 4.4)进行开发,因此您可以确保它可以从您选择的min到最新的OS api工作
所以如果你想支持至少Gingerbread到KitKat在你的清单中做到这一点:
<uses-sdk android:minSdkVersion="9"
android:targetSdkVersion="19" />
并针对api 19开发:)
答案 1 :(得分:0)
假设4.0是Android手机消费者中使用最多的版本,所以我应该定位4.0。现在,假设我没有使用4.0新功能。我的应用程序可以使用4.0以下的任何版本,包括1.5,2.3等吗?
只有当您不使用在最早版本之后推出的API时,才能运行该应用。
如果我的目标版本是2.3,并且我的应用程序仅使用2.3可用的功能,那么我的应用程序可以在运行4.0版本的手机上运行,即使我不会使用4.0版本独有的功能吗?
是。某些功能在较新的操作系统版本中已被弃用,但大多数功能仍在较新的版本中用于保持兼容性。
我觉得这里需要强调的是Android 向后兼容,因此新版本几乎可以运行为旧操作系统版本开发的应用程序。
答案 2 :(得分:0)
目标版本是您测试它的最高版本。如果可以的话,你应该总是以最新的目标为目标。最小版本是能够安装应用程序的最低版本。
所以在清单中,你通常会有这样的东西:
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="19" ...
根据应用运行所需的功能选择minSdkVersion
。
所以你可能想知道targetSdkVersion
的目的是什么。一个原因是您的应用程序具有SDK的更高版本中的一些可选功能。 targetSdkVersion
允许您使用这些后续功能,但您需要使用
if (Build.VERSION.SDK_INT >= 11)
myMethodThatUsesFeaturesOnlyInHoneycombAndLater();
另一个原因是,有时Android团队会对您的课程中的各种设置中的某些默认设置进行更改,但为了保持未测试您的应用的未来版本的兼容性,如果您的应用不支持,则会保留旧的默认设置声称要定位此更高版本。
例如,在Honeycomb之后,菜单应该与操作栏集成。但是使用早期SDK编译的旧应用程序尚未使用Honeycomb或更高版本进行测试,正如他们的targetSdkVersion
小于11所证明的那样,因此操作系统知道显示旧样式菜单。一旦这个开发人员决定在更新的targetSdkVersion
上测试他们的应用程序,他们就会更新值,并且操作系统可以相信他们已经在Honeycomb上测试了它,因此它可以安全地显示新的样式菜单。