.jar库中的Android .jar库 - 嵌套依赖项

时间:2014-06-05 07:23:53

标签: java android dependencies

我最近问了一个非常相似的问题,但不确定如何说出来。收到一些反馈并研究了一些潜在的解决方案后,我现在再次询问我认为对此问题的更好解释。

我的Android应用程序使用我的库(parentLib),这个库是从另一个库(childLib)引用方法构建的。因此,App本身使用parentLib(.jar库),而parentLib又使用childLib(另一个.jar库)。

这里的问题是,当应用程序尝试使用涉及嵌套库(childLib)的任何内容时,它会收到NoClassDefFoundError,它会导致应用程序崩溃。我认为此问题是由于应用程序无法解析嵌套依赖项。

我无法真正使用Android库项目,因为我需要源代码尽可能混淆和难以理解。我也尝试使用Android Studio创建这些库,但遗憾的是没有更好的结果。

我的选择(我认为)是:

合并图书馆

我可以将childLib和parentLib组合成一个.jar库,将它们分成不同的包。但这很难,因为实际上我的预期应用程序有大约6个嵌套库。

坚持客户使用多个库

而不是向客户说,"这是一个简单的库(parentLib)供您使用",我可以改为说,"这里有7个不同的库供您导入(parentLib,childLib等),否则什么都不会起作用"。不太专业!

其他选项

我欢迎任何人有任何其他建议!

提前致谢。

2 个答案:

答案 0 :(得分:0)

NoClassDefFoundError 表示该类在编译期间存在,但在尝试执行时无法在类路径中使用。

因此,您需要告诉gradle编译这些库并将它们打包到apk中。

将所需的所有库jar复制到项目根目录中的 libs 文件夹中。然后,编辑gradle.build文件并添加以下内容:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

这将导致将所有必需的库添加到您的apk中。这样,当您执行需要它们的代码时,您需要的类将出现在类路径中。

答案 1 :(得分:0)

已通过移至Android Studio(不存在此类问题)解决。