2014-09-02 58 views
5

我写一个Android SDK和我现在要分发,但我有它的依赖问题。我正在使用gradle和android studio。怎样包括我的Android库的依赖

我的SDK已在排球和GSON的依赖,我有他们在我的SDK加入罐子。当过我尝试创建一个AAR或单独的客户端应用程序中使用,我总是得到一个崩溃当过我的SDK会尝试,因为它没有包括的无论是AAR或jar引用凌空一个罐子。 关于我应该如何做这件事的任何想法?我研究过创造脂肪罐取得了很大的成功。

我也使用类似以下,但即使是在客户端应用程序都排球和GSON的Gradle一个构建之后远程依赖性仍然没有被纳入审判。 这是目前我已经在我的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中包含依赖关系的正确方法吗?

+0

将您的库引用为标准maven依赖项。这是一个非常简洁明确的问题。它捕捉到我想要问的东西,但没有必要,因为我找到了你的!荣誉。 – 2016-01-08 17:07:49

+0

你是如何解决它的?接受的答案不适合我。 – 2016-02-26 09:22:53

回答

2

在您的客户端,改变你的相关模块,像这样:

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

这应该拉在你的传递依赖,以及。

+0

我在哪里可以调用这个compile(name:ext :)?我试图在我的客户端的build.gradle中调用它,它会给mysdk-1.0.0带来错误。我以为mysdk-1.0.0只是一个标签,将会给出结果的jar/aar。我该怎么办? – user2498079 2015-02-25 12:13:01

+0

这不适合我。 AAR文件是否在其中包含依赖信息?不是必需的POM文件吗? – treesAreEverywhere 2015-07-17 18:00:05

1

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

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

您不必在开发过程中的任何地方上传的神器,只要使用本地Maven回购作为目标,并有mavenLocal()为您的客户端应用程序的存储库。 这样,您就可以使用
compile 'com.mysdk:mysdk:1.0.0'

+0

死链接,现在它的[http://blog.blundellapps.co.uk/locally-release-an-android-library-for-jcenter-or-maven-central-inclusion/](http://blog.blundellapps .co.uk /本地释放-AN-机器人库换jcenter - 或行家中央系夹杂物/) – ocramot 2018-02-11 16:42:11