安卓工作室 : Link of external JAR in a multi modules project

标签 android android-studio gradle jar

我有一个 Android 应用程序(在 Android Studio 上运行)。它由 2 个模块组成: - 有一个低级别的纯 Java 模块(我们称之为模块 A)。 - 在它之上,有模块 B,它是 Android 应用程序。它依赖于 moduleA 进行一些处理。

这工作正常。

我现在需要模块 A 来调用外部库。我已经下载了 JAR 文件并将其放在 moduleA/libs 文件夹中。 这个libs文件夹在moduleA的gradle dependency中被引用所以编译是OK的。但是,在运行时有一个异常:

致命异常导致:java.lang.ClassNotFoundException:在路径上找不到类“XXXX”:DexPathList

我看到APK中没有JAR文件,所以出现这个异常是正常的。

如果我在 moduleB/libs 中复制同一个 JAR 文件,那么它工作正常,但我在项目中有两次 JAR 文件!处理这个问题的干净解决方案是什么? 我猜它可以用 gradle 解决,但我不知道如何解决。

非常感谢 奥利维尔

最佳答案

我已经能够解决这个问题。关于 Gradle 的阅读对我帮助很大: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Creating-a-Library-Project

这是我所做的: 我没有将 JAR 文件放在 moduleA/libs 文件夹中,而是通过单击项目然后右键单击 -> 新建 -> 模块将 JAR 文件导入到 Android Studio 中。然后我点击“导入 .JAR/.AAR 包”。 这创建了一个包含 JAR 文件 + 一个 gradle 脚本的模块。

然后,在 moduleA 的 gradle 脚本中,我在依赖项中添加了这个: 编译项目(路径:':name_of_the_jar_file')

我重新构建了所有内容并且它可以正常工作。 JAR 文件现在存在于 APK 中,运行时不再发生崩溃。

关于安卓工作室 : Link of external JAR in a multi modules project,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41430033/

相关文章:

java - 如何从html中获取图像数据

java - Firebase Firestore,如何抢夺Collection中最新(新)对象的变化?

android - 使Gradle更快的不同方法

c++ - 使用 Android Studio 构建共享 *.so 库的发布版本

android - Android Studio Gradle-JavaExec类路径配置-Java反射-类访问

Android Studio list 合并失败

android - 如何创建具有最小和最大高度的布局?

android - Mac OS Yosemite 下 Android Studio float 模式窗口不断跳回显示器与主窗口

gradle - 无法使用 Gradle 和 Kotlin 编译项目

android - 关于弱引用的问题