Android Studio中support版本错误问题的处理

来源:互联网 发布:360软件认证中心 编辑:程序博客网 时间:2024/06/06 01:06

问题现象
说实话,我真不知道Google是怎么想的,或者如这里所说的确是个BUG,也不知道为什么拖这么长时间没有解决掉,或者是我的RPWT。
这问题的表现就是,在项目的build.gradle文件里,如果用传统的自动依赖处理方式:

[plain] view plain copycompile 'com.android.support:appcompat-v7:+'

编译时系统就会去依赖最新版的support:21.0.0-rc1 。理论上这本不应该有问题,但是不知道是不是Google脑子被枪打了,本来作为兼容需要而出来的support包,居然在这个版本变成不兼容了,21.0.0-rc1这个版本的support包里只有几个Android L用到的东西,所以必须使用L版本的build tool,而且build出来的程序只能在Android L下运行……
都不支持旧版了,那还support个P啊。
而且目前我碰到的情况是:在Mac平台下没有问题,最高只support到20.0,但是在Linux下就会support到21.0.0-rc1,不明觉厉。

初步解决方案

目前可以找到的初步解决方案就是修改build.gradle,手工指定support的版本为19或20。如:

[plain] view plain copycompile 'com.android.support:appcompat-v7:19.+'  

这样就可以在低版本的build tool上编译,而且可以支持低版本的Android了。
但是这个方案有一个问题:
如果你的项目自动依赖了第三方库,而第三方库又使用了前面的build.gradle选项,导致依赖最新support时,又会杯具。

第三方库问题的解决方案

一个能立即想到的办法就是把自动依赖的第三方库改为本地依赖,然后把第三方库代码放到本地,编译到你的项目里去,这样麻烦不说,更新也不方便,还要维护一个自己用的第三方库分支。
更好的解决方案是在你的项目里指定第三方库也使用你的依赖配置。如SO上这个帖里的评论所说,在SO的这个帖里也有说到:

[plain] view plain copycompile ('xxxx:xxxx:+') {      exclude group: 'com.android.support', module:'appcompat-v7'  }  

这样便可以了。
如果还不行,再试试这个终极大杀器:
到SDK的“extras/android/m2repository/com/android/support”路径下找到相关的support库目录,修改其中的 maven-metadata.xml 文件,把 21.0.0-rc1 相关的内容删除,这样总可以了吧。

0 0
原创粉丝点击