【发布时间】:2014-07-26 02:05:28
【问题描述】:
我最近问了一个非常相似的问题,但不知道如何表达。在收到一些反馈并研究了一些潜在的解决方案后,我现在再次询问我认为对这个问题的更好解释。
我的 Android 应用程序使用我的库 (parentLib),该库是从另一个库 (childLib) 中引用方法构建的。因此,App 本身使用 parentLib(一个 .jar 库),而 parentLib 又使用 childLib(另一个 .jar 库)。
这里的问题是,当应用程序尝试使用任何涉及嵌套库 (childLib) 的内容时,它会收到 NoClassDefFoundError,这会使应用程序崩溃。我认为这个问题是由于应用程序无法解决嵌套依赖。
我不能真正使用 Android 库项目,因为我需要尽可能地混淆和难以理解源代码。我也尝试使用 Android Studio 创建这些库,但遗憾的是没有得到更好的结果。
我的选择(我认为)是:
合并库
我可以将 childLib 和 parentLib 组合成一个 .jar 库,将它们分成不同的包。不过这会很困难,因为实际上我的预期应用程序大约有 6 个嵌套库。
坚持客户使用多个库
与其对客户说“这里有一个简单的库(parentLib)供你使用”,我可以说“这里有 7 个不同的库供你导入(parentLib、childLib 等),否则什么都不会工作”。不完全专业!
其他选项
我欢迎任何人提出任何其他建议!
提前致谢。
【问题讨论】:
-
好吧,这不是一个真正的解决方案...您使用的是 Eclipse 还是 Android Studio?当您尝试包含嵌套库时,Eclipse 会出现很多编译问题。使用 Android Studio 和 gradle,我很确定您不会对这个主题有任何问题。在另一方面。我的建议是不要将 parentLib 和 childLib 组合在一个项目中...我的建议是将您的 android 项目与 parentlib 组合在同一个项目中。从主项目中对 childLib 做一个简单的引用。
-
不幸的是,我无法将应用程序和库结合起来,因为这里的最终产品是一个库,它将分发给客户,然后他们自己开发一个使用库功能的应用程序。至于您对 Android Studio 的建议,我确实尝试过,但没有发现它与 Eclipse(我目前正在使用的)有任何不同的结果。您是否认为有一种方法可以让 Studio 生成一个引用子 .jar 库的 .jar 库?我知道它以非常不同的方式与库一起工作......?
-
这类依赖问题可能会消失。这也是我觉得用 graddle 和 maven 管理依赖的方式更加灵活的原因。
-
有趣!执行此操作时,您的库是否仍在 .jar 文件中,还是使用了 Android Studio 的 aar 系统?
-
组合库 - 这似乎是一个不错的选择,而且应该很容易用一个简单的脚本来完成。我不知道你为什么声称这会很困难(?)
标签: java android dependencies