最近在和别人交流的的时候涉及到Android开发向前兼容和向后兼容的问题一头雾水,于是乎定下心来好好研究了下,虽然所知也只是些皮毛,但是也总比啥也不知道的好。所以在此总结!

一、向前兼容

1、何谓向前兼容

google公司在不断的发步新的android版本,这不现在都到8.0了。那么自己刚刚发布到应用商店的app如何在android 8.0手机上正常运行呢,这就是所谓的向前兼容了。

2、如何实现向前兼容

这个其实比较简单,及通过targetSdkVersion设置来实现。在设置好该参数后,如果实际android版本号高于targetSdkVersion那么手机会按照targetSdkVersion设置的版本号来运行。当实际android版本号不高于targetSdkVersion时按照实际的手机版本号运行apk。
说到这里,也顺便谈谈compileSdkVersion和minSdkVersion这两个参数吧。compileSdkVersion不会被编译到apk中,也就不会改变apk的运行时的行为,仅仅是为IDE提供编译警告和错误的依据。minSdkVersion 就更好理解了,其代表了apk所能够支持的最低sdk版本号。

二、向后兼容

1、向后兼容含义

也来举个例子说明,我们知道Material Design是随android 5.0版本推出来的设计规范。那么我android 4.0的手机也想使用怎么玩,着就是向后兼容的问题了。

2、向后兼容的实现

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

三、引用

1、http://chinagdg.org/2016/01/picking-your-compilesdkversion-minsdkversion-targetsdkversion/2、https://developer.android.com/topic/libraries/support-library/index.html?utm_campaign=adp_series_sdkversion_010616&utm_source=medium&utm_medium=blog#backward

更多相关文章

  1. 【android】使用android-resource-remover删除项目中无用的资源,
  2. Android(安卓)Metro风格的Launcher开发系列第一篇
  3. 原有Android项目集成RN入坑计(一)
  4. Android(安卓)悬浮窗权限各机型各系统适配大全
  5. android/c++ opencv 攻坚篇(一) ndk运行环境搭建
  6. android车载终端开发--------can 总线移植
  7. android sdk myeclipse8.6
  8. Android(安卓)studio真的很坑啊,智能还很远,麻烦倒是挺多
  9. android “设置”里的版本号

随机推荐

  1. C#是什么,能做些什么?
  2. C#与.net有什么关系
  3. 数据结构中散列表(哈希表)经典之冲突处理
  4. C语言如何获取进程ID?(代码实例)
  5. C和C ++之间的区别是什么
  6. c语言*p++是什么意思?
  7. .net和c#有什么区别
  8. C ++中continue和break语句的简单比较
  9. c语言计算两个数的最小公倍数
  10. 如何判断文件是否存在于Perl中