Android Studio3.0之前的6种依赖方式和3.0之后新增的两种依赖方式

  • 一 3.0之前的6种方式
    • 1.1 Compile
    • 1.2 Provided
    • 1.3 APK
    • 1.4 Test compile
    • 1.5 Debug compile
    • 1.6 Release compile
  • 二 3.0之后新增的两种方式
    • 2.1 api关键字
    • 2.2 implementation 关键字
      • 2.2.1 implementation 的两个好处
      • 2.2.2 implementation 提高编译速度的原因:
      • 2.2.3 Google IO 的建议

一 3.0之前的6种方式

  • 共发现6中方式

Compile,Provided,APK,Test compile,Debug compile,Release compile

Android Studio3.0之前的6种依赖方式和3.0之后新增的两种依赖方式_第1张图片

1.1 Compile

对所有的build type以及favlors 编译并且打包 到apk

1.2 Provided

对所有的build type以及favlors 只编译,不打包到apk 类似eclipse中的external-libs

1.3 APK

只会打包到apk不参与编译,比如引用jar中的类或者方法, 编译时就会报错

1.4 Test compile

仅对 单元测试的代码和打包的测试APK 有效,而对debug或者release apk包无效

1.5 Debug compile

仅对 debug模式的编译和打包的debug APK 有效,而对test或者debug apk打包无效

1.6 Release compile

仅对 Release模式的编译和打包的Release APK 有效,而对test或者debug apk打包无效

二 3.0之后新增的两种方式

新建一个项目时,会在 Moudle 中发现 dependencies 中有所变化, compile变成了implementation,如下所示

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

新版本 Gradle plugin 3.0 中 讲明 compile 已过时,替换它的是implementation 和 api 两个关键字,其中api完全等同于compile, 而implementation 和 api/compile的区别如下:

2.1 api关键字

等同于compile, 用api指令编译,Piccaso依赖对app Module 是可见的,即等同app Module可以使用Piccaso依赖

Android Studio3.0之前的6种依赖方式和3.0之后新增的两种依赖方式_第2张图片

2.2 implementation 关键字

特点是将该依赖隐藏在内部,而不对外部公开

Android Studio3.0之前的6种依赖方式和3.0之后新增的两种依赖方式_第3张图片

用implement指令编译, Piccaso依赖对app Module 是不可见的,app Module不可以直接使用Piccaso
Android Studio3.0之前的6种依赖方式和3.0之后新增的两种依赖方式_第4张图片

2.2.1 implementation 的两个好处

  1. 提高编译速度
  2. 对外隐藏不必要的接口

2.2.2 implementation 提高编译速度的原因:

大型项目一般含有多个 Moudle 模块, 比如改动 LibraryC 接口的相关代码

1 如果使用implement, 这时候编译只需要单独编译 LibraryA 模块就行

2 如果使用 api 或者旧时代的 compile,由于App Moudle 也可以访问到 LibraryC ,所以 App Moudle 部分也需要重新编译

2.2.3 Google IO 的建议

依赖首先设置为implement

如果无错,那就用implement , 这样会使编译速度有所增快

如果有错,那么使用api指令

你可能感兴趣的:(Gradle)