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

问题现象

说实话,我真不知道Google是怎么想的,或者如这里所说的确是个BUG,也不知道为什么拖这么长时间没有解决掉,或者是我的RPWT。

这问题的表现就是,在项目的build.gradle文件里,如果用传统的自动依赖处理方式:

compile '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。如:

compile 'com.android.support:appcompat-v7:19.+'

这样就可以在低版本的build tool上编译,而且可以支持2.3等更低版本了。

但是这个方案有一个问题:

如果你的项目自动依赖了第三方库,而第三方库又使用了前面的build.gradle选项,导致依赖最新support时,又会杯具。

第三方库问题的解决方案

一个能立即想到的办法就是把自动依赖的第三方库改为本地依赖,然后把第三方库代码放到本地,编译到你的项目里去,这样麻烦不说,更新也不方便,还要维护一个自己用的第三方库分支。

更好的解决方案是在你的项目里指定第三方库也使用你的依赖配置。如SO上这个帖里的评论所说,在SO的这个帖里也有说到:

compile ('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 相关的内容删除,这样总可以了吧。

推送到[go4pro.org]