android版本向上兼容吗,Android 的向前兼容和向后兼容
向后兼容和向前兼容的概念
向后兼容(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而言的兼容性
向后兼容:
比如很多app是支持到比较低的版本:2.3,4.x等,可以运行在低于targetSdk的系统上。这个是通过在开发中设置minSdk ,supportlibray,运行时版本的判断等来实现的。app具有了向后兼容的性质,也可以说Android系统具有了向前兼容性。
android 向后兼容很多情况是通过支持库(support library)来实现的。比如appcompat-v4、appcompat-v7使得低版本手机可以支持Material Design。
支持库的原理是这样的,如果应用调用其中一个支持类的方法,则支持库的行为将取决于运行应用的 Android 版本。如果框架提供必要的功能,则支持库将通过调用框架执行任务。如果应用在旧版本的 Android 上运行,且框架未显示所需的功能,则支持库自身可能会尝试提供功能或什么都不做。无论是哪一种情形,应用通常都不需要检查其在哪一版本的 Android 上运行,而是通过支持库执行检查并选择适当的行为。通常情况下,名称以 …Compat(如 ActivityCompat)结束的类即是如此。
对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的版本来跑的,这样调用的方法也是没有变化的,还是采用的Android M中的代码。那这个就带来一个问题,是Android系统需要做更多的兼容性代码,系统会越来越膨胀。
这个作用机制还有一层含义是: 如果targetversion 低于android N,那么也不可以采用android N新的方法和特性。
个人的总结,如果有错误或者补充,欢迎指出。
参考资料
android版本向上兼容吗,Android 的向前兼容和向后兼容相关推荐
- 向下兼容、向上兼容、向前兼容、向后兼容
摘要: 简要辨析向下兼容.向上兼容.向前兼容.向后兼容四个概念之间的关联与联系.简言之,向上兼容等同于作向前兼容,向下兼容等同于向后兼容.主流使用的是向前兼容和向后兼容.向后兼容中"后&qu ...
- 详解向下兼容、向上兼容、向前兼容、向后兼容
解析 向下兼容.向上兼容.向前兼容.向后兼容四个概念之间的关联与联系: 向上兼容等同于作向前兼容,向下兼容等同于向后兼容.主流使用的是向前兼容和向后兼容.向后兼容中"后"指&quo ...
- 向前兼容、向后兼容、向上兼容、向下兼容
定义 此处先给出百度百科上的定义 向前兼容:是一个以较新版本编译的程序集是否可以在较老版本上执行的问题. 向后兼容:是一个以较早版本编译的程序集是否可以在较新版本上执行的问题. 向上兼容(Upward ...
- 什么是向前兼容和向后兼容?
1 简述 博主的书签页一直留着一个问题,软件的向前兼容和向后兼容,以前一直被这个问题所困扰,今天来记录 2 向前兼容和向后兼容 从软件行业的起源理解这两个概念就不会很难,软件起源于国外(个人理解),因 ...
- 你知道我们常说的“向前兼容”和“向后兼容”都是什么意思吗?
背景: 今儿组内随便聊天,说到代码的"向前兼容"和"向后兼容".开始聊得都很嗨皮,可是越到后来我聊得和他们说的越是大相径庭.真应了那句话了:"你以为你 ...
- 兼容 向前兼容 向后兼容
向前兼容:是指可以使用软件的未来版本 向后兼容:指可以使用软件的以前版本 P108并非所有软件或者文件都要求向前兼容或向后兼容,这是软件设计者需要决定的产品特性,而软件测试员应改为检查软件向前或向后兼 ...
- sql2000 mysql 兼容_sql2005兼容2000 | 向后兼容组件
这个包可以让你的SQLServer2005和SQLServer2008都兼容. 相关软件软件大小版本说明下载地址 sql2005兼容2000 | 向后兼容组件顾名思义嘛就是可以让你的SQL Serve ...
- camera android 版本,Camera for Android
Camera for Android 介绍 Camera for Android We have designed HD camera app for you. Video capture featu ...
- unity android 版本,Unity2019与Android混合开发
0. 开始前的版本对齐 Unity版本:Unity2019.3.4f1 AndroidStudio版本:3.5.3 1. Unity -- 准备项目 新建项目 打开File -> Build S ...
最新文章
- 深入思考:算法工程师的落地能力具体指什么,如何提升自己的落地能力?
- 安卓隐藏摄像_侧置摄像与隐藏前摄,拒绝单调乏味,这两款国产5G手机独具匠心...
- php编译称opcode文件,PHP源码保护和性能加速
- nvidia TX2 CUDA yolov5环境搭建
- 如何打造一个让粉丝一见就能收钱的朋友圈
- php player baidu,BaiduPlayer.php
- 墨刀和Axure RP:设计App原型图就是如此简单
- cocos creator js 获取屏幕宽度
- 微信公众号开发清理缓存
- android发送短信验证码并自动获取验证码填充文本框
- BZOJ3787 gty的文艺妹子序列 【树状数组】【分块】
- python中path函数_示例1-path函数
- 分享一个淘宝/天猫/京东/阿里 图片抓取工具
- 域名网在线出售域名源码
- Match Points CodeForces 1156C 二分答案
- 方便快捷,浏览器利器——Vimium(详解)
- 时间序列数据分析与预测之Python工具汇总
- 【云栖大会】阿里巴巴成立“达摩院” 引入顶尖科学家3年研发投入将超千亿
- 数据结构实验 二叉树的基本操作
- 微信小程序轮播图高度与图片高度不匹配问题
热门文章
- Facebook背后的开源力量
- 图片上传怎么搞?!阿里云OSS对象存储教你快速实现!
- 转:程序员必读书单 1.0
- V2V-PoseNet:Voxel-to-Voxel Prediction Network for Accurate 3D Hand and Human Pose Estimation from...
- virt-v2v 虚拟机到虚拟机的转换详解
- C语言 06.函数和多文件编程
- MacBook随笔之快捷键二(访达和系统快捷键)
- 特斯拉2021年自动驾驶,特斯拉自动驾驶技术专利
- educoder算法设计与分析 实验五回溯法
- 如何用研发效能搞垮一个团队?