簡體   English   中英

如何在Android項目中包含Java項目?

[英]How to include a Java project in an Android project?

我正在使用Eclipse開發Android棋盤游戲。 我在Android項目中開發了UI。

另一方面,我在常規Java項目中開發了AI,因為我希望能夠在沒有Android模擬器的所有約束的情況下測試它(我沒有找到使用我的Windows JVM運行代碼的任何其他方法)。

現在,我希望“加入”兩個項目(獨立工作正常),即使用UI中的AI Java類。

這是我嘗試過的:

在我的Android項目Properties > Projects References中 ,我勾選了Java項目。 這允許我構建沒有錯誤的Android項目(實例化AI對象)。

但它在運行時因此錯誤而失敗:

Could not find class 'my.package.AI', referenced from method my.otherpackage.UI.onStart

將AI Java項目納入我的Android項目的正確方法是什么?

(注意:我仍然希望能夠開發和測試AI作為常規Java應用程序,因此我認為使用jar或將所有源代碼復制到Android項目將不適合我的需求)

編輯:

我希望新的ADT v17可以解決問題,但事實並非如此。 我幾乎嘗試了所有可用的選項,在我的Android項目中包含一個項目:

  • 添加或鏈接源文件夾
  • 添加項目(Java構建路徑>項目選項卡)
  • 添加類文件夾或庫(Java構建路徑>庫選項卡)
  • 將所有先前導入的projets /庫標記為已導出

允許編譯和運行而沒有錯誤的唯一方法是將Java項目的JAR添加到Android項目構建路徑。

Projects References僅將依賴項目源代碼(您的AI項目)添加為軟(可能是一個更准確的單詞)參考,您的AI項目不會添加到您的Android項目構建路徑中。 因此,當Eclipse構建您的應用程序時,實際的ai.jar不會導出到最終的apk中。

您應該將AI項目添加到Android項目構建路徑中:

  1. 右鍵單擊您的android項目,在Projects選項卡(構建路徑中的必需項目)中選擇Build Path - Configure Build Path,在此處添加您的AI項目。
  2. 然后在“訂購和導出”選項卡(構建類路徑順序和導出的條目)中,勾選列表中出現的新添加的AI項目。

第2步可能是可選的,這應該在Android項目中添加AI項目作為參考,並在Eclipse構建Android項目時將ai.jar導出到final.apk。

ADT 17.0.0更新:

Android Dev Team剛剛發布了帶有ADT 17.0.0的SDK r17,它聲稱現在可以正確處理這些用例:

Eclipse特定的更改

名為“Library Projects”的動態類路徑容器已重命名為“Android Dependencies”,因為它現在不僅包含Library Projects。

現在,容器也將填充由Library Projects引用的僅Java項目。 如果這些Java項目也引用其他Java項目和/或jar文件,它們將自動添加(也支持通過用戶庫引用的jar文件)。

重要說明:僅當引用設置為在引用項目中導出時才會發生這種情況。 請注意,將項目或jar文件添加到項目構建路徑時,這不是默認設置。 始終導出庫項目(及其libs / * .jar文件的內容)。 此更改僅影響僅Java項目及其自己的jar文件。

同樣,檢測並刪除重復項(項目和jar文件)。

更多鏈接

編輯:經過大量測試,閱讀並找到了我的解決方案。 問題是(在撰寫本文時)您無法從Android項目引用另一個項目,盡管它適用於普通的Java應用程序項目。

我的解決方法(帶有NTFS文件系統的Windows):
在提示符(管理員權限)中,使用指向源項目文件夾的mklink /D命令創建符號文件夾鏈接,並根據需要在Eclipse中刷新。 顯而易見的限制是您無法在源項目和目標項目中使用相同的包名稱,然后在公共項目中存在libs的問題。

例:

cd \java\workspace\AndroidProject\src\your\package
mklink /D common c:\java\workspace\CommonProject\src\your\package\common

澄清:可以從Android項目中引用另一個項目來進行編譯,但是當您運行時,包含項目中引用的類不會放入apk classes.dex (使用dex反編譯器驗證)。

在Windows 7 64位上使用ADT 21.0.0 64位。 我嘗試添加項目來構建路徑。 在訂單和出口中打勾,玩了訂單。 我閱讀了官方解決方案 ,該解決方案詳細解釋 ,導出為JAR,添加到庫中。 沒有工作,而源沒有錯誤。 請閱讀評論中的解決方案並不適合所有人。

厭倦了它並嘗試了一個簡單但有點混亂的解決方案:將Java項目的源鏈接到Android項目。 這就是訣竅。 希望這也能幫助別人。

不要將它添加到項目引用區域,而是進入Android窗格(在“項目屬性”中),向下滾動到底部,然后將其添加到“庫”下。

這有時會起作用,但有時會產生奇怪的Eclipse問題(不確定原因),在這種情況下,將jar直接復制到項目中似乎效果最好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM