2016-09-20 63 views
1

我過去兩天一直卡在現在。我想在我的一個示例應用程序中導入我自己的aar,然後使用它。我無法訪問aar內的類並獲得java.lang.NoClassDefFoundError錯誤。無法從aar訪問課程

現在,因爲這是一個共同的問題,我已經試過以下至今,閱讀每一個相關的問題後:

1)要導入AAR:File -> New-> New Module -> Import .JAR/.AAR ,然後加入compile project(':Name-Of-Your-Project')到gradle這個。

2)使用Maven插件和推動AAR通過使用gradle這個安裝,然後reffering在我gradle這個地方回購AAR本地Maven回購。

compile ('com.rsa.mobile.sdk.android:authsdk:3.6.0-SNAPSHOT:[email protected]'){ 
     // transitive=true 
    } 

注意:如果我取消了傳遞=真,我得到下面的異常,同時安裝該應用程序:

UNEXPECTED TOP-LEVEL EXCEPTION: 
    com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536 

3)改造和清潔工程作爲很多答案的建議。

4)唯一一件事情是沒有工作了是通過將一個目錄中的AAR然後reffering它像compile(name:'Name-Of-Your-Project', ext:'aar'),加入

flatDir { 
     dirs 'libs' 
     } 

在回購後。 我不認爲第四點應該重要,因爲現在正確的方式正如上面第1點所提到的那樣,但是隻是想把它表達出來。

有人可以請幫忙。它看起來像一個微不足道的問題,但我已經浪費了大約2天。

+0

是您的類會被混淆? –

+0

不,他們不是,我之前用不同的示例應用程序使用過相同的aar。這是我第一次面對這個問題。 – Sid

+0

根據您的例外情況,您的方法數量超過64K;所以你應該使用'multidex'。 [這裏](https://developer.android.com/studio/build/multidex.html)就是細節。 –

回答

0

看看例外情況,下面的代碼可以解決問題。將它添加到應用程序gradle中。

android { 
    defaultConfig { 
     // Enabling multidex support. 
     multiDexEnabled true 
    } 
dexOptions { 
     // FOR GC overhead 
      incremental true 
      javaMaxHeapSize "4g" 
    } 
} 
+0

這樣做後,我得到一個異常java.lang.NoClassDefFoundError:com.android.volley.toolbox.Volley。這不是以前。我已經在我的gradle中編譯了'com.mcxiaoke.volley:library-aar:1.0.0'。 – Sid

+0

檢查[這裏](http://stackoverflow.com/questions/17002636/android-studio-volley-noclassdeffound)。它可以幫助你。 –

+0

已經嘗試過,沒有運氣。 – Sid