本地AAR文件不能管理依赖项

6

我曾经开发过一款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。
1个回答

5
看起来Gradle没有从AAR库读取依赖项。 这是因为AAR文件中没有依赖关系。
我试图生成一个POM文件,但依赖关系也没有在其中出现。 那么你生成POM文件的方式存在问题。另外,据我所知,你需要将AAR及其POM文件放入存储库中,以便Gradle识别POM并使用其中的依赖信息。

1
@Gyoo:顺便说一下,这是我的一个库,它依赖于我的另一个库。我使用maven插件及其uploadArchives任务生成POM并将其与AAR一起复制到本地存储库(然后我将其同步到我的公共工件存储库Amazon S3上)。 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接