2015-08-25 76 views
8

i am new to android studio i am doing one sample application in android studio, when i run the application 5.0 it's working fine but 5.0 below it's throw's this Execption can any one tel what i am wrong here...java.lang.NoClassDefFoundError:android.support.v4.view.LayoutInflaterCompatHC Android Studio中

08-25 18:17:40.354 28953-28953/com.app E/AndroidRuntime﹕ FATAL EXCEPTION: main 
     java.lang.NoClassDefFoundError: android.support.v4.view.LayoutInflaterCompatHC 
       at android.support.v4.view.LayoutInflaterCompat$LayoutInflaterCompatImplV11.setFactory(LayoutInflaterCompat.java:42) 
       at android.support.v4.view.LayoutInflaterCompat.setFactory(LayoutInflaterCompat.java:79) 
       at android.support.v7.app.AppCompatDelegateImplV7.installViewFactory(AppCompatDelegateImplV7.java:812) 
       at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:57) 
       at com.app.utils.UIHelper.onCreate(UIHelper.java:28) 
       at com.app.DashboardActivity.onCreate(DashboardActivity.java:97) 
       at android.app.Activity.performCreate(Activity.java:4465) 
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931) 
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992) 
       at android.app.ActivityThread.access$600(ActivityThread.java:127) 
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158) 
       at android.os.Handler.dispatchMessage(Handler.java:99) 
       at android.os.Looper.loop(Looper.java:137) 
       at android.app.ActivityThread.main(ActivityThread.java:4448) 
       at java.lang.reflect.Method.invokeNative(Native Method) 
       at java.lang.reflect.Method.invoke(Method.java:511) 
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823) 
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590) 
       at dalvik.system.NativeStart.main(Native Method) 

的build.gradle

android { 

    compileSdkVersion 23 
    buildToolsVersion "23.0.0" 

    defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 23 
     applicationId "com.app" 
     multiDexEnabled = true 
    } 

    buildTypes { 

     debug { 
      minifyEnabled false 
      debuggable true 
     } 
    } 

    lintOptions { 
     abortOnError false 
    } 

    packagingOptions{ 
     exclude 'META-INF/LICENSE' 
     exclude 'META-INF/NOTICE' 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.google.api-client:google-api-client:1.20.0' 
    compile 'com.google.api-client:google-api-client-android:1.20.0' 
    compile 'com.google.api-client:google-api-client-gson:1.20.0' 
    compile 'com.google.apis:google-api-services-calendar:v3-rev125-1.20.0' 
    compile 'com.android.support:appcompat-v7:23.0.0' 
    compile 'com.android.support:design:23.0.0' 
    compile 'com.google.android.gms:play-services:7.8.0' 
} 

回答

28

看起來你已經啓用multidex,但你不使用multidex庫。

棒棒糖(API 21)引入了對多重索引的本機支持,但對於以前版本的Android,您必須使用multidex支持庫來正確支持多重索引。

首先,依賴添加到您的build.gradle:

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

其次,您需要啓用multidex在應用程序代碼。如果您使用自定義Application類已經是,你可以通過像這樣在您的清單註冊MultiDexApplication類這樣做:如果你使用自定義的應用程序類

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

,您應該啓用multidex在attachBaseContext()像這樣:

@Override 
protected void attachBaseContext(Context base) { 
    super.attachBaseContext(base); 

    MultiDex.install(this); 
} 

來源:Building Apps with over 65k Methods

+0

現在我得到這個問題「執行失敗的任務」:醫生:dexDebug'。 > com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:進程'命令'C:\ Program Files \ Java \ jdk1.8.0_45 \ bin \ java.exe''已完成非零退出值3「 –

+0

我認爲這意味着Studio已經耗盡內存。請參閱http://stackoverflow.com/questions/30483827/android-studio-java-exe-finished-with-non-zero-exit -value-3 –

+0

它的工作很好,謝謝夥計 –