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

时间:2019-06-18 10:50:16

标签: android gradle dependencies android-library transitive-dependency

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

我已经尝试过将库发布到Bintray,将app-gradle文件中的'implementation'关键字更改为'api'。 我也尝试过在应用程式的gradle档案中设定transitive = true

当尝试构建Android应用时,它会为我的媒体库中使用的Resource Linking Failed显示CardView

1 个答案:

答案 0 :(得分:1)

在构建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 Studio中打开终端,然后执行以下命令:

./gradlew clean build generateRelease

这会在您的app/build目录中生成一个.zip文件,您可以将其上传到如上所述的Bintray中