2010-05-03 54 views
1

我試圖在我的android項目中包含一個maven java項目。 maven項目是允許開發人員訪問谷歌閱讀器帳戶並處理所有http事務和URI/URL構建的greader-非官方項目,使得來自Google閱讀器的提要和項目對開發人員透明。該項目可以在這裏找到:包括預構建的java類到Android項目中

http://code.google.com/p/greader-unofficial/

代碼最初是爲標準的JDK,並使用從java.net不屬於標準的Android SDK的一部分課程。我實際上試圖手動解決所有的依賴關係,並遇到了一個問題,當我得到包括com.un.syndication片斷所需的類be.lechtitseb.google.reader.api.util.AtomUtil.java ...一些java.net中的標準jdk中的類(我使用1.6)不在Android SDK中。另外,當我編譯一個非常簡單的Maven項目時,手動解決所有這些依賴關係是很荒謬的。

不過,我可以使用Maven編譯沒有問題的來源。我怎麼能包括這個maven項目,這是依賴於完整的jdk到我的android項目中,這樣它會編譯,以便我可以從我的android項目訪問GoogleReader類?並且爲了記錄,我沒有專業知識來重寫這個完整的api來使用標準的Android SDK。

回答

0

如果第三方庫需要標準的JRE類進行編譯,它可能需要它們運行以及。嘗試從構建中刪除訪問不可用JRE類的第三方方法/類。如果您的應用仍然可以使用精簡庫,然後交付(假設許可證與更改兼容)。 可能的情況下,您唯一的第三方庫的其他選項是用替代方法替換違規的JRE調用。

-1

問題不是編譯/編譯代碼,對嗎?正如你所說,它編譯得很好。它直接或間接使用Android中不可用的類。 (而且,我強調即使編譯它也不意味着它會在Android上運行,因爲它可能需要運行時不在Android中的類。)所以問題是將這些類放到.apk中。

您可以使用Android構建將它們添加到external-libs注入第三方庫的副本。但是我不知道它的工作原理是把JDK的rt.jar文件(其中包含所有java.net類以及其他所有內容)。您的應用程序將擁有標準Java庫類的第二個副本,幾乎肯定不會以某種方式兼容。

我強烈懷疑它不會工作,或者如果它恰好,將是脆弱的。

正在修改庫如此艱難?如果只有幾個java.net類不可用,也許在一個單獨的問題中,您可以徵求關於解決方法而不使用它們的想法。因爲實際上根據我的經驗,Android有所有的java.net類,所以我很好奇缺少什麼。

+0

我基本上不得不重做所有的工作要準確地找到其依賴關係是給我的問題。 greader api使用依賴於dom4j(org.dom4j。*)的jaxen(org.jaxen。*),這取決於java.beans中的一些不在Android SDK中的類,所以這些違規包是jaxen和dom4j for取決於Android中不可用的JDK部分。 無論哪種方式,我大概可以解決它。我會繼續工具。感謝您的建議。 – moonlightcheese 2010-05-05 22:16:36