zoukankan      html  css  js  c++  java
  • Gradle 依赖配置

    今天查了下关于gradle中的依赖引用的情况: 

    原文:https://zhuanlan.zhihu.com/p/110215979

    当前Gradle中共有 5 种依赖关系 ;外加2种测试用的依赖

    01. Implementation

          将指定的依赖添加到编译路径,并将该依赖打包到输出文件中,如apk;

         但是这个依赖在编译时不能暴露给其他模块,例如依赖此模块的其他模块。这种方式指定的依赖在编译时只能在当前模块中访问。

          

     02. api

          使用api配置的依赖会将对应的依赖添加到编译路径,并将依赖打包输出,但是这个依赖是可以传递的,

          比如模块A依赖模块B,B依赖库C,模块B在编译时能够访问到库C,但是与implemetation不同的是,在模块A中库C也是可以访问的。

          

     03. compileOnly

          compileOnly修饰的依赖会添加到编译路径中,但是不会打包到apk中,因此只能在编译时访问,且compileOnly修饰的依赖不会传递。

          

    04. runtimeOnly

         这个与compileOnly相反,它修饰的依赖不会添加到编译路径中,但是被打包到apk中,运行时使用。

    05. annotationProcessor

         用于注解处理器的依赖配置

    测试用依赖
       testImplementation  和  androidTestImplementation

    -------------------------------------------------------------------------------------------------------------

    举例:

       LomBok:  这个库是用于在编译时快速生成Getter和Setter等内容的,所以只使用在编译阶段,同时配置上注释依赖处理

       

    06. 对Jar或aar包的依赖配置

         在某些情况下,自己开发的jar 包,aar包或者第三方开发的包已经下载到本地,现在需要被项目引用到,该如何配置呢?

         在新建 项目后,在结构中,会有一个 libs目录,一般情况下,我们会直接将第三方包放在这个目录下;

         此时,对于包的引用有二种方式:

        方式A: 直接在dependencies中添加引用, 如下面二个例子 

                       **  implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')

                       **  implementation fileTree(dir: 'libs', include: ['*.jar'])         

                      此种方式简单粗暴,但是不允许同时出现同一模块不同编译类型的jar(或aar),
                      例如,如果libs同时存在test-release.aar和test-debug.aar,他们都是来自同一个module的打包,但是只是编译类型不一样,如果同时存在的话,会编译不过.

        方式B:先在gradle中添加目录, 之后再按需要进行引用

                     

  • 相关阅读:
    HTML <input> 标签的 maxlength 属性
    HTTP 方法:GET 对比 POST
    怎么在html页面和js里判断是否是IE浏览器
    一行神奇的javascript代码
    c# 数据库批量插入数据SqlBulkCopy 示例
    c# 多线程调用窗体上的控件 示例
    sqlserver查找使用了某个字段的所有存储过程
    SQL Server 数据库性能优化
    SQL语句的执行过程
    Sql Server- 性能优化辅助指标SET STATISTICS TIME ON和SET STATISTICS IO ON
  • 原文地址:https://www.cnblogs.com/jieling/p/15181597.html
Copyright © 2011-2022 走看看