关于SO的压倒性建议是编译SDK通常应该与目标SDK匹配.
同样,建议将此[compileSdk]与目标sdk版本匹配.
... CompileSDK(通常等于目标SDk版本)版本.
通常,您应该针对应用程序可以支持的最低版本的平台编译应用程序.
我总是编译sdk匹配目标sdk,但自从阅读以来我意识到我和许多SO答案都是错误的.
我的问题是,使它们匹配有什么害处,或者反过来说,拥有最低编译sdk版本的优势是什么?
关于SO的压倒性建议是编译SDK通常应该与目标SDK匹配.
真?我认为在新创建的项目之外,很少有生产Android应用程序如此配置,新项目向导倾向于为这些项目设置相同的值.
使它们匹配的危害是什么
使它们匹配没有特别的危害.使它们不匹配没有特别的危害.这一切都取决于你在写什么以及你想要什么样的行为.
例如,在Android 6.0引入了一个新的运行权限模型,在那里你必须将代码添加到您的应用程序向用户请求权限的危险,一切从WRITE_EXTERNAL_STORAGE到READ_CONTACTS.但是,仅在targetSdkVersion23或更高时使用.如果你现在无法处理代码更改,那么你应该特别留下targetSdkVersion更低的代码,比如22.
但是,与此同时,也许您想要使用v23版本的关键Android支持库,例如appcompat-v7.一般来说,您需要compileSdkVersion匹配正在使用的支持库的主要版本,因为它们可能引用了类,方法,常量等仅在其中可用的类compileSdkVersion.
因此,这将是您特别不想compileSdkVersion匹配的情况targetSdkVersion.
拥有最低编译sdk版本的优势是什么?
如今,恕我直言,几乎没有任何优势.
早在2008 - 2011年,一个常见的(尽管是有缺陷的)建议是compileSdkVersion匹配minSdkVersion(或者,实际上,他们的Eclipse/Ant等价物,因为Android Studio当时不存在).这是因为我们缺少工具来自动告诉我们我们是否使用了在我们compileSdkVersion(例如11)中有效的东西,但是我们没有一直使用minSdkVersion(例如,4).将这两个值设置为相等意味着如果您尝试使用比其更新的东西,则会出现编译器错误minSdkVersion.缺点是您无法使用您的功能集,minSdkVersion无法逐步增强您的应用程序,以利用较新设备上提供的新功能.
如今,构建工具(特别是Lint)会对你大吼大叫,如果你尝试使用那些在你的有效compileSdkVersion但不能一直有效的东西minSdkVersion,所以你知道要进行适当的Build.VERSION.SDK_INT检查以确保你只使用更新的东西在较新的设备上,并在旧设备上优雅地降级.
| 归档时间: |
|
| 查看次数: |
2001 次 |
| 最近记录: |