Android: 将 compileSdkVersion 设置为低于最新版本 api 是否有优势?

Android: Is there an advantage to setting compileSdkVersion to a lower version than the latest api?

将清单中的 compileSdkVersion 设置为小于最新的 api 内部版本号有什么好处,还是应该始终将其设置为最新的 api 内部版本?

android {
    compileSdkVersion 22

当我说优势时,我指的是应用程序的性能、应用程序的编译时间、apk 的大小等。当然,我说的是 可以 将其设置得更低 - 即不使用共享转换或棒棒糖的任何功能的应用程序。

不,没有。

另外,感谢commonsware指出这一点,但是compileSdkVersion和targetSdkVersion是有区别的。在 Whosebug 上查看此 previous answer

现在不要将其设置为最新的 M 预览版。不是你这样做了,我只是对正在阅读本文的 Android 新开发人员说的。 Android M 是预览版,尚不适用于生产中的应用程序。

话虽这么说,如果您只是在编辑某人几年前编写的应用程序的代码,而您的老板告诉您不要在他希望您做的微小改动上浪费比您必须花费的时间更多的时间make,那么你不妨坚持那个计划,只编译到最初使用的 api 。

此外,还有安全审计和认证的情况。如果政府机构或安全公司没有时间审核 OS 或 sdk 的最新版本,那么您可能只能编译到上次认证的版本。

不,实际上它没有做任何改变。但我建议你使用最新的编译它只是为了确定。

首先,targetSdkVersioncompileSdkVersion是有区别的。

compileSdkVersion

compileSdkVersion 使您的应用程序可以访问最新的 API、样式和主题。如果您尝试使用比 compileSdkVersion.

更新的 Android 版本中引入的 API,您将遇到编译错误

targetSdkVersion

targetSdkVersion 表示您的应用已针对哪个 API 版本进行测试。

针对旧版本启用兼容性行为,以确保应用程序继续以相同的方式工作。

targetSdkVersion 更新到较新的版本可能会引入细微的行为变化,因此请确保您了解新的 APIs 并在这样做时正确测试应用程序。例如:当目标 API < 19 时调用 AlarmManager.set() 将在准确的时间安排警报,因为它以前是这样工作的。在针对 API 19+ 时调用相同的方法将允许系统将警报发送时间调整几分钟以节省电池寿命,如果您想要准确的时间行为,则需要调用新方法 AlarmManager.setExact().

compileSdkVersion 必须始终等于或高于 targetSdkVersion