2016-08-08 156 views
0

我在Android Studio中構建了一個庫,其中包含多個Gradle依賴項,如estimote和firebase sdk。當我出口圖書館作爲一個AAR,然後將其導入到一個樣本項目,我得到一個運行時錯誤:庫模塊中的依賴關係

E/UncaughtException: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/estimote/sdk/BeaconManager; 
                        at com.mgenio.sdk.BeaconSDK.init(BeaconSDK.java:87) 
                        at com.mgenio.sdk.BeaconSDK.checkSDK(BeaconSDK.java:214) 
                        at com.mgenio.sdk.BeaconSDK.access$800(BeaconSDK.java:33) 
                        at com.mgenio.sdk.BeaconSDK$3.onResponse(BeaconSDK.java:186) 
                        at com.mgenio.sdk.BeaconSDK$3.onResponse(BeaconSDK.java:182) 
                        at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60) 
                        at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30) 
                        at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99) 
                        at android.os.Handler.handleCallback(Handler.java:739) 
                        at android.os.Handler.dispatchMessage(Handler.java:95) 
                        at android.os.Looper.loop(Looper.java:158) 
                        at android.app.ActivityThread.main(ActivityThread.java:7229) 
                        at java.lang.reflect.Method.invoke(Native Method) 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
                       Caused by: java.lang.ClassNotFoundException: Didn't find class "com.estimote.sdk.BeaconManager" on path: DexPathList[[zip file "/data/app/com.mgenio.smartscansample-1/base.apk"],nativeLibraryDirectories=[/data/app/com.mgenio.smartscansample-1/lib/arm64, /vendor/lib64, /system/lib64]] 
                        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 

有導出我的AAR庫,它包含這些外部依賴一種特殊的方式?謝謝!

+0

是否要在一個或多個項目中使用該庫? – larsgrefer

回答

0

Is there a special way to export my aar library so it includes these external dependencies?

沒有


Exept您部署AAR成一個Maven或常春藤庫。

+0

那你怎麼放置你的任何相關性? – njzk2

0

您只需將相同的依賴關係添加到您的示例項目中,並讓Gradle來處理它。

1

幾個月前,我有類似的問題,如果你要在庫中發佈你的庫,那麼你必須添加一個xml或其他類型的文件,其中包含你的庫的依賴關係。

如果你需要喲使用任何類的相關性,當您編譯庫在gradle這個文件的應用模塊中,你必須添加transitive=true有機會獲得這一類或資源這樣

compile('mx.segundamano.doubleseekbarview'){ 
    transitive=true 
} 

編輯

如果你發佈到Bintray - Maven倉庫,在同級別添加此行到您的gradle這個文件在您bintray配置

task generateSourcesJar(type: Jar) { 
    from android.sourceSets.main.java.srcDirs 
    classifier 'sources' 
} 

artifacts { 
    archives generateSourcesJar 
} 
+0

謝謝,你有一個正確的XML文件的例子嗎? –

+0

檢查更新後的答案;) –