我最近问了一个非常相似的问题,但不确定如何说出来。收到一些反馈并研究了一些潜在的解决方案后,我现在再次询问我认为对此问题的更好解释。
我的Android应用程序使用我的库(parentLib),这个库是从另一个库(childLib)引用方法构建的。因此,App本身使用parentLib(.jar库),而parentLib又使用childLib(另一个.jar库)。
这里的问题是,当应用程序尝试使用涉及嵌套库(childLib)的任何内容时,它会收到NoClassDefFoundError,它会导致应用程序崩溃。我认为此问题是由于应用程序无法解析嵌套依赖项。
我无法真正使用Android库项目,因为我需要源代码尽可能混淆和难以理解。我也尝试使用Android Studio创建这些库,但遗憾的是没有更好的结果。
我的选择(我认为)是:
合并图书馆
我可以将childLib和parentLib组合成一个.jar库,将它们分成不同的包。但这很难,因为实际上我的预期应用程序有大约6个嵌套库。
坚持客户使用多个库
而不是向客户说,"这是一个简单的库(parentLib)供您使用",我可以改为说,"这里有7个不同的库供您导入(parentLib,childLib等),否则什么都不会起作用"。不太专业!
其他选项
我欢迎任何人有任何其他建议!
提前致谢。
答案 0 :(得分:0)
NoClassDefFoundError 表示该类在编译期间存在,但在尝试执行时无法在类路径中使用。
因此,您需要告诉gradle编译这些库并将它们打包到apk中。
将所需的所有库jar复制到项目根目录中的 libs 文件夹中。然后,编辑gradle.build文件并添加以下内容:
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
这将导致将所有必需的库添加到您的apk中。这样,当您执行需要它们的代码时,您需要的类将出现在类路径中。
答案 1 :(得分:0)
已通过移至Android Studio(不存在此类问题)解决。