导出依赖于App Engine模块的Android库

时间:2015-11-19 06:28:35

标签: android google-app-engine module classloader

我想导出依赖于App Engine模块(module A)的Android库模块(module B)。

在包含应用模块(module C)的新项目中,我导入module A导入.aar文件和module B导入moduleB/build/libs/moduleB-android-endpoints.jar。然后,我在module A的gradle文件中添加了module Bmodule C作为module C的依赖关系。

我可以编译而不会出错,但是当我运行module C app时,似乎module B类不在运行时类路径中。

有关如何解决问题的一些提示?

这是错误:

Caused by: java.lang.NoClassDefFoundError: moduleB.backend.registration.Registration$Builder

2 个答案:

答案 0 :(得分:1)

请完成以下步骤。它将解决您的问题

1)构建模块B并复制jar文件。 2)将模块B jar(moduleB-android-endpoints.jar)添加到模块A的libs文件夹中。 3)打开模块app gradle文件并在依赖目录中添加以下代码。

compile files('moduleB-android-endpoints.jar')

4)同步模块A和构建。它将生成A模块A. 5)打开模块C,将模块A生成的aar文件添加到模块C的libs文件夹中。 6)将以下行添加到模块C app gradle文件中。

dependencies {    
   compile(name:'module A aar file name', ext:'aar')
}
repositories{
   flatDir{
      dirs 'libs'
    }
}

7)同步和重建模块C.它将起作用

答案 1 :(得分:0)

我决定将这些行添加到module C的gradle文件中:

compile ('com.google.api-client:google-api-client-android:1.17.0-rc') {
    exclude module: 'httpclient'
}
compile ('com.google.http-client:google-http-client-gson:1.17.0-rc') {
    exclude module: 'httpclient'
}

这是与module B内自动创建的内部Builder类相关的问题。他们错过了这些依赖。