Java.lang.NoClassDefFoundError: android.support.v4.view.LayoutInflaterCompat

I get the following error in a Samsung 2 note in version 4.4.2. I also tried using HTC One X + 4.2.2. I think he's a pre-lollipop. Because his work fine on Lollipop. any guess?

This is my gradle file

apply plugin: 'com.android.application' android { compileSdkVersion 22 buildToolsVersion '22.0.1' packagingOptions { exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' } defaultConfig { multiDexEnabled true applicationId "com.example.app" minSdkVersion 14 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile project(':volley') compile project(':linkedin-sdk') compile project(':facebook') compile files('libs/ormlite-android-4.49-SNAPSHOT.jar') compile files('libs/ormlite-core-4.49-SNAPSHOT.jar') compile project(':library') compile('org.apache.httpcomponents:httpmime:4.3.6') { exclude module: 'httpclient' } compile 'org.apache.httpcomponents:httpclient-android:4.3.5' compile 'com.crittercism:crittercism-android-agent:5.0.6' compile 'com.squareup.picasso:picasso:2.3.2' compile files('libs/json_simple-1.1.jar') compile 'com.android.support:design:22.2.0' compile project(':dropboxChooserSDK') compile 'com.google.android.gms:play-services:7.5.0' compile files('libs/google-api-client-1.20.0.jar') compile files('libs/google-api-client-android-1.20.0.jar') compile files('libs/google-api-services-drive-v2-rev173-1.20.0.jar') compile files('libs/google-http-client-1.20.0.jar') compile files('libs/google-http-client-android-1.20.0.jar') compile files('libs/google-http-client-gson-1.20.0.jar') compile files('libs/google-oauth-client-1.20.0.jar') compile files('libs/jsr305-1.3.9.jar') compile files('libs/gson-2.2.4.jar') compile 'com.android.support:appcompat-v7:22.2.0' compile 'com.android.support:recyclerview-v7:22.2.0' compile 'com.android.support:cardview-v7:22.2.0' } 

The exception that I get.

  26927-26927/com.example.app E/dalvikvm﹕ Could not find class 'android.support.v7.internal.view.menu.MenuBuilder', referenced from method android.support.v7.app.AppCompatDelegateImplV7.initializePanelMenu 06-09 21:12:24.014 26927-26927/com.example.app E/dalvikvm﹕ Could not find class 'android.support.v7.internal.view.menu.MenuBuilder', referenced from method android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu 06-09 21:12:24.014 26927-26927/com.example.app E/dalvikvm﹕ Could not find class 'android.support.v7.internal.view.menu.MenuBuilder', referenced from method android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onPreparePanel 06-09 21:12:24.019 26927-26927/com.example.app E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.example.app, PID: 26927 java.lang.NoClassDefFoundError: android.support.v4.view.LayoutInflaterCompat at android.support.v7.app.AppCompatDelegateImplV7.installViewFactory(AppCompatDelegateImplV7.java:812) at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:57) at com.example.app.BaseActivity.onCreate(BaseActivity.java:37) at com.example.app.SplashScreenActivity.onCreate(SplashScreenActivity.java:29) at android.app.Activity.performCreate(Activity.java:5451) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471) at android.app.ActivityThread.access$900(ActivityThread.java:175) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:146) at android.app.ActivityThread.main(ActivityThread.java:5602) 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:1283) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) at dalvik.system.NativeStart.main(Native Method) 
+6
source share
2 answers

I have the same problem (the application will be broken on all devices = Android 4.4, but works fine with Android> = 5.0) with the following build.gradle setting:

 apply plugin: 'com.android.application' android { compileSdkVersion 22 buildToolsVersion "21.1.2" defaultConfig { applicationId "com.aams.going" minSdkVersion 16 targetSdkVersion 22 versionCode 1 versionName "1.0" multiDexEnabled true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2.0' compile 'com.facebook.android:facebook-android-sdk:4.0.0' compile 'com.google.android.gms:play-services:7.5.0' compile 'com.google.code.gson:gson:2.3.1' compile 'com.jakewharton:butterknife:6.1.0' compile 'com.google.apis:google-api-services-youtube:v3-rev141-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.orhanobut:logger:1.4' compile 'com.github.rey5137:material:1.1.1' compile 'com.afollestad:material-dialogs:0.7.6.0' } 

Problem

This is called multiDexEnabled true the Google Play API and google-api in gradle.

Decision

I solved this problem by removing multiDexEnabled true and specifying only those Google Play services APIs that my application uses.

  • Removing multiDexEnabled true .
  • Use compile 'com.google.android.gms:play-services-identity:7.5.0' instead of compile 'com.google.android.gms:play-services:7.5.0'

Here is my last and most developed build.gradle :

 apply plugin: 'com.android.application' android { compileSdkVersion 22 buildToolsVersion "21.1.2" defaultConfig { applicationId "com.aams.going" minSdkVersion 16 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2.0' compile 'com.facebook.android:facebook-android-sdk:4.0.0' compile 'com.google.android.gms:play-services-identity:7.5.0' compile 'com.google.code.gson:gson:2.3.1' compile 'com.jakewharton:butterknife:6.1.0' compile 'com.google.apis:google-api-services-youtube:v3-rev141-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.orhanobut:logger:1.4' compile 'com.github.rey5137:material:1.1.1' compile 'com.afollestad:material-dialogs:0.7.6.0' } 
+5
source

You can enable multidex rusult at runtime exeption java.lang.NoClassDefFoundError: then, Acorde to https://developers.google.com/android/guides/setup : if the number of method links in your application exceeds the limit of 65K, your application may not compiled. You can fix this problem when compiling your application by specifying only the specific Google Play APIs that your application uses, and not all of them.

Example:

 compile 'com.google.android.gms:play-services-identity:8.1.0' compile 'com.google.android.gms:play-services-plus:8.1.0' compile 'com.google.android.gms:play-services-base:8.1.0' compile 'com.google.android.gms:play-services-games:8.1.0' 

In the link you can find a list of Apis. If you don’t use Google Play services, apply the same principle to your dependencies.

+1
source

Source: https://habr.com/ru/post/988795/


All Articles