AndroidStudio版本升级对依赖的兼容性一直都被android开发人员诟病,最近换了Mac开发,AS升级到3.1.2版本,在github搜的JakeWharton的ButterKnife已经更新到8.8.1啦,二话不说就按照文档步骤开始在项目中使用,NND万万没想到构建项目竟然接二连三的爆了一堆错误,无力吐槽,步入正题。
-
首先按照github地址的使用说明添加相应的依赖https://github.com/JakeWharton/butterknife,一上来就开始报:gradle:connect time out 然后各种寻找解决办法,有人说是gradle版本的问题,我在根项目的gradle warper里用的是gradle-4.4-all.zip,所以就自己下了gradle-4.4.all.zip下载了放在as gradle设置user default gradle的路径下的gradle-4.4-all文件夹下的一串特殊字符的文件夹下,然后Sync Project with gradle file ,但是依然报错:gradle:connect time out,这个时候突然发现左下角进度条显示的是:Gradle:download ******ButterKnife-plugin-8.8.1,然后没过多久就提示:gradle:connect time out.这下才反应过来,原来是因为下载ButterKnife依赖失败了,原来gradle会先从本地库去加载依赖,如果本地库没有,就从远程库下载,但是远程库下载非常慢经常超时失败,所以一般用阿里的远程仓库下载,速度杠杠滴,具体就是在根项目的gradle里添加这行代码
allprojects { repositories { maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'} maven { // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm url "$rootDir/../node_modules/react-native/android" } } }
-
加了这行代码之后果然再也不报这种异常啦!说实话真是被AS搞得很无奈,这时候又爆了cant resolve butterknife,所以索性就删了build.gradle顶部的
apply plugin: 'com.jakewharton.butterknife'
3.上一步操作成功之后,NND又报错了,大体的意思就是我引用的react-native下的support-v7和我根项目的v7版本不一致。这TM一顿好找啊,发现两种解决方案:1⃣️用3x之后的AS api添加依赖方法:api(){ }括号内是添加的依赖,大括号内是该依赖的名字,具体可以查阅api()的相关语法,我用的第二解决办法:就是在gradle添加强制依赖的版本
/*
* 解决引用项目使用的依赖版本与跟项目版本不一致问题
*/
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion rootProject.ext.supportLibVersion
}
}
}
}
经过半天的折腾终于把ButterKnife添加到项目里啦!!!!!!哦对了,使用快捷键激活generator的时候也找了半天,因为windos使用alt+insert,但是Mac没有insert这个键,只能选中布局,然后右键就出来了,还有一点需要注意:如果你的gradle-plugin,也就是在根项目gradle非app下面的gradle 里
dependencies {
classpath 'com.android.tools.build:gradle:3.1.0'
classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
如果你用的classpath 'com.android.tools.build:gradle:2.XX
,而且仍然一直报莫名其妙的错,不妨改成3.1.0版本的试试,哦,如果你改成3.1.0的请不要忘记在gradle/wrapper/gradle-wrapper.properties里修改成
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip 或者其他相匹配的gradle版本。
如果有这方面的问题可以给我留言哦,如果知道一定回答。
--本该怒放的年纪,请多一些折腾,和些许肆无忌惮。