Gradle学习手册

gradle特性

传递性依赖

Gradle在依赖配置上面,和Maven一样,支持传递性依赖,然后和Maven不同的是,它还支持排除传递性依赖以及关闭传递性依赖。

compile ('android.support.nb.refreshview:refreshview:0.1@aar'){
        transitive = true
    }

该意为传递性依赖,会将该aar中依赖的其他jar,或者aar引入其中,所以如果该aar是公网aar,切记其对应工程的compile包含的jar和对应的aar必须可以在公网找到,而不是利用

compile project(':framework')

这样的方式,因为如果支持了传递性依赖,会默认去下载framework-unspecial这个对应的aar,即如你想使用该aar,且也需要去传递依赖,该library对应的dependencies需要写为:

compile 'android.support.nb.framework:framework:0.1@aar'

这样传递依赖就会先去下载framework-0.1.aar,再去下载refreshview-0.1.aar;

排除传递性依赖

如果refreshview-0.1.aar里面包含了数个依赖包,例如a.jar,而因为你的其他aar也包含有a.jar,这样就会导致jar包重复,出现:

Error:Execution failed for task ':app:processDebugResources'.
> Error: more than one library with package name 'com.neu.framework'
You can temporarily disable this error with android.enforceUniquePackageName=false
However, this is temporary and will be enforced in 1.0

所以你可以选择排除传递依赖

compile('javax.servlet.jsp.jstl:jstl-api:1.2') {
        exclude(module: 'servlet-api')      // 防止版本冲突
    }
关闭传递性依赖
compile ('android.support.nb.refreshview:refreshview:0.1@aar'){
        transitive = false
    }

注意:默认情况下, 传递性依赖为transitive = false

d

当你在aar中定义了相关组件,同时在app中有相关xml的定义,切记需要开启传递性依赖,如果关闭将会出现对应的组件类不会被找到。

dependencies属性值

compile: compile是对所有的build type以及favlors都会参与编译并且打包到最终的apk文件中。

compile ‘com.github.orhanobut:logger:1.12’

Provided: Provided是对所有的build type以及favlors只在编译时使用,类似eclipse中的external-libs,只参与编译,不打包到最终apk。

provided project(‘:framework’)

APK: 只会打包到apk文件中,而不参与编译,所以不能再代码中直接调用jar中的类或方法,否则在编译时会报错。

Test compile:Test compile 仅仅是针对单元测试代码的编译编译以及最终打包测试apk时有效,而对正常的debug或者release apk包不起作用。

Debug compile:Debug compile 仅仅针对debug模式的编译和最终的debug apk打包。

Release compile:Release compile 仅仅针对Release 模式的编译和最终的Release apk打包。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值