我正在构建一个 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 AppDemo
s build.gradle
像这样的文件:
dependencies{
implementation 'com.mycompany:mylibrary:1.2.3'
// other dependencies
}
问题是我遇到依赖错误,即MyLibrary
s 依赖项(在本例中,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(使用前将#替换为@)