这是我的开发项目结构:
projectFolder | +--App | +--MyLib | +--Libraries | +--LibA
MyLib依赖于LibA,我已将MyLib打包为AAR并将其发布到Maven仓库,但当我将MyLib作为远程aar依赖项包含在另一个项目(TestProj)中时,我得到构建错误(无法解析LibA的依赖关系, LibA不包含在MyLib的发布中,
这是TestProj的app文件夹中的build.gradel:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile ('xxx.xxxxxx:yyyyy:1.0-SNAPSHOT@aar'){
transitive = true
}
}
这是MyLib的build.gradle:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':Libraries:LibA')
}
如何在已经打包在AAR中的LibA中发布MyLib?
解决方法:
自己回答这个问题.最后我将MyLib中的build.gradle更改为:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
provided project(':Libraries:LibA')
}
所以LibA只会在MyLib的构建过程中使用,TestProj在编译时不再要求LibA依赖.注意这可能会在运行时导致NoClassDefFoundError,因此您必须告诉使用您的库的人将LibA自己包含在他们项目的build.gradle中.
起初,我一直在寻找一种方法来使用MyLib打包LibA,但这看起来很困难.
看到这个问题:Android Studio how to package single AAR from multiple library projects?