Android 的向前兼容和向后兼容

作者: AndroidXing | 来源:发表于2018-01-21 22:36 被阅读527次

向后兼容和向前兼容的概念

向后兼容(Backwards compatibility):较高版本的程序能够处理较低版本程序产生的数据。

  • 比如word2007版本的word软件可以打开word2003创建的文件。
  • windows也是一个系统软件,在这个平台上开发的程序,就相当于是程序产生的数据,比如说window7上可以正常运行在window xp上开发的大部分程序。

向前兼容(Forwards Compatibility):比较老、比较低的版本的程序可以处理较高版本程序产生的数据。

  • 例如 word 2003版本可以在转换器的帮助下打开word2007版本创建的doc文档。

相对性的关系

  • backward和forward,可以大致理解成新和旧。而新旧是相对的,一个旧软件不能跑在新硬件上,既可以说是这个软件不向前兼容硬件,也可以说是这个硬件不向后兼容软件。
  • 再如软件和协议的兼容,新软件不兼容旧协议,既可说是软件不向后兼容协议,也可以说协议不向前兼容软件。 所以搞清楚是什么对什么的兼容性,谁在前面,谁在后面,就能区分向前向后了。
  • 所以碰到兼容性的概念的问题时,是可以从新旧两个方向去考虑。

Android 中的兼容性

Android的系统版本(比如 8.0、7.0、6.0、5.0、4.x等)与运行在其上的App就存在相对的关系。下面是针对App而言的兼容性

  1. 向后兼容:
  • 比如很多app是支持到比较低的版本:2.3,4.x等,可以运行在低于targetSdk的系统上。这个是通过在开发中设置minSdk ,supportlibray,运行时版本的判断等来实现的。app具有了向后兼容的性质,也可以说Android系统具有了向前兼容性。

  • android 向后兼容很多情况是通过支持库(support library)来实现的。比如appcompat-v4、appcompat-v7使得低版本手机可以支持Material Design。

  • 支持库的原理是这样的,如果应用调用其中一个支持类的方法,则支持库的行为将取决于运行应用的 Android 版本。如果框架提供必要的功能,则支持库将通过调用框架执行任务。如果应用在旧版本的 Android 上运行,且框架未显示所需的功能,则支持库自身可能会尝试提供功能或什么都不做。无论是哪一种情形,应用通常都不需要检查其在哪一版本的 Android 上运行,而是通过支持库执行检查并选择适当的行为。通常情况下,名称以 …Compat(如 ActivityCompat)结束的类即是如此。

  1. 对app 的向前兼容
  • 比如说应用商店的很多app,targetSdk是低于android7.0,但是还是可以正常安装到android 7.0的设备上,似乎是app自动具有了向前兼容性,而系统具有向后兼容性。

  • 那这就要说targetSdk这个参数的作用了,如果实际运行的android版本号高于targetSdkVersion,那么手机会按照targetSdkVersion设置的版本号来运行。当实际android版本号不高于targetSdkVersion时按照实际的手机版本号运行apk。

  • 比如说在新版上android N删除了一些方法或者更改了一些方法的签名,App的targetSdkVersion 是android M,那么在运行到android N上也不会报出错误,因为是采用targetSdkversion的版本来跑的,这样调用的方法也是没有变化的。

  • 这个作用机制还有一层含义是: 如果targetversion 低于android N,那么也不可以采用android N新的方法和特性。

个人的总结,如果有错误或者补充,欢迎指出。

参考资料

http://blog.csdn.net/Yoryky/article/details/78016970

https://baike.baidu.com/item/%E5%90%91%E5%89%8D%E5%85%BC%E5%AE%B9

https://baike.baidu.com/item/%E5%90%91%E5%90%8E%E5%85%BC%E5%AE%B9

https://www.zhihu.com/question/47239021

https://medium.com/google-developers/picking-your-compilesdkversion-minsdkversion-targetsdkversion-a098a0341ebd

相关文章

  • Android 的向前兼容和向后兼容

    向后兼容和向前兼容的概念 向后兼容(Backwards compatibility):较高版本的程序能够处理较低版...

  • 向前兼容和向后兼容

    向前兼容 向前兼容:= 向上兼容(Upward Compatibility) 向前兼容(Forward Compa...

  • 第二章 一切都是对象

    向后兼容(Backward Compatbility)和向前兼容(Forward Compability)区别: ...

  • 兼容测试

    兼容性测试 兼容性测试分为软件本身向前或向后兼容、不同版本兼容、数据共享兼容、浏览器兼容、操作系统兼容、分辨率兼容...

  • 数据格式--向前兼容和向后兼容

    现有的应用开发模式崇尚快速迭代,这就造成客户端数据格式和服务器端数据格式不匹配的情况经常发生。新旧版本的客户端和数...

  • ddia 第四章 编码与演化

    随着应用程序的升级,系统需要保持向后兼容(新代码读旧数据)和向前兼容(旧代码读新数据).数据的编码支持更好的兼容性...

  • 目录篇

    未分类 SQL基础[https://www.jianshu.com/p/3cc6a1740d1b] 向前兼容和向后...

  • Android Jetpack(二) 基础

    基础组件可提供横向功能,例如向后兼容性、测试和 Kotlin 语言支持。 1、Android KTX - 编写更简...

  • 哥哥带你排雷Flutter之AndroidX兼容性

    Android代码通常使用Android.support库来确保向后兼容性。目前support库已经停止维护,并替...

  • Android使用底部导航2018-08-16

    Android使用底部导航 Android底部导航停留在屏幕底部,提供应用中顶级视图之间的导航。这是在具有向后兼容...

网友评论

    本文标题:Android 的向前兼容和向后兼容

    本文链接:https://www.haomeiwen.com/subject/oioqaxtx.html