Android studio中gradle依赖简述

Android Studio由于使用了gradle的进行项目构建,使我们开发app方便很多,下面这篇文章主要给大家介绍了关于Android Studio中Gradle依赖的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

 

目录

一、不同类型的library引入方案:

二、不同依赖配置方式的区别:compile、implementation、api


一、不同类型的library引入方案

  1. 本地Module library依赖
    通过这种方式依赖的弊端是每次都需要构建module,当module比较多时构建非常耗时,建议控制module的依赖数量,避免构建耗时

    //module需要在项目根目录下的settings.gradle中通过include引入
    implementation project(':libraryA')

     

  2. 本地二进制library依赖:jar和aar
    本地的jar和aar需要放在module的libs文件夹下,通过这种方式依赖的弊端是不知道jar和aar的版本号,如果要按照这种方式依赖,建议将jar/aar的名字加上版本信息,方便确认版本
    依赖jar:

    // 可以一条依赖引入libs下所有的jar
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    
    // 也可以指定依赖某一个或几个jar
    implementation files('libs/sdtapi.jar', 'libs/jndi-1.2.1.jar')

    依赖aar:

    // 在module的build.gradle中增加如下语句: 
    repositories {
     flatDir {
      dirs 'libs'
     }
    }
    
    // 可以一条依赖引入libs下所有的aar
    implementation fileTree(dir: 'libs', include: ['*.aar'])
    
    // 也可以指定依赖某一个aar
    implementation (name: 'library-aar', ext: 'aar')

     

二、不同依赖配置方式的区别:compile、implementation、api

从Android Gradle plugin 3.0开始,对于依赖包的配置方式,引入了implementation和api,使用Android Studio新建项目时,原来用compile的地方全部默认被替换成了implementation 比如

dependencies {
 compile fileTree(dir: 'libs', include: ['*.jar'])
 compile 'com.android.support:appcompat-v7:27.1.1'
 compile 'com.android.support.constraint:constraint-layout:1.1.3'
}

变成下面的样子

dependencies {
  implementation fileTree(dir: 'libs', include: ['*.jar'])
  implementation 'com.android.support:appcompat-v7:27.1.1'
  implementation 'com.android.support.constraint:constraint-layout:1.1.3'
}

 

依赖配置方式还有:provided、api、apk、compileOnly、runtimeOnly、渠道名+Compile,差异主要在于构建内容和参与构建的时机,多样的配置方式满足了开发者的花样需求,具体区别如下

  1. implementation

    依赖包中依赖的library只能在依赖包内部使用,主工程无法访问依赖包依赖的library中的类和方法。使用场景:SDK开发中对第三方library有依赖,希望控制SDK的大小、不想因为和宿主工程引用的同一个依赖包版本不同导致编译冲突时特别适合。

    因为当依赖包依赖的library有改动时,只会重新编译library和依赖包,不需要重新编译宿主,所以构建速度会快一些。

    对于各个渠道还可以单独依赖属于渠道特有的包,通过渠道名+implementation指定,比如debugImplementation、releaseImplementation、testImplementation。

  2. api(原compile)

    会将依赖包中依赖的其它library一同编译和打包到apk中,宿主工程可以使用依赖包中依赖的其它library的类和方法

    对于各个渠道还可以单独依赖属于渠道特有的包,通过渠道名+api/compile指定,比如debugApi、releaseApi、testApi

  3. compileOnly(provided)
    主要是为了方便程序编译通过的,不会打包到apk中,使用场景:android系统有这个API,但编译时需要引入才能构建通过,比如系统的APK依赖framework.jar、gson库等
  4. runtimeOnly(原apk)
    只是打包到apk中,不参与编译,不能在代码中直接调用依赖包的代码,否则会在编译时出错。一般很少使用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值