无法在我的 Android 应用程序中获取我的库的传递依赖项

Unable to get transitive dependencies of my library in my Android app

我在 Android studio 中创建了一个 Android 库,它有一些外部依赖项(例如 Retrofit)。 但是当我尝试在 Android 应用程序中使用此库时,该应用程序不包含传递依赖项(库中包含的依赖项)。

我已经尝试将库发布到 Bintray,将 app-gradle 文件中的 'implementation' 关键字更改为 'api'。 我还尝试在我的应用程序 gradle 文件

中设置 transitive = true

在尝试构建 Android 应用程序时,它显示 Resource Linking Failed 用于 CardView,它在我的库中使用。

我在为 Android 构建库时遇到了同样的问题。 我试图直接将 .aar 文件从 android studio 上传到 bintray。但显然,它不包括 pom.xml 文件。 所以我按照 this 教程生成了 zip 文件。 然后在 bintray 创建一个新版本,然后使用 UI upload 选项手动上传 zip 文件 另外,上传时不要忘记勾选 explode this Archive 选项。 然后,您可以发布库并将其与所有传递依赖项一起使用。 这是一个示例 build.gradle 代码:

def version = 'your.version'
def localReleaseDest = "${buildDir}/release/${version}"
uploadArchives {
    repositories.mavenDeployer {
        pom.groupId = 'your.package.name'
        pom.artifactId = 'yourModuleName'
        pom.version = 'your.version'
        // Add other pom properties here if you want (developer details / licenses)
        repository(url: "file://${localReleaseDest}")
    }
}

task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
    classifier = 'javadoc'
    from androidJavadocs.destinationDir
}

task androidSourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.srcDirs
}

artifacts {
    archives androidSourcesJar
    archives androidJavadocsJar
}
task zipRelease(type: Zip) {
    from localReleaseDest
    destinationDir buildDir
    archiveName "release-${version}.zip"
}

task generateRelease {
    doLast {
        println "Release ${version} can be found at ${localReleaseDest}/"
        println "Release ${version} zipped can be found ${buildDir}/release-${version}.zip"
    }
}

generateRelease.dependsOn(uploadArchives)
generateRelease.dependsOn(zipRelease)

根据需要修改此代码后,将此代码放在应用级别 gradle 的所有块之外。 现在,在 Android 工作室中同步项目并打开终端,然后执行此命令:

./gradlew clean build generateRelease

这将在您的 app/build 目录中生成一个 .zip 文件,您可以按上述方式将其上传到 bintray