设置TargetSDK = 22但编译SDK = 26的优缺点是什么?

时间:2017-10-30 10:20:29

标签: android android-support-library runtime-permissions android-architecture-components android-min-sdk

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

E.g。这在媒体上:Picking your compileSdkVersion, minSdkVersion, and 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版本设置为22以下Android M,我想避免运行时权限对话框。
  3. 将来应该能够迁移到Kotlin。
  4. minSDK版本将继续保持15

2 个答案:

答案 0 :(得分:5)

更新 - 2018年8月2日:

以下是Google向开发者发送的电子邮件的一部分。

  

这是reminder,从2018年11月1日开始,Google Play上的应用和游戏更新将需要定位到Android Oreo(API级别26)或更高级别。在此日期之后,Play控制台将阻止您提交targetSdkVersion小于26的新APK。

因此,从上述日期开始定位SDK版本22是不切实际的。

原始答案:

目标SDK 22

<强>临

  • 您不需要为运行时权限编写代码。 (仅限您,对用户没有好处)

<强>缺点:

  • 糟糕的做法和糟糕的用户体验 - 不符合谷歌的指导原则。
  • 如果用户撤消设置中的权限,则应用会崩溃。
  • 您将收到来自用户的错误评论,说“#34;权限太多&#34;因为在安装之前会要求他们授予所有权限。
  • 可能您的应用在自然搜索中的优先级会降低。

答案 1 :(得分:1)

缺点

除了在其他答案中已经提到的那些,这里还有一些更多的缺点

  • TargetSDK 22禁用一些Doze优化。这可能会导致您的应用无法像电池那样进行优化。

赞成

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

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

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