gradle 入坑指南(基本原理介绍+错误集锦)

这次我真的是算是掉坑了,必须写一波来抒发自己对gradle的敬畏之心。
本文主要讲解在Android Studio中gradle配置的坑。


 

关于Android Studio 中的 Gradle


描述:Android Studio默认集成Gradle,主要有两种途径:自动下载和本地下载选择。
 

1.用gradle wrapper 中的版本配置,去下载安装gradle 。

详情步骤:

  • 查看gradle-weapper properties 文件里指定gradle下载地址。
     
    例子指定了下载gradle4.1版本:
    distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
    如下图:在这里插入图片描述

  • 查看gradle插件和gradle版本关系是否对应,不对应会报错。
     
    如上图:我们下载的是4.1版的gradle,我们可以用3.0.0+。对应关系表传送门(需要翻墙)

    在这里插入图片描述
    关系对照表(更新至2019.1.30日)
    在这里插入图片描述

2.本地下载,然后Android Studio选择对应版本。

步骤详情:

preference -> Gradle->Use local gradle distribution

Gradle home 填写Gradle本地下载地址。

在这里插入图片描述

同样需要指定gradle插件版本与本地选择版本对应。

 
 

Gradle相关配置


这几天采坑,搜帖子发现很多博客都是为了解决问题而解决问题,有些选项不了解什么意思就敢点(我也点了)。不了解原理和报错原因,就开始动手会把问题复杂化。

下面是gradle一些配置说明:
 

1.Offline work工作模式

配置描述:

离线模式工作,看这个名字已经明白了一二。
离线工作模式会从缓存中获取依赖库,而不去网络下载。如果缓存中没有依赖,打开这个模式一定会失败。

The --offline command line switch tells Gradle to always use dependency modules from the cache, regardless if they are due to be checked again. When running with offline, Gradle will never attempt to access the network to perform dependency resolution. If required modules are not present in the dependency cache, build execution will fail.

 

2.Enable embedded Maven repository

配置描述:

允许加入maven仓库,我是Mac版Android Studio默认不是勾选的。
在这里插入图片描述

 

3.设置HTTP代理

在这里插入图片描述
设置完后置gradle.properties文件会出现设置内容,如果不用记得清除。(下面截图不是上个图配置地址,只是想说下位置在这里插入图片描述
 
 

错误集锦(终于可以吐槽了)


 

错误1:Unknown host ‘d29vzk4ow07wi7.cloudfront.net’. You may need to adjust the proxy settings in Gradle.

详情描述:
在这里插入图片描述

分析和解决:

这里提示你打开离线模式和去设置HTTP代理。

我刚建的项目,让我打开离线模式去工作,这不是扯淡吗?缓存现在什么都没有。(如果你打开离线模式,然后重新同步,它就会提醒你立马关上。)

然后是设置HTTP代理(步骤介绍上文),设置过之后也可以翻墙。你发现并没有卵用。

原因:
Mac版Android Studio默认不是勾选Enable embedded Maven repository,然后gradle无法下载在maven仓库的依赖。

解决:如上文

 

错误2:gradle下载不了第三方库、 Could not download 、 Connet refused

 

分析和解决:

原因:被墙了,gradle无法下载依赖库

解决:要么翻墙,要么采用国内镜像。推荐采用阿里镜像很快。

allprojects {  
    repositories {  
         maven {  
             name "aliyunmaven"  
             url "http://maven.aliyun.com/nexus/content/groups/public/"  
         }  
    }  
}  

 

错误3:org.gradle.api.resources.ResourceException: Could not get resource

解决:如上文

 

错误4:ERROR: The SourceSet ‘instrumentTest’ is not recognized by the Android Gradle Plugin. Perhaps you misspelled something?

项目中 gradle 配置

 sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
            jniLibs.srcDirs = ['libs']
        }

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }

原因:

是这里出问题了 instrumentTest.setRoot(‘tests’) ,你可能在升级 Android Studio 时更新了项目的 gradle 配置,这里的配置中 instrumentTest 已被弃用,不适用于现在的 gradle 版本。

解决办法:
用 androidTest 替换 instrumentTest,编译运行即可。

待续 …(希望不续)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星宇大前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值