美文网首页
Android 5.0适配总结

Android 5.0适配总结

作者: 刺客的幻影 | 来源:发表于2018-09-03 16:49 被阅读0次

先上一张Android SDK版本号与API Level 的对应关系图:

image.png
再看看目前(2018年9月3日)市场上Android各版本的占有率:
image.png

由此可见Android 4.4的机器还是有不少的,占到了10%以上的份额,所以作为一个合格的Android开发,兼容4.4是必不可少的,这样就要求我们的minSdkVersion 要<=19,这里以19为例记录需要兼容的地方:

1. multiDexEnabled

这个属性就是为了解决Android打包后.dex文件中方法数64k限制问题,在.build文件将multiDexEnabled属性设置为true后,.dex文件中方法数超过64k时会自动分拆成多个.dex文件让Dalvik虚拟机去执行(实际开发中大概率会遇到这种情况,必须要适配的一点)。非常好用的一个属性,可是只能在5.0以上的版本中支持,那5.0以下该怎么适配呢?如下:

  • 添加 compile 'com.android.support:multidex:1.0.3'依赖
android {
    defaultConfig {
        ...
        minSdkVersion 19
        targetSdkVersion 26
        multiDexEnabled true
    }
    ...
}

dependencies {
  compile 'com.android.support:multidex:1.0.3'
}
  • 继承MultiDexApplication
public class MyApplication extends MultiDexApplication { ... }

2. 资源文件的获取

这里可以用Android Studio自带的Lint工具检查,以Android 3.1.2为例:
Analyze->Inspect Code->选择whole porject,如果项目中使用了4.4以上的api会出现如下错误:


image.png

使用ContexCompat来获取资源文件:
getDrawable(res)--->ContextCompat.getDrawable(context,res)
getColor(res)--->ContextCompat.getColor(context,res)

3. xml文件中属性问题

image.png

如上图backgroundTint属性只能在5.0以上的api中调用,为了兼容以下版本,我们可以新建一个values-v21文件夹,这个里面声明的属性会在api21以上的机器上优先于values文件夹中执行。


image.png

参考资料:
官方multidex适配:https://developer.android.com/studio/build/multidex
Android市场占有率分布:https://mta.qq.com/mta/data/device/os

相关文章

网友评论

      本文标题:Android 5.0适配总结

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