2014-01-15 26 views
12

我正在研究快速接近dex文件的64K方法限制的項目。這個Android Developer blog post(從2011年7月開始)解釋瞭如何通過由Ant驅動的命令行構建來獲得動態類加載,但並未探索如何從IDE內部使其工作(除了說它在Eclipse中不起作用)。使用IntelliJ-64K方法dex問題的動態類加載

我環顧四周,找不到就得到這個系統從內部工作的IntelliJ什麼。 IntelliJ是否支持使用多個dex文件構建應用程序?如果是這樣,一個人如何設置?

+0

你有什麼錯誤? – hopia

+2

的Android敏捷:java.lang.IllegalArgumentException異常:不能在[0,0xFFFF的]方法ID:65536 – Mark

回答

0

Multidex似乎是最好的,最快的解決方法65K限制選項。 Google在設置Multidex here方面擁有出色的文檔。

0

有兩種選擇:

  1. 打破現有的類。或者
  2. 將您的課程移出到另一個項目並將其構建爲庫(.jar)。當博客帖子(在查詢中提到)建議時,使用他們的類分別在您的項目中加載此庫(.jar)。
+0

但如果我這樣做,就不要引用說罐子中未正確編譯給出的罐子我的主要項目是動態加載? – Mark

+0

不,它不會像罐子將被加載,如果給出的參考它不會導致任何問題。 –

3

嘗試使用ProGuard去除未使用的類和方法從您的項目,你應該(希望)發現你不需要多個dex文件。

這就是說,如果你這樣做:的IntelliJ和Eclipse的IDE只是 - 他們不直接建立自己的代碼 - 所以你需要確定你的項目是如何被建立 - 最有可能的Ant或搖籃。

如果你的項目是一個Gradle項目,那麼在項目根目錄下會有一個build.gradle文件 - 如果是這種情況,那麼你需要看看如何用Android Gradle插件完成相同的工作,開始的地方將是http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Manipulating-tasks

+0

如果你有很多未使用的類/方法,Proguard會很好地工作。幸運的是,Google發佈了Multidex,所以現在這不是問題。 :) – Mark

0

你能否提供你的項目的細節?

的PlayN庫連接到我的項目後,最近我有同樣的問題。首先,我讀了你提到的所有文章和相關內容,但最終我通過從依賴Pythagoras jar中排除了一部分類來解決了這個問題(我刪除了pythagoras.d包,因爲pythagoras.f是「double」浮動「,在PlayN中被用來代替它),這是PlayN中最大的依賴之一。

也許你可以找到你的項目依賴類似薄弱的地方。