2014-09-02 56 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