我曾经开发过一款Android库(一个API客户端),它使用了Retrofit和Joda DateTime。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'joda-time:joda-time:2.8.1'
}
现在这个库已经完成了,我将它编译成一个AAR文件,并想在一个应用程序中使用它。因此,我将它添加到应用程序的libs文件夹中,并在build.gradle文件中进行了如下包含:
dependencies {
compile(name:'s3papiandroidclient', ext:'aar')
//Some other things
}
然而,当我尝试从库中初始化API客户端时,当调用来自RetroFit或DateTime的对象时(例如retrofit.RestAdapter),应用程序崩溃。看起来Gradle没有读取AAR库中的依赖项,因此没有在我的应用程序中安装Retrofit和DateTime。我尝试在我的AAR文件上使用“transitive = true”参数,但没有帮助。
另一个可能有帮助的点是,我尝试生成POM文件,依赖项也不会出现在其中。看起来这些确实有问题,我完全被卡住了。
我找到的唯一解决方法是手动将AAR文件中的依赖项添加到应用程序的build.gradle文件中,但这没有意义,我认为Gradle可以自己导入依赖项!
问候,
Gyoo。
maven
插件及其uploadArchives
任务生成POM并将其与AAR一起复制到本地存储库(然后我将其同步到我的公共工件存储库Amazon S3上)。 - CommonsWare