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

Qaz*_*han 5 java android github gradle github-package-registry

我正在构建一个 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
}

Run Code Online (Sandbox Code Playgroud)

创建库后,我创建了一个 Github 包,因此我可以将其添加到s文件AppDemo中的另一个应用程序(例如),如下所示:AppDemobuild.gradle

dependencies{
    implementation 'com.mycompany:mylibrary:1.2.3'
    // other dependencies
}
Run Code Online (Sandbox Code Playgroud)

问题是我遇到依赖项错误,即缺少MyLibrarys 依赖项(在本例中为pinentryedittextplay-services-auth-api-phone如上面库的文件所示)。build.gradle我用谷歌搜索了这个问题并尝试了一些解决方案,例如Mobbeel fataar gradle 插件和其他一些类似的插件,但我无法使它们工作。有人可以帮我解决这个问题或者给我一个工作样本吗?任何帮助都将非常重要。

小智 2

    \n
  • 本教程中显示的库文件 (aar) 将不包含传递依赖项。
  • \n
  • 对于 Maven 存储库,Gradle 将使用包含依赖项列表的 pom 文件下载依赖项。
  • \n
  • 在教程所示的项目中,pom 文件不会生成嵌套依赖项列表。您必须在项目中指定依赖项,或者您\xe2\x80\x99 必须修改代码以生成包含依赖项的 pom 文件。
  • \n
  • 使用以下代码并更新 Android 库模块内的 build.gradle 文件,以生成包含有关依赖项信息的 .pom 文件。
  • \n
\n\n
\npublications {\n    bar(MavenPublication) {\n        groupId getGroupId()\n        artifactId getArtificatId()\n        version getVersionName()\n        artifact("$buildDir/outputs/aar/${getArtificatId()}-release.aar")\n        pom.withXml {\n            final dependenciesNode = asNode().appendNode(\'dependencies\')\n            ext.addDependency = { Dependency dep, String scope ->\n                if (dep.group == null || dep.version == null || dep.name == null || dep.name == "unspecified")\n                    return // ignore invalid dependencies\n                final dependencyNode = dependenciesNode.appendNode(\'dependency\')\n                dependencyNode.appendNode(\'groupId\', dep.group)\n                dependencyNode.appendNode(\'artifactId\', dep.name)\n                dependencyNode.appendNode(\'version\', dep.version)\n                dependencyNode.appendNode(\'scope\', scope)\n                if (!dep.transitive) {\n                    final exclusionNode = dependencyNode.appendNode(\'exclusions\').appendNode(\'exclusion\')\n                    exclusionNode.appendNode(\'groupId\', \'*\')\n                    exclusionNode.appendNode(\'artifactId\', \'*\')\n                } else if (!dep.properties.excludeRules.empty) {\n                    final exclusionNode = dependencyNode.appendNode(\'exclusions\').appendNode(\'exclusion\')\n                    dep.properties.excludeRules.each { ExcludeRule rule ->\n                        exclusionNode.appendNode(\'groupId\', rule.group ?: \'*\')\n                        exclusionNode.appendNode(\'artifactId\', rule.module ?: \'*\')\n                    }\n                }\n            }\n            configurations.compile.getDependencies().each { dep -> addDependency(dep, "compile") }\n\n            configurations.api.getDependencies().each { dep -> addDependency(dep, "compile") }\n\n            configurations.implementation.getDependencies().each { dep -> addDependency(dep, "runtime") }\n        }\n    }\n}\n\n
Run Code Online (Sandbox Code Playgroud)\n\n

上面的代码引用自使用aar和源jar将Android库发布到Maven

\n