包含来自 jCenter 的 AAR 是否也包含它的依赖项?

Does including a AAR from jCenter also include its dependencies?

我已经将 MoPub SDK 集成到一个新的 Android 应用程序中,使用最简单的方法,即向我的主模块的 build.gradle 添加依赖项(按照 MoPub integration guide 中的说明) :

repositories {
    jcenter()
}

dependencies {
    compile('com.mopub:mopub-sdk:4.1.0@aar') {
        transitive = true
    }
}

该指南提到 MoPub SDK 需要几个依赖项:

Requirements and Dependencies

  • android-support-v4.jar, r22
  • android-support-annotations.jar, r22
  • android-support-v7-recyclerview.jar, r22
  • MoPub Volley Library (mopub-volley-1.1.0.jar - available on JCenter)

我应该自己添加这些依赖,还是由Gradle依赖管理系统处理?

这些被称为 Transitive dependencies 并且 Gradle 自动检索它们(假设一个指定 transitive=true 正如你在问题中所指定的那样)

它们在 mopub-sdk pom 文件中指定,该文件是 library repo.

中包含的信息的一部分

您可以查看该文件,您会发现:

  <dependencies>
    <dependency>
      <groupId>com.google.android.exoplayer</groupId>
      <artifactId>exoplayer</artifactId>
      <version>r1.4.2</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>com.android.support</groupId>
      <artifactId>support-annotations</artifactId>
      <version>22.2.0</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>com.android.support</groupId>
      <artifactId>support-v4</artifactId>
      <version>22.2.0</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>com.android.support</groupId>
      <artifactId>recyclerview-v7</artifactId>
      <version>22.2.0</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>com.mopub.volley</groupId>
      <artifactId>mopub-volley</artifactId>
      <version>1.1.0</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>

一个问题是 google 支持库依赖项在 JCenter() 上不可用,您必须使用 Android SDK 管理器单独安装它们。在本地安装它们后,Gradle 可以在 Android SDK 为此目的设置的本地存储库中找到它们。

您不需要全部添加。 Gradle 处理它。

我一直在使用 mopub,并且只用这些就可以正常工作:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile('com.mopub:mopub-sdk:3.12.0@aar') {
        transitive = true
    }
    compile project(':mm-ad-sdk')
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:support-v4:23.1.1'
    compile 'com.android.support:preference-v7:23.1.1'
    compile 'com.google.android.gms:play-services:8.3.0'
    compile 'com.android.support:design:23.1.1'
}

支持库适用于我的项目。因此没有为 mopub 添加。如果您想使用 admob,只需添加 play-services。同样,如果您打算使用 mopub 调解其他网络,请参考 dependencies/jar。