Android API 版本兼容策略


关于support library

总结下面几点:

  1. support library做什么用的.Android版本本身是保持前向兼容的,也就是说用老的sdk(比如api 12)开发的应用在新的api(比如23)上是保证可以运行的. 但是除了前后兼容外,还有一种场景是使用新的api(比如23)开发的代码也希望能在老的api(比如12)上运行,同时还能支持新的api上的特性.后面这个需求就是 support library存在的意义了,google意识到很多人会有这个需求于是开发了一套support library, 随着sdk下发.
  2. support library是怎么实现的.大部分的api接口通过增加了一个中间层,最后调用老的framework上已有的函数接口比如Fragment,也有一部分是和framework功能相同但完全独立于framework的 像notificationCompat(对应framework的notification),ActivityManagerCompat(对应framework的ActivityManager)等类,还有一部分是完全功能性的,framework中没有对应的函数比如ViewPager和DrawerLayout
  3. google 对于support library的态度. google建议尽量使用support library, 在IDE的代码模板中也默认是使用的support library
  4. support library的命名. 常见的 v4 support和v7 appcompat libraries,其中前者简称v4,后者简称v7 appcompat, v4表示该library支持到最低api4,也就是要求minsdk version>=4,同理v7要求minsdk version>=7, 同时 v4会随着android版本升级而升级,比如在targetapi 23编译时使用的v4的library也是23版本的.

开发app时怎样确定minsdk version 和targetsdk的version.

  1. 从商业上考量,希望自己的app支持尽可能多的api版本,那是不是targetapi设置的越低越好呢,因为google保证了低api开发的app在高api上是可以运行的.显然答案是否定的,恰恰相反的是,建议使用尽可能新的api做targetapi 参考这个文章 实际使用时最常用的是

    minSdkVersion (lowest possible) <= targetSdkVersion == compileSdkVersion (latest SDK)

  2. 确定app的minsdk version时,需要参考google play对于访问play store 的机型的分布, 国内的数据参考友盟的数据
    如何确定minsdk文章


Copyright © FengGuangtu 2017