我的(非Android)库内部使用的库未包含在classes.dex中

时间:2011-11-08 12:36:39

标签: android android-build

这个让我难过。我显然遗漏了一些东西,但我无法弄清楚是什么。

我有一个库(不是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文件。这是我希望避免的事情。

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

1 个答案:

答案 0 :(得分:1)

  

但是,这意味着myApi的用户现在必须知道在构建路径上还有其他JAR文件。这是我希望避免的事情。

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

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