2015-05-28 38 views
13

加入compile 'com.android.support:support-v13:21.0.+'build.gradle後,我對建設我的應用程序的一些衝突,所以我不得不添加multiDexEnabled =真defaultConfigbuild.gradle。這些衝突都走了,但我得到另一個異常(在打開的應用程序)失蹤的書法庫:NoClassDefFoundError的書法庫

java.lang.NoClassDefFoundError: uk.co.chrisjenx.calligraphy.R$attr 
     at uk.co.chrisjenx.calligraphy.CalligraphyConfig$Builder.<init>(CalligraphyConfig.java:150) 
     at com.taxiyaab.android.util.ApplicationClass.onCreate(ApplicationClass.java:120) 
     at newapp.com.taxiyaab.taxiyaab.PassengerApplication.onCreate(PassengerApplication.java:68) 
     at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007) 
     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4462) 
     at android.app.ActivityThread.access$1500(ActivityThread.java:144) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1306) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:212) 
     at android.app.ActivityThread.main(ActivityThread.java:5135) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
     at dalvik.system.NativeStart.main(Native Method) 

我最新的SDK構建工具的版本是22.0.1。有沒有人遇到過這個問題?

回答

29

如果您支持21歲以下的API級別,您的Application類應該從支持庫延伸MultiDexApplication

class MyApplication extends MultiDexApplication 

如果沒有自定義Application類,應該比你的MultiDexApplication類添加到您的清單,直接

<application 
    android:name="android.support.multidex.MultiDexApplication"> 
</application> 

https://developer.android.com/tools/building/multidex.html

+0

THX,我沒有你所說的話,但它提出其他的例外,我想我不該不必使用multiDexEnabled。 –

+0

我得到:錯誤:執行任務':app:dexDebug'失敗。 > com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:進程'命令'C:\ Program Files \ Java \ jdk1.8.0_40 \ bin \ java.exe''已完成非零退出值2,如果不使用multiDexEnabled。 –

+0

使用MultiDexApplication時是否遇到此異常?如果不是,您使用MultiDexApplication時會引發哪些異常?請提供完整的例外細節。 – Eran

4

GOODLIFE又來了救援。 將此行添加到可擴展應用程序的ur文件中。

public void onCreate() { 
    super.onCreate(); 

    mInstance = this; 

    //ADD MULTIDEX.INSTALL(THIS) SOLVED MY SIMILAR PROBLEM 
    MultiDex.install(this); 
    CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() 
        .setDefaultFontPath("fonts/Roboto-Regular.ttf") 
        .setFontAttrId(R.attr.fontPath) 
        .build() 
    ); 
} 
+1

這工作,但是,我不得不在setContentView之前移動它,因爲一些佈局文件有書法,並打破了應用程序。一旦它在setContentView之前,事情似乎就可以正常工作。謝謝你的提示。 – Silmarilos

0

MultiDex.install(this);

這可以解決這個問題。

6

如果您的應用從應用程序擴展,然後重寫attachBaseContext應用即內部

@Override 
protected void attachBaseContext(Context base) { 
    super.attachBaseContext(base); 
    MultiDex.install(this); 
} 

還需要添加依賴

compile 'com.android.support:multidex:1.0.1' 
+0

感謝您的完整答案! – Swindler

0

我所做的就是太更新應用級gradle這個文件的編譯庫。

compile 'com.android.support:multidex:1.0.0' 

我更新了它太

compile 'com.android.support:multidex:1.0.1' 

,它爲我工作得很好。 也許這有助於某人。

1

是,更新到1.0.2 multidex和 添加Mulitidex.install(這)對類的答案推廣應用