每次我对此感到困惑并进行搜索时,我“认为”我理解它,但我似乎也没有。
有人可以向我解释您正在构建的 API 与您在清单中指定的 Min SDK 和您指定的目标 SDK 之间的区别。
例如:我有一个应用程序,其 minSDK 为 8,targetSDK 为 15,我针对 SDK 12 构建。有什么区别?它在什么设备上运行?我从这些差异中得到了什么!有人请解释!谢谢
每次我对此感到困惑并进行搜索时,我“认为”我理解它,但我似乎也没有。
有人可以向我解释您正在构建的 API 与您在清单中指定的 Min SDK 和您指定的目标 SDK 之间的区别。
例如:我有一个应用程序,其 minSDK 为 8,targetSDK 为 15,我针对 SDK 12 构建。有什么区别?它在什么设备上运行?我从这些差异中得到了什么!有人请解释!谢谢
有什么不同?
差值是两个数字相减的结果。但这在这里并不重要。:-)
它在什么设备上运行?
这取决于你的代码和其他任何东西。但是,它不会在 API 级别 7 及更低级别上运行,因为它们低于您的minSdkVersion
. Android 设备(和市场)不允许您的应用在 API 级别 7 及更低的设备上运行。
我从这些差异中得到了什么!
通过将构建目标设置为 12,您对编译器和构建工具说:“我想使用比 API 级别 8 更新的 API,直到 API 级别 12,但我保证这样做的方式是避免在旧设备上使用那些较新的 API”。当您尝试在没有适当保护(例如,检查android.os.Build.SDK_INT
)的情况下使用较新的 API 时,构建工具,尤其是 Lint 会对您大喊大叫。
通过设置android:targetSdkVersion
为 15,您对编译器和构建工具说:“当我编写此代码时,我正在考虑 API 级别 15”。比您的目标更新的设备可能会选择以不同的方式做事,以尝试更好地模拟 API 级别 15 的生活。
后者最好的例子是AsyncTask
。传统上,任务可以并行运行。但是,如果您已android:targetSdkVersion
设置为 13 或更高,并且您在 API 级别 13 或更高的设备上运行,则默认情况下任务将串行执行。如果您在 API 级别 13 或更高级别的设备上运行,但您的设备级别android:targetSdkVersion
为 12 或更低,则设备将回退到旧行为,以保持兼容性。
您用于构建自己的应用程序的 SDK 将定义所有可用的类。没有理由不使用最高可用的(目前为 17)
正如 JoxTraex 所提到的,minSDK 是:“您的应用程序工作所需的最小 android 操作系统 API 集”
targetSDK 是您测试过您的应用程序的最高版本。这将启用一些功能(全息、再见菜单按钮)。在新的 Android 版本中默认引入了这些更改,但您应该在清单中写明这些新功能已经过测试。
Min SDK 是您的应用运行所需的最小 android 操作系统 API 集
Target SDK 是您的主要平台目标版本,通常始终高于 Min。
它不决定设备,因为设备的平台版本可以更改。