解决一次RenderScript引起的Lint错误

2017-10-20  本文已影响0人  董成鹏

解决一次RenderScript引起的Lint错误

最近在开发中使用RenderScript做了一个高斯模糊,而且编译运行的也挺好,但是却无法通过Lint检查,提示错误如下:

All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 26.0.1, 26.0.0. Examples include com.android.support:renderscript:26.0.1 and com.android.support:animated-vector-drawable:26.0.0

这段话的大致意思是:所有com.android.support中的库必须使用相同的版本,混合使用不同的版本可能会造成运行期崩溃。Rendscript使用了26.0.1的版本,animated-vector-drawable使用了26.0.1版本。

造成这个问题的原因是,在程序中,我使用了support包中的Renderscript,同时也使用了support包中的vector-drawable,但是这两个版本不一致。

我们知道可以在dependencies中添加依赖来使用support中的库,比如

compile 'com.android.support:animated-vector-drawable:26.0.0'

但是对于Renderscript来说,我们没有办法采用这种方式来指定Renderscript的版本。

compile com.android.support:renderscript:26.0.0

这样Gradle会报错的。

一般我们指定RenderScript版本采用的是在build.gralde的defaultConfig中添加如下语句:

renderscriptTargetApi 19

renderscriptSupportModeEnabled true

第一句话是用来指定RenderScript生成的字节码版本,但是如果这个值和我们在gradle中minSdk设置的值不一样,就会忽略这个值,而采用buildToolVersion的值来设置一个兼容的版本。

而我在build.gradle中设置的buildToolVersion值为26.0.1,其余的support包中库的版本都采用了26.0.0.

解决这个问题的办法一般有三个:

  1. 把所有的support包中的库都使用26.0.1版本,但是牵涉太大了,领导也不会同意。
  2. 更改buildToolVersion的版本为26.0.0,但是也有风险。
  3. 直接去掉上面那两句话,同时在代码中使用系统内置的RenderScript,不使用support包当中的。

由于我们的项目minSdk是18(Android 4.3),在这个版本上已经很好的RenderScript的功能了,所以最后采用的士第三种方法。

上一篇下一篇

猜你喜欢

热点阅读