2013-08-28 33 views
0

我一直在試圖解決這個問題整整一天,它可能只是一些荒謬的事情。我正在運行Android Studio 0.2.5。我需要一個庫來處理我的應用程序(GrepCode內部的東西),所以我去下載了它所依賴的jar文件和jar文件。我遵循其他SO答案的指示,關於如何將這些依賴項包含到我的項目中,現在我得到一個錯誤。Android Studio編譯錯誤嘗試創建依賴關係

1)我第一次添加了罐子,我在模塊

2)我右鍵點擊並擊中添加到庫中創建的「庫」文件夾...,命名爲庫,在不同的嘗試添加它級別仍然會出現此錯誤。

3)我進入設置的Modules部分,並確保在Dependencies選項卡下選擇了該庫。

4)我在Project目錄下運行gradlew clean。

現在,在這裏,如果我沒有在這裏做第5步,我只是得到一個錯誤,說我試圖導入的包不存在,即使IDE打字時不顯示錯誤導出語句或庫中的類。正因爲如此,我嘗試了第5步。根據所有的指南,到目前爲止我所做的工作應該是有效的。

5)在我的build.gradle中,依賴沒有顯示出來,所以我輸入了它們,現在這就是我的依賴部分的樣子。如果我不輸入它們,我只是得到一個錯誤,說我試圖導入它們時,包不存在。

dependencies { 
compile 'com.android.support:support-v4:13.0.0' 
compile files('libs/openjdk-6-b14.jar') 
compile files('libs/junit-3.8.1.jar') 
compile files('libs/logkit-1.0.1.jar') 
compile files('libs/servlet-api-2.3.jar') 
compile files('libs/httpcore-4.0.1.jar') 
compile files('libs/commons-codec-1.3.jar') 
compile files('libs/commons-logging.jar') 
compile files('libs/httpclient-4.0.1.jar') 
compile files('libs/json-20080701.jar') 
compile files('libs/opengl-api-gl1.1-android-2.1_r1.jar') 
compile files('libs/xpp3-1.1.4c.jar') 
compile files('libs/android-4.2.2_r1.jar') 
} 

在此之後,我得到的消息框,指出錯誤「搖籃:執行失敗的任務。‘:SendPicTest:dexDebug’」

而在idea.log我發現這個錯誤:「java.lang.OutOfMemoryError:GC開銷超限」

所以,我相信第5步是不必要的,但我不知道。我已經嘗試了許多不同的方式來導入這些庫,沒有任何工作......我完成了丟失任何人有任何想法?謝謝!

回答

0

編輯

看你的依賴關係列表後,似乎很明顯,這個問題是存在的。我建議你嘗試:

1)明白你爲什麼選擇包括每個這些庫。

2)瞭解android架構和構建過程。 (也許可以閱讀this

這裏有幾點看法:

  • 的OpenJDK-6-b14.jar必須刪除。您正在開發Android應用程序,因此它將針對Android SDK運行。 Android SDK已經定義了openjdk的大部分類(所以當你使用這個jar時會產生衝突)。此外,這個jar中的很多類不是dexable(如javax.swing。*),因爲它們使用不受支持的功能,並且不會在Android上使用。

  • android-4.2.2_r1.jar是一個存根jar(查看代碼:所有方法拋出異常)。這個工件只能用標準的javac編譯器(並生成* .class文件)構建你的android代碼。之後,所有* .class將由android編譯器指定爲(即轉換爲* .dex文件)。在運行時,將會使用真正的android-api實現(而不是這個工件)。

  • servlet-api:在android-app中需要使用它是非常罕見的。它只定義一個API(沒有實現)。實現通常由標準J2EE開發中的應用程序服務器(tomcat,jboss,...)提供。 Android-sdk不提供此API的實現。

  • junit:通常與範圍測試的依賴關係。

  • httpcore(也可能是httpclient):android上的常見錯誤。 android-sdk中包含這個庫的舊實現。如果你保留它,你將有一個頂級異常同時建立您的應用程序(此異常意味着你嘗試從Android的SDK覆蓋類:這是不可能的)

  • OpenGL的API -gl1.1-android-2.1_r1.jar:我不確切知道它包含了什麼,但我想和我在android-4.2.2_r1.jar中所寫的相同的評論適用於此處。

編輯完

So, I believe Step 5 is unnecessary

沒有第5步是必要的! build.gradle是依賴關係被定義的地方......所以如果AndroidStudio不爲你更新這個文件:手工完成。

之後,您可能需要重新導入從gradle這個文件的項目(找到窗口的右邊緣gradle這個觀點頂部的重新導入按鈕)

關於在日誌文件中的錯誤:

你可以從這個文件中增加AndroidStudio內存設置:

<ANDROID_STUDIO_INSTALL_DIR>/bin/studio.exe.vmoptions 

<ANDROID_STUDIO_INSTALL_DIR>/bin/studio64.exe.vmoptions 

如果您運行64位版本。

我建議你嘗試更改設置,以避免「java.lang.OutOfMemoryError:GC開銷超限」

這個錯誤意味着GC運行很長(時間98%)和少比堆的2%被釋放。所以,你可以嘗試增加堆(並重新啓動AndroidStudio):

-Xmx1024m 

另一種選擇,是在* .vmoptions文件加入這行來禁用此檢查:

-XX:-UseGCOverheadLimit 

(注意,因爲它不是一個標準的JVM參數:它可能不被JVM支持)無論如何,我不推薦這個選項,因爲GC會運行一段時間,結果非常糟糕,你的IDE將非常無響應。

我還建議您閱讀this關於AndroidStudio的使用今天。

+0

所以我試圖增加堆,並嘗試禁用檢查...沒有運氣。 「Java堆內存」再次耗盡,並且出現錯誤。我不明白爲什麼在將它們添加到build.gradle後需要2分多鐘才能編譯。是上面的方式我做了不正確或什麼?我認爲這不應該持續那麼久。這太可笑了......我應該堅持到Eclipse ...... – lespommes

+0

不要驚訝於發現尚未發佈的軟件中的錯誤。 – ben75

+0

...我只是仔細看看你的依賴關係。他們錯了 !刪除這個:'libs/android-4.2.2_r1.jar'和這一個'pen-jdk'。我對這個問題非常懷疑:'opengl-api-gl1.1-android-2.1_r1.jar'。問題來自您的依賴關係。 (我發現奇怪的是有servlet-api和junit) – ben75

相關問題