gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:44:03 25 4
gpt4 key购买 nike

我最近问了一个非常相似的问题,但不确定如何措辞。在收到一些反馈并研究了一些可能的解决方案后,我现在再次提问,我认为这是对问题的更好解释。

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

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

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

我的选择(我认为)是:

合并库

我可能会将 childLib 和 parentLib 合并到一个 .jar 库中,将它们分成不同的包。不过这会很困难,因为在实践中,我的预期应用程序大约有 6 个嵌套库。

坚持客户使用多个库

与其对客户说“这里有一个简单的库 (parentLib) 供您使用”,我可以说“这里有 7 个不同的库供您导入(parentLib、childLib 等),否则什么都不会工作”。不完全专业!

其他选项

我欢迎任何人提出任何其他建议!

提前致谢。

最佳答案

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

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

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

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

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

关于java - .jar 库中的 Android .jar 库 - 嵌套依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24054102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com