android - 库模块中的依赖关系

标签 android gradle aar

我正在 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 库,使其包含这些外部依赖项?谢谢!

最佳答案

几个月前我遇到了类似的问题,如果你在存储库中发布你的库,那么你必须添加一个 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
}

关于android - 库模块中的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38836693/

相关文章:

java - 如何将 .jar 依赖项包含到最终的 .aar 库文件中? (安卓工作室1.5)

android - OkHttp 响应缓存不起作用

android - 警告:配置 'compile'已过时,已被 'implementation'和 'api'取代

android - gradle构建不包含aar android库

android - 找不到Android Studio Gradle DSL方法: 'mavencentral()'

gradle - 从单个 src/main/java 文件夹 : GRADLE Project 创建多个库 [每个用于一个包]

java - Gradle 发布构建 - 保留方法参数名称

android - RxJava - 捕捉消费者异常

IntelliJ IDEA Android开发 -v Eclipse (Starting an Activity)

php - 重新配置后,MySQL 数据库未从 WampServer 中的 android 接收 post 变量