Gradle配置之依赖管理

发表于:2018-1-12 13:30  作者:Leo   来源:Leo's Blog

字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签: 配置管理

  常用依赖方式
  我们最常用的依赖声明有:
//依赖文件(批量依赖jar)
compile fileTree(include: ['*.jar'], dir: 'libs')
//依赖文件(单个文件jar)
compile files('libs/normal-1.0.0.jar')
//远程依赖(aar或jar)
compile 'com.jakewharton:butterknife:6.0.0'
//依赖工程
compile project(':base-jar')
//可以指定依赖的具体配置,这要保证base-jar中配置了publishNonDefault为true,不然有可能找不到
compile project(path:':base-jar',configuration:'sitDebug')
//依赖本地aar,需要在repositories中配置flatDir,就是把存放aar的目录拍扁到和gradle配置在一个目录下.
compile(name: 'image_picker_v1.0.3', ext: 'aar')
  库工程依赖传递问题
  1、依赖常用的基本类型有:provided和compile,provided 只在编译生效不会打包到 apk 或 aar 中;compile 是会打包到 apk或 aar 中的(如果是库工程的话有特殊情况,参考下面3).
  2、app 工程的当前(compile+) 的依赖都会打包到 app 中
  3、库工程中:
  1) jar 包:远程依赖不会打包到 aar 中;本地依赖会;
  2) aar:远程和本地都不不会打包到 aar中.
  3) 如果你要提供你的库工程的 aar 给他人,你需要同时告诉他这个库工程依赖的其他aar 和远程 jar包(因为他们没有打包到 aar 中)
  4) 如果通过工程依赖(即compile project(':lib')的方式), 依赖是可以传递的,所以不需要在声明一次依赖.
  排除传递的依赖:
//一般通过远程依赖都会自动导入该依赖的依赖.通过下面的方式可以移除这种传递的依赖
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
  排除冲突文件
  参考官方文档:PackagingOptions
  通过packagingOptions中的exclude方法配置.
  pickFirst
//如下:如果多个 aar中包含了冲突的 jar 或者 so, 可以通过下面的配置,则 Android 打包的时候符合下面匹配规则的文件就选择第一个作为打包内容,后续的直接护绿.
packagingOptions {
pickFirst "**/libBugly.so"
pickFirst "**/tbs-*.jar"
pickFirst "**/bugly-*.jar"
}
  packagingOptions还有其他两个配置项为merge(碰到冲突会合并)和exclude(直接排除匹配到的文件),这里的参数模式支持**和*,前者可以跨越文件目录路径,后者只能匹配某个目录名或文件名,比如:
//匹配的是任意目录下的libBugly.so 文件
**/libBugly.so
//匹配的是根目录的某个目录下的文件名以 Bugly.so 结尾的文件
*/*Bugly.so

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。  

评 论

论坛新帖

顶部 底部


建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海瀛东律师事务所 张楠律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2018, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道