Android Studio

6.2、Android Studio 添加编译依赖

2017-07-25  本文已影响284人  Android那些事儿

文章摘要
1、 三种依赖类型
2、库依赖关系配置
3、远程仓库
4、查看依赖关系树


英文文献

Android Studio中的摇篮构建系统可以很容易地包括外部的二进制文件或其他库模块到您的构建与依赖。该依赖性可以位于您的计算机上或远程仓库中,他们宣布任何传递依赖将自动包括在内。

一、依赖类型

要添加一个依赖于你的项目,指定诸如依赖配置compile在dependencies您的块build.gradle文件。

例如,下面build.gradle为应用模块文件包括三种不同类型的依赖关系:

apply plugin: 'com.android.application'

android { ... }
dependencies {
    // Dependency on a local library module
    compile project(":mylibrary")

    // Dependency on local binaries
    compile fileTree(dir: 'libs', include: ['*.jar'])

    // Dependency on a remote binary
    compile 'com.example.android:app-magic:12.3'
}

每个这些要求不同类型的依赖关系如下:

compile project(':mylibrary')

此声明一有依赖性的Android库模块 名为“在MyLibrary”(此名称必须定义为库名称相匹配include你的settings.gradle文件)。它需要构建系统编译库模块与应用模块,并在您的APK所产生的AAR文件。

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

由于Gradle读取相对路径的build.gradle 文件,这告诉构建系统添加您的项目内的所有JAR文件 module_name/libs/的目录的依赖。
或者,您可以指定单独的文件如下:

compile files('libs/foo.jar', 'libs/bar.jar')
compile 'com.example.android:app-magic:12.3'

这实际上是以下简写:

compile group: 'com.example.android', name: 'app-magic', version: '12.3'

这宣告了“应用程序魔”库的12.3版本的依赖,在“code.example.android”命名空间组内。

注意:这样的远程依赖性要求你申报相应的远程资源库,其中摇篮应该寻找库。如果库已经不存在本地,摇篮从远程站点时,构建需要它(当您单击如拉它同步工程与摇篮文件 或当您运行构建)。

二、库依赖关系配置

内侧dependencies块,可以声明使用几种不同的一个库依赖依赖关系配置(诸如compile上面示出)。每个相关配置提供了摇篮有关如何使用图书馆不同的指令。下面的列表描述了每个可使用在你的Android项目库依赖的配置。

注:虽然 Java Plugin for Gradle 提供了类似于下面定义的依赖关系配置,你不能在你的Android使用它们的项目,只有下面配置了Android Plugin for Gradle兼容。

注意:您可以使用apk只为JAR二进制依赖。它不支持库模块或AAR二进制依赖。

注意:如果你要创建一个Android应用程序模块,则不能使用 provided了AAR的依赖,只为JAR文件。在Android库模块,你可以用它两个JAR和AARS。

以上配置适用于项目的主要来源集,它适用于所有的构建变种。
如果你不是想声明的依赖只有特定的 构建变量源设置或更改一个 测试源设置,你必须利用配置名称以及与构建变量或测试源集的名称前缀它。

例如,在添加compile
依赖关系只为您的“免费”产品的风味(使用远程二进制依赖),它看起来像这样:

dependencies {
    freeCompile 'com.google.firebase:firebase-ads:9.8.0'
}

但是,如果你想添加一个依赖于结合了产品的风味变体和构建类型,那么你必须初始化的配置名称configurations块。下面的示例增加了一个apk依赖于你的“freeDebug”打造变种(使用本地二进制依赖):

configurations {
    // Initializes a placeholder for the freeDebugApk dependency configuration.
    freeDebugApk {}
}

dependencies {
    freeDebugApk fileTree(dir: 'libs', include: ['*.jar'])
}

要添加compile为本地测试和仪表测试的依赖性,它看起来像这样:

dependencies {
    // Adds a remote binary dependency only for local tests.
    testCompile 'junit:junit:4.12'

    // Adds a remote binary dependency only for the instrumented test APK.
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
}

如果你的库模块提供了多个变种,你可以添加不同的库变体像这样不同的应用程序变量:

dependencies {
  // Adds the 'debug' varaint of the library to the debug varaint of the app
  debugCompile project(path: ':my-library-module', configuration: 'debug')

  // Adds the 'release' varaint of the library to the release varaint of the app
  releaseCompile project(path: ':my-library-module', configuration: 'release')
}

三、远程仓库

当你的依赖比当地的图书馆或文件树以外的东西,摇篮会在哪个在线存储库中指定的文件 repositories的块build.gradle文件。

默认情况下,新的Android Studio项目申报JCenter作为该项目的顶级存储库位置build.gradle的文件,如下图所示:

allprojects {
    repositories {
        jcenter()
    }
}

如果你想从Maven的中央仓库的东西,然后再添加 mavenCentral(),或本地存储库使用mavenLocal():

allprojects {
    repositories {
        jcenter()
        mavenCentral()
        mavenLocal()
    }
}

参考配置:

allprojects {
    repositories {
        maven {
            url "https://repo.example.com/maven2"
        }
        maven {
            url "file://local/repo/"
        }
        ivy {
            url "https://repo.example.com/ivy"
        }
    }
}

四、查看依赖关系树

有些直接依赖可能有自己的依赖。这些被称为 传递依赖。而不是要求您手动声明每个传递依赖,摇篮自动收集,并增加了它们。为了形象化两个项目的直接和传递依赖,对于摇篮的Android插件提供了生成依赖关系树为每个摇篮任务构建变量测试源集合

要生成此报告,步骤如下:

下面的示例报告显示调试构建变量的依赖关系树,包括前面例子中的本地库模块依赖和远程依赖性。

Executing tasks: [androidDependencies]
:app:androidDependencies
debug
/**
 * Both the library module dependency and remote binary dependency are listed
 * with their transitive dependencies.
 */
+--- MyApp:mylibrary:unspecified
|    \--- com.android.support:appcompat-v7:26.0.0
|         +--- com.android.support:animated-vector-drawable:26.0.0
|         |    \--- com.android.support:support-vector-drawable:26.0.0
|         |         \--- com.android.support:support-v4:26.0.0
|         |              \--- LOCAL: internal_impl-26.0.0.jar
|         +--- com.android.support:support-v4:26.0.0
|         |    \--- LOCAL: internal_impl-26.0.0.jar
|         \--- com.android.support:support-vector-drawable:26.0.0
|              \--- com.android.support:support-v4:26.0.0
|                   \--- LOCAL: internal_impl-26.0.0.jar
\--- com.android.support:appcompat-v7:26.0.0
     +--- com.android.support:animated-vector-drawable:26.0.0
     |    \--- com.android.support:support-vector-drawable:26.0.0
     |         \--- com.android.support:support-v4:26.0.0
     |              \--- LOCAL: internal_impl-26.0.0.jar
     +--- com.android.support:support-v4:26.0.0
     |    \--- LOCAL: internal_impl-26.0.0.jar
     \--- com.android.support:support-vector-drawable:26.0.0
          \--- com.android.support:support-v4:26.0.0
               \--- LOCAL: internal_impl-26.0.0.jar
...
上一篇下一篇

猜你喜欢

热点阅读