最近在和别人交流的的时候涉及到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