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

2024-05-05

我正在构建一个 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) in AppDemos build.gradle像这样的文件:

dependencies{
    implementation 'com.mycompany:mylibrary:1.2.3'
    // other dependencies
}

问题是我遇到依赖错误,即MyLibrarys 依赖项(在本例中,pinentryedittext , play-services-auth-api-phone如图书馆的所示build.gradle上面的文件)丢失。 我用谷歌搜索了这个问题并尝试了一些解决方案,例如,Mobbeel fataar gradle 插件 https://github.com/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") }
        }
    }
}

上述代码引用自使用 aar 和源 jar 将 Android 库发布到 Maven https://stackoverflow.com/questions/26874498/publish-an-android-library-to-maven-with-aar-and-source-jar

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Github 包中添加我的 Android 库的依赖项? 的相关文章

随机推荐