我在Android Studio中创建了一个Android库,该库具有一些外部依赖项(例如,Retrofit)。 但是,当我尝试在Android应用程序中使用此库时,该应用程序不包含传递依赖项(库中包含的依赖项)。
我已经尝试过将库发布到Bintray,将app-gradle文件中的'implementation'关键字更改为'api'。 我也尝试过在应用程式的gradle档案中设定transitive = true
当尝试构建Android应用时,它会为我的媒体库中使用的Resource Linking Failed
显示CardView
。
答案 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中