0

我已经阅读了几篇文章和文档以及 SO 问题,以了解 minSDK、targetSDK 和 compileSDK 之间的区别。

例如在 Medium 上:挑选你的 compileSdkVersion、minSdkVersion 和 targetSdkVersion

基本上总结了

minSdkVersion <= targetSdkVersion <= compileSdkVersion

但是仍然想了解如果我设置 TargetSDK = 22 但 Compile SDK =26 有什么优点和缺点?

需要考虑的要点是——

  1. 我想使用 RxJava 2、Dagger 2、带有最新支持库的 Android 架构组件、带有 Gradle 4.1 的 Android Studio 3.0 等。
  2. 通过将 Target SDK 版本设置为低于 Android M 的 22,我想避免运行时权限对话框。
  3. 将来应该能够迁移到 Kotlin。
  4. minSDK 版本是并且将保持 15
4

2 回答 2

5

更新 - 2018 年 8 月 2 日:

以下是 Google 发送给开发人员的电子邮件的一部分。

谨此提醒您,从 2018 年 11 月 1 日起,Google Play 上的应用和游戏将需要针对 Android Oreo(API 级别 26)或更高版本进行更新。在此日期之后,Play 管理中心将阻止您提交 targetSdkVersion 小于 26 的新 APK。

因此,从上述日期开始以 SDK 版本 22 为目标是不切实际的。

原答案:

目标 SDK 22

临:

  • 您无需为运行时权限编写代码。(只给你,对用户没有好处)

缺点:

  • 糟糕的做法和糟糕的用户体验 - 不符合 Google 的指导方针。
  • 如果用户从设置中撤消权限,应用程序将崩溃。
  • 您会收到用户说“权限太多”的差评,因为他们会在安装前被要求授予所有权限。
  • 您的应用程序在自然搜索中的优先级可能会降低。
于 2017-10-30T10:38:53.267 回答
1

缺点

除了其他答案中已经提到的之外,这里还有一些缺点

  • TargetSDK 22 禁用了一些打盹优化。这可能会导致您的应用没有尽可能地优化电池。

优点

其中一些非常特定于应用程序的类型

  • 打盹模式实际上可能会阻碍应用程序的功能。实际示例:某些类型的健身应用程序在启用打盹模式时无法可靠运行(除非您创建前台服务)。在这种情况下,targetSDK = 22 可能更合适。
  • Pro for the user:如果 targetSDK > 22,我们鼓励您使用 Google Play Services。除了并非在所有设备上都可用之外,它实际上模糊了哪个应用程序实际上导致了电池消耗(现在电池消耗归因于“Google Play 服务”而不是实际行为不端的应用程序)。所以他们不知道要卸载哪个应用程序。由于我们谈论的是用户体验,因此设置 targetSDK = 22 可能对用户更好,因为您对自己造成的电池消耗诚实。

一般来说,如果可能的话,建议使用最新的 targetSDK - 除非您的应用程序无法在较新的 SDK 版本的限制下运行。

于 2017-11-01T07:49:57.470 回答