哦,Android。我多么喜欢你的措辞。
我有一个工作区,里面有几个项目。 App1和App2是Android应用程序。 Common是一个Android库项目。 App1和App2依赖于Common(通过Android选项卡链接)。
Common有一些外部依赖,即httpmime& apache-mime4j,以jar文件形式存在。
出于某种原因,我似乎需要将我的mime jar添加到App1和App2的构建路径中,以便编译成功。这看起来真的很蠢。在普通的Java中,我会将Common添加到App1和App2的构建路径中,并且事情会起作用。我是否需要将我的jar添加到每个Android应用程序中?
-Andy
注意:如果我没有如上所述配置构建路径,我会得到“类型org.apache.james.mime4j.message.SingleBody无法解析。它是从所需的.class文件| DataCallUtil间接引用的。 java | / App1 / Common / util | line 364“
答案 0 :(得分:8)
我认为omermuhammed和Amit没有得到Visser正在谈论Android图书馆计划的事实。 对于那些项目,我认为不可能创建一个jar。 (jar与所有Android资源无关)。
根据我对Android Library Project的经验,这类项目基本上是打包的源和资源,并准备好包含在另一个项目中。 但是这些设置不是包的一部分,因此您必须为每个应用程序包含lib。 根据我的经验,这种设置不是经常变化的,所以它并不是那么糟糕。
Android图书馆项目仍然不是完美的,但仍然是以前的巨大改进(即没有)。
答案 1 :(得分:1)
为了增加omermuhammed的回复,如果 common 项目不是经常更改的项目,那么创建一个jar并在其他项目中使用它是一个很好的解决方案。
要创建jar,请右键单击Eclipse上的项目 - >出口 - > Java - > JAR文件,然后选择要包含在JAR中的文件夹,在您的情况下我想这包括文件夹 gen 和 libs (libs是包含httpmime和amp的文件夹; apache-mime4j JARS),但可能既不是 res 也不是项目的根目录(使用AndroidManifest.xml之类的文件会导致依赖项目中同一文件出现问题)。
答案 2 :(得分:0)
尝试将Common项目编译到jar中,并将其作为外部jar添加到App1或App2项目中。