android - 本地 aar 库的传递依赖

标签 android android-gradle-plugin aar

我们正在制作一些库,主要是为了我们的 API,我们可以让我们的外部开发人员的生活更轻松。

因此我们创建了新的库项目,并将 Retrofit 和其他一些库作为依赖项。

dependencies {
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.google.code.gson:gson:2.6.2'
    compile 'com.squareup.retrofit2:retrofit:2.0.1'
    compile 'com.squareup.retrofit2:converter-gson:2.0.1'
    compile 'com.squareup.okhttp3:okhttp:3.2.0'
}

现在当我们构建它时,它会生成 aar 文件。

但是现在当我们将aar文件放到libs目录下并设置为依赖时,我们还是要在用户的build.gradle中放入同样的依赖 文件,这很糟糕。应该是从图书馆借的吧?

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    compile(name: 'ourlibrary', ext: 'aar') {
        transitive = true;
    }
}

如何使 transitive = true 工作?

最佳答案

aar 文件不包含嵌套(或 transitive)依赖项 并且没有描述库所用依赖项的 pom 文件。

这意味着,如果您使用 flatDir 存储库导入 aar 文件,您还必须在项目中指定依赖项。

在您的情况下,由于上述原因,添加 transitive=true 并不能解决您的问题。

您应该使用ma​​ven 存储库(您必须在私有(private)或公共(public)maven 存储库中发布该库),您不会遇到同样的问题。
在这种情况下,gradle 使用包含依赖项列表的 pom 文件下载依赖项。

关于android - 本地 aar 库的传递依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55508710/

相关文章:

android - android中的覆盖是什么?

android - 在不打扰正在进行的 Activity 的情况下在 EditText 上打字?

android - “未找到 Android 属性。”构建 Flutter aar 时出错

java - 程序类型已存在 :

java - 如何为设备所有者配置自定义 Android Google 设置向导?

android - 如何修复 "Android SDK Build Tools version (27.0.3) is ignored..."

Android 构建错误 : Program type already present: android. support.v7.app.**

android - 错误 :(17, 0) 未找到 SDK 位置

android - 将依赖项包含在 Android 库中的最佳方式?

android - Android在AAR上找不到第三个库