我想导出依赖于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 B
和module C
作为module C
的依赖关系。
我可以编译而不会出错,但是当我运行module C
app时,似乎module B
类不在运行时类路径中。
有关如何解决问题的一些提示?
这是错误:
Caused by: java.lang.NoClassDefFoundError: moduleB.backend.registration.Registration$Builder
答案 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类相关的问题。他们错过了这些依赖。