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

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

[plain] view plain copy
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。如:

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

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

第三方库问题的解决方案

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

[plain] view plain copy
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 相关的内容删除,这样总可以了吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值