2010-09-13 100 views
13

哦Android。我如何愛你的言辭。如何在Eclipse中的Android庫項目中引用外部jar

我有一個工作區,裏面有幾個項目。 App1和App2是Android應用程序。 Common是一個Android庫項目。 App1和App2依靠Common(通過Android選項卡鏈接)。

常見的有一些外部依賴關係,即httpmime & apache-mime4j,它們以jar文件的形式存在。

出於某種原因,看起來我需要將我的mime jar添加到App1和App2的構建路徑以便編譯成功。這似乎很愚蠢。在普通的Java中,我會將Common添加到App1和App2的構建路徑,並且事情會起作用。這是否預計我必須將我的罐子添加到每個Android應用程序?

-Andy

注:如果我不配置構建路徑如上所述,我得到「類型org.apache.james.mime4j.message.SingleBody解決不了它間接引用需要.class文件| DataCallUtil.java |/App1/Common/util |行364「

+1

+1爲美好的介紹*和*爲優秀的問題。 – an00b 2011-06-13 16:47:27

+0

http://stackoverflow.com/questions/22962935檢查這 – Sandy09 2014-04-09 12:53:14

回答

8

我認爲omermuhammed和艾米特沒有得到Visser正在談論一個Android圖書館項目的事實。 對於那些項目,我不認爲有可能創建一個罐子。 (jar與所有Android資源無關)。

根據我對Android圖書館項目的經驗,這種類型的項目基本上是包裝來源和資源,並且已準備好包含在另一個項目中。 但是這些設置並不是軟件包的一部分,因此您必須爲每個應用程序包含這些庫。 根據我的經驗,這個設置並不是經常變化的,所以它並沒有那麼糟糕。

Android圖書館計劃仍然是完美的方式,但仍然是前所未有的巨大進步(即沒有)。

+2

+1,以澄清''設置不是包的一部分''。 – an00b 2011-06-13 16:49:13

+0

@alocaly +1對此有何更新?有沒有辦法將庫項目的引用jar文件包含到每個android應用程序項目中?順便說一下,可以通過使用Custom Ant Build來創建一個android jar文件,但仍然需要將引用的jar文件包含到應用程序項目中:(注意。 – eros 2011-08-29 02:44:43

0

嘗試將Common項目編譯爲jar並將其作爲外部jar添加到您的App1或App2項目中。

+0

我該怎麼做?文檔(http://developer.android.com/guide/developing/other-ide.html#libraryProject)指出,「然而,一個庫項目不同於標準的Android應用程序項目,因爲你不能直接編譯它自己的項目.apk或在Android平臺上運行它。同樣,您不能像導出真正的庫一樣將庫項目導出爲獨立的JAR文件。相反,您必須間接地編譯庫,方法是從依賴應用程序的構建路徑引用庫,然後構建該應用程序。「 – Visser 2010-09-14 19:39:42

+0

將公共項目編譯爲jar,將其複製到android項目下的」lib「文件夾中,然後eclipse,右鍵單擊android項目 - > Build Path - > Configure Build Path。現在,在左側面板中選擇「Java Build Path」,現在在「Library」面板下,點擊「Add External Jars」並添加你的jar。 。它應該工作。也不要忘記添加必要的行到你的AndroidManifest.xml標籤「 omermuhammed 2010-09-14 20:05:38

+0

我理解你正在談論的過程。但你的前7個詞,「編譯通用項目到一個罐子「如何?編寫一些自定義的Ant來做到這一點?我寧願做我正在做的事情,也不得不在任何地方添加依賴關係 這是我希望Eclipse能夠很好地完成的事情,如果沒有,帽子很好。我只想知道這是Android/Eclipse的一個缺點。 – Visser 2010-09-15 18:20:52

1

爲了增加omermuhammed的回覆,如果常見的項目不是經常更改的項目,創建一個jar並在其他項目中使用它是一個很好的解決方案。

要創建一個jar在Eclipse上右鍵單擊項目 - >導出 - > Java - > JAR文件,然後選擇要包含在JAR中的文件夾,在你的情況下,我猜這包括文件夾genlibs(libs是httpmime & apache-mime4j JARS的文件夾),但可能既不是res也不是您的項目的根目錄(帶有諸如AndroidManifest.xml這樣的文件,這會導致相同文件出現問題依賴項目)。

相關問題