2

这个让我难住了。我显然错过了一些东西,但我不知道是什么。

我有一个库(不是 Android 库 - 只是一个常规 Java 库项目),它又使用其他库。所以,设置是:

myApi.jar

   |
   +-- com/myapi/ ... (.class files here).
   | 
   +-- libs/
        |
        +-- lib1.jar
        +-- lib2.jar

现在,当我myApi.jar在 Android 项目的 libs 目录中包含项目时,例如MyAndroidProject/libs,只有com.myapi. ...类被包含在classes.dex文件中。来自 lib1.jar 和 lib2.jar 的类不包含在 classes.dex 中

显而易见的解决方法是从 myApi.jar 文件中删除 lib1.jar 和 lib2.jar;而是将它们MyAndroidProject/libs也放入。但是,这意味着 myApi 的用户现在必须知道在构建路径上放置了额外的 JAR 文件。这是我希望避免的事情。

那么,要在文件中包含库 JAR 内部使用的 JAR 文件,我需要做些什么特别的事情classes.dex吗?

4

1 回答 1

1

但是,这意味着 myApi 的用户现在必须知道在构建路径上放置了额外的 JAR 文件。这是我希望避免的事情。

在这里,Android 的行为与普通 Java 的行为相同——如果myApi.jar支持 Swing 应用程序,您将需要分发所有 JAR 或将所有 JAR 合并为一个。安卓也一样。欢迎您将所有依赖 JAR 中的类折叠成您自己的,或者让项目重用您的 JAR 也将您的依赖项添加为它们自己的依赖项。

请注意,合并 JAR 内容可能会对技术或许可产生影响,因此请确保这是您真正想做的事情。

于 2011-11-08T13:42:35.617 回答