如何在我的android库中包含依赖项

时间:2014-09-02 09:46:25

标签: java android android-gradle

我正在编写一个android sdk,我现在想要分发它,但我的依赖项存在问题。我正在使用gradle和android studio。

我的sdk依赖于volley和gson,我将它们添加为我的sdk中的jar。当我尝试在单独的客户端应用程序中创建aar或jar时,我总是会遇到崩溃,因为我的sdk试图引用齐射,因为它没有包含在aar或jar中。 关于我应该怎么做的任何想法?我已经研究过制造肥胖罐子并取得了很大的成功。

我也尝试过使用下面的远程依赖项,但即使在客户端应用程序中进行gradle构建之后,仍然不包括volley和gson。 这是我目前在sdk build.gradle

中的内容
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.mcxiaoke.volley:library-aar:1.0.0'
    compile 'com.google.code.gson:gson:2.3'
}

然后在客户端构建gradle我有

repositories {
    flatDir {
        dirs 'libs'
    }
}


dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile(name:'mysdk-1.0.0', ext:'aar')
}

我正在使用./gradlew clean build来构建我的sdk的aar和jar 谁能告诉我在我自己的lib中包含依赖项的正确方法?

2 个答案:

答案 0 :(得分:2)

如果您希望在客户端应用程序中包含库的传递依赖项,则需要创建包含pom.xml的正确maven兼容包。这个pom将描述你的lib的依赖关系,这样客户端可以在它们包含你的lib时传递这些deps。

请参阅本教程:http://blog.blundell-apps.com/locally-release-an-android-library-for-jcenter-or-maven-central-inclusion/

您不必在开发过程中的任何位置上传工件,只需将本地maven存储库用作目标,并将mavenLocal()作为客户端应用程序的存储库。 这样,您就可以使用
将您的lib称为标准maven依赖 compile 'com.mysdk:mysdk:1.0.0'

答案 1 :(得分:1)

在您的客户端中,更改依赖项块,如下所示:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile(name:'mysdk-1.0.0', ext:'aar') {
        transitive = true
    }
}

这也应该吸引你的传递依赖。