gpt4 book ai didi

java - 如何在 Github 包中添加我的 Android 库的依赖项?

转载 作者:行者123 更新时间:2023-12-03 02:57:51 27 4
gpt4 key购买 nike

我正在构建一个 Android 库(例如 MyLibrary ),它将添加到我公司的其他应用程序中。该库在 build.gradle 中有一些依赖项。像这样的文件:

dependencies{
implementation 'com.alimuzaffar.lib:pinentryedittext:2.0.6'
implementation "com.google.android.gms:play-services-auth-api-phone:17.3.0"
// ... other dependencies
}


创建库后,我创建了一个 Github 包,因此我可以将其添加到 AppDemo 中的另一个应用程序(例如 AppDemo )小号 build.gradle像这样的文件:
dependencies{
implementation 'com.mycompany:mylibrary:1.2.3'
// other dependencies
}

问题是我得到依赖错误,即 MyLibrary s 依赖项(在此示例中, pinentryedittextplay-services-auth-api-phone 如上面库的 build.gradle 文件中所示)丢失。
我搜索了这个问题并尝试了一些解决方案,例如 Mobbeel fataar gradle plugin ,以及其他一些类似的插件,但我无法使它们工作。
谁能帮我解决这个问题或给我一个工作样本?任何帮助都将是可观的。

最佳答案

  • 本教程中显示的库文件 (aar) 将不包含传递依赖项。
  • 对于 Maven 存储库,Gradle 将使用包含依赖项列表的 pom 文件下载依赖项。
  • 在教程中显示的项目中,pom 文件不会生成嵌套依赖项列表。您必须在项目中指定依赖项,或者您必须修改代码以生成包含依赖项的 pom 文件。
  • 使用以下代码并更新 Android 库模块中的 build.gradle 文件以生成包含依赖项信息的 .pom 文件。

  • publications {
    bar(MavenPublication) {
    groupId getGroupId()
    artifactId getArtificatId()
    version getVersionName()
    artifact("$buildDir/outputs/aar/${getArtificatId()}-release.aar")
    pom.withXml {
    final dependenciesNode = asNode().appendNode('dependencies')
    ext.addDependency = { Dependency dep, String scope ->
    if (dep.group == null || dep.version == null || dep.name == null || dep.name == "unspecified")
    return // ignore invalid dependencies
    final dependencyNode = dependenciesNode.appendNode('dependency')
    dependencyNode.appendNode('groupId', dep.group)
    dependencyNode.appendNode('artifactId', dep.name)
    dependencyNode.appendNode('version', dep.version)
    dependencyNode.appendNode('scope', scope)
    if (!dep.transitive) {
    final exclusionNode = dependencyNode.appendNode('exclusions').appendNode('exclusion')
    exclusionNode.appendNode('groupId', '*')
    exclusionNode.appendNode('artifactId', '*')
    } else if (!dep.properties.excludeRules.empty) {
    final exclusionNode = dependencyNode.appendNode('exclusions').appendNode('exclusion')
    dep.properties.excludeRules.each { ExcludeRule rule ->
    exclusionNode.appendNode('groupId', rule.group ?: '*')
    exclusionNode.appendNode('artifactId', rule.module ?: '*')
    }
    }
    }
    configurations.compile.getDependencies().each { dep -> addDependency(dep, "compile") }

    configurations.api.getDependencies().each { dep -> addDependency(dep, "compile") }

    configurations.implementation.getDependencies().each { dep -> addDependency(dep, "runtime") }
    }
    }
    }


    以上代码引用自 Publish an Android library to Maven with aar and source jar

    关于java - 如何在 Github 包中添加我的 Android 库的依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58948586/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com