当前位置: 首页 > 知识库问答 >
问题:

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

程俊力
2023-03-14

我正在构建一个Android库(比如,MyLibrary),它将添加到我公司的其他应用程序中。库在<code>构建中有一些依赖项。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包,这样我就可以将它添加到AppDemosbuild.gradle文件中的另一个应用程序(比如AppDemo),如下所示:

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

问题是我得到了依赖性错误,也就是说,MyLibrary的依赖性(在本例中,PiEntryEditTextplay services auth api phone,如上面库的build.gradle文件所示)丢失。我用谷歌搜索了这个问题,并尝试了一些解决方案,例如Mobbeel fataar gradle插件和其他一些类似的插件,但我无法让它们工作。有人能帮我吗?或者给我一个工作样本?任何帮助都是值得的。

共有2个答案

宰烈
2023-03-14

如果有人需要,在大量搜索和尝试一些gradle插件(mobbeel,kezong等)后,我最终得出结论,在github包中添加依赖项是一个坏主意,因此最终用户应该包含这些依赖项。也就是说,最终用户应该以这种方式添加梯度相关性:

dependencies{
    implementation 'com.mycompany:mylibrary:1.2.3' // <-- the actual lirbary
    // library dependencies
    implementation 'com.alimuzaffar.lib:pinentryedittext:2.0.6' 
    implementation "com.google.android.gms:play-services-auth-api-phone:17.3.0"
    // other dependencies of end user's app
    // ... ... ...
}
喻珂
2023-03-14
    < li >教程中显示的库文件(aar)将不包括可传递依赖关系。 < li >对于Maven repos,Gradle将使用包含依赖项列表的pom文件下载依赖项。 < li >在教程中显示的项目中,pom文件不生成嵌套依赖关系列表。要么您必须指定项目中的依赖项,要么您必须修改代码以生成包含依赖项的pom文件。 < li >使用以下代码并更新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库引用到Maven with aar和source jar

 类似资料:
  • 我想要添加此依赖项编译到我的Android studio项目中。 当将此添加到依赖项中并单击同步时,显示此错误:

  • 像这样的问题有很多,但是似乎没有一个对我有效或者直接回答我的问题。 我正在使用Jhipster和MongoDB Atlas。Jhipster使用一个名为Mongobee的库,其中使用了一个适用于MongoDB的方法,但不适用于MongoDB Atlas。要启动,Mongobee似乎不再维护。 因此,我找到了某人的建议PR,他们将其发送给Mongobee进行审查,我接受了代码更改,将MongoBe分

  • 所以,我有一个配置了包注册表的GitHub项目。它有两个包: 包页面只有Maven的说明,除此之外,说明被破坏了(不是在Maven中添加依赖项的有效方法): 问题是:如何在Gradle构建中添加该包?

  • 本文向大家介绍android-gradle 如何添加依赖项,包括了android-gradle 如何添加依赖项的使用技巧和注意事项,需要的朋友参考一下 示例 下面的示例描述了如何在app /模块的build.gradle文件中声明三种不同类型的直接依赖关系:            

  • 我正在为一个供应商做一个库项目,它需要Android Volley作为一个依赖项。我已经在Android Studio中使用了这个Create aar文件来创建.aar文件,并将其包含在一个测试项目中,我正在使用这个添加本地.aar文件到使用“flatdirs”的Gradle build中是不起作用的。库链接精细,项目编制无差错。但在运行时,测试应用程序崩溃,说它找不到Volley 我的图书馆项目