compileSdkVersion = 28
buildToolsVersion = '28.0.3'
minSdkVersion = 19
targetSdkVersion = 26
supportLibVersion = '28+'
maven { url 'https://maven.aliyun.com/repository/public/' }
jcenter() { 'https://maven.aliyun.com/repository/public/' }
maven { url 'https://www.jitpack.io' }
maven {
url 'https://maven.aliyun.com/repository/google/'
name 'Google'
}
看到问题的根本是看看两个地方的地址是不是可以访问
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip 这里决定了build里的标签 classpath 'com.android.tools.build:gradle:3.6.3' buildscript { repositories { jcenter() google() } dependencies { classpath 'com.android.tools.build:gradle:3.6.3' } } 老的没有google()标签 所以直接使用maven
仓库服务其所有的本质还是仓库(allprojects)地址和插件(buildscript)地址 我本地环境 jcenter和google的默认地址是可以访问的 allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/public/' } google() { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://www.jitpack.io' } flatDir { dirs 'libs',project(':libcore').file('libs') } } }
注意
1、如果一直都是编译顺利,但是偶然卡顿,解决的最后办法就是删除本地gradle缓存的文件位置就是C:\Users\Administrator\.gradle\caches
那么buildscript中的repositories和allprojects的repositories的作用和区别是什么呢?
- buildscript里是gradle脚本执行所需依赖,分别是对应的maven库和插件;
- allprojects里是项目本身需要的依赖,比如我现在要依赖maven库的xx库,那么我应该将maven {url '库链接'}写在这里,而不是buildscript中,否则找不到所需要的库。
这里有个原理的问题:
as编译的时候是先到allprojects写的仓库里下载对应的外部项目aar或者jar文件
as在依赖包的时候会出现不同的model依赖了不一样版本的包 这个时候要找到重复的依赖添加
// implementation('cn.rongcloud.sdk:im_lib:5.1.3.3', { // exclude group: 'com.google.code.gson' // })
这样的标签过滤掉版本问题
andorid studio 去掉冲突的引用
// subprojects {
// project.configurations.all {
// resolutionStrategy.eachDependency { details ->
// if (details.requested.group == 'androidx.arch.core'
// && details.requested.name.contains('core-runtime') ) {
// details.useVersion "2.1.0"
// }
// }
// }
// }