正文
简评:或许在 Android 应用身后的巨石开始滚起来了。
最近 Google 对于 Play Store 应用
targetSdkVersion
的最低要求引发了一些开发者的担忧。如果您上架应用的
minSdkVersion
低于 11,那么有必要在最近的几个月开始考虑这个问题了。
在十二月中旬,Google
宣布了
从 2018 年开始,在 Play Store 所发布应用(无论是新应用或是旧应用更新)的
targetSdkVersion
需要为 26(Android O) 或以上。对于新应用将从 2018 年 8 月开始执行,对于旧应用的更新从 2018 年 11 月开始执行。并且这将是一个持续的过程,比如在 2019 年对应用
targetSdkVersion
的最低要求将上升到 Android P,以此类推。
而从 v26.0.0 开始,Android support 库的
minSdkVersion
提高到了 14(Android 4.0)。因此,对于维护旧设备应用的开发者来说就会遇到些麻烦了:
-
如果尝试在 Play Store 发布
targetSdkVersion
低于 26 的应用,那么会被 Play Store 拒绝。
-
如果将应用的
targetSdkVersion
提升到 26 或以上。那 Android Studio 会提示 support 库和
targetSdkVersion
版本不匹配。
-
如果再提高 support 库的版本来匹配
targetSdkVersion
,由于 support 库的
minSdkVersion
为 14,那么还得提高应用的
minSdkVersion
来匹配 support 库的
minSdkVersion
。
因此,Play Store 和 support 库之间对于 SDK 版本要求的提升,一定程度上会帮助淘汰掉部分老旧设备。并且,预计 Google 在未来的几年还将进一步提高 support 库的
minSdkVersion(下一次可能是升级到 21)
。
按照 Google 的说法,这样做的部分原因是出于安全因素的考虑。淘汰掉支持老旧设备的应用能促使用户购买替代的设备(或许也有助于各手机厂商快速升级自家 ROM 所基于的 Android 版本),从而提高整体的安全性。
不过,不是所有的开发者都对这一举动感到高兴。对于 Google 的这项措施,作为一名必须维护老旧应用的开发者可以采取的做法:
-
使用 manifest merger 和相关技术来使用较新版本的 support 库。不过这种做法是很有风险的,因为 Google 已经计划在 support 库中删除一些废弃的方法和代码,如果采取这种做法,请非常彻底的测试。
-
使用 Gradle 的
//noinspection GradleCompatible
注释来消除错误提示。这样你就可以继续使用 v25.3.1 的 support 库,并将应用的
targetSdkVersion
改为 26 来满足 Play Store 的要求。这要比上面的做法更安全,但风险会随着所用 support 库的
minSdkVersion
和 Play Store 要求的
targetSdkVersion
版本差距的逐渐增大而增加。