我想导出一个依赖于应用程序引擎模块(module B
)的Android库模块(module A
)。
在一个带有应用程序模块(module C
)的新项目中,我导入了导入.aar
文件的module A
和导入moduleB/build/libs/moduleB-android-endpoints.jar
的module B
。然后,我在module C
的渐变文件中添加了module A
和module B
作为module C
的依赖项。
我可以编译而不会出错,但当我运行module C
应用程序时,module B
类似乎不在运行时类路径中。
关于如何解决问题的一些提示?
这就是错误:
Caused by: java.lang.NoClassDefFoundError: moduleB.backend.registration.Registration$Builder
请完成以下步骤。它将解决您的问题
1) 构建模块B并复制jar文件。2) 将模块Bjar(moduleBandroidendpoints.jar)添加到模块A的libs文件夹中。3) 打开模块A应用程序渐变文件,并在依赖项目录中添加以下代码。
compile files('moduleB-android-endpoints.jar')
4) 同步模块A并生成。它将生成模块A的aar。5) 打开模块C,将模块A生成的aar文件添加到模块C的libs文件夹中。6) 将以下行添加到模块C应用程序渐变文件中。
dependencies {
compile(name:'module A aar file name', ext:'aar')
}
repositories{
flatDir{
dirs 'libs'
}
}
7) 同步和重建模块C。它将工作
我解决了将这些行添加到module C
的渐变文件中的问题:
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类有关的问题。他们错过了这些依赖。