2015-06-09 2 views
6

Я получаю следующую ошибку в примечании Samsung 2 в 4.4.2, версия. Я также пробовал использовать HTC One X + 4.2.2. Я думаю, что он до-леденец. Потому что его рабочий штраф на Lollipop. любая догадка?java.lang.NoClassDefFoundError: android.support.v4.view.LayoutInflaterCompat

Это мой Gradle файл

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' 
} 

Exception я получаю.

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) 
+0

Не нужно объявлять все отдельные банки, так как у вас уже есть 'compile fileTree (include: ['* .jar'], dir: 'libs')' – mbmc

+0

@tibo это ничего не решило :-( – Manoj

+0

да, это был просто для очистки :) – mbmc

ответ

5

У меня такая же проблема (приложение разбился во всех устройствах < = Android 4.4, но работает хорошо, когда Android> = 5,0) с помощью следующей 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" 
     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' 
} 

Проблема

Это вызвано multiDexEnabled true с API сервисов Google Play и google-api в градиенте.

Решение

Я решил эту проблему путем удаления multiDexEnabled true и указать только конкретный Google Play API служб мое приложение использует.

  • Удаление multiDexEnabled true.
  • Использование compile 'com.google.android.gms:play-services-identity:7.5.0' вместо compile 'com.google.android.gms:play-services:7.5.0'

Вот мой окончательный и работал 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' 
} 
+1

Вы спасатель – MiguelCatalan

1

Включить multidex может rusult в выполнения Exeption java.lang.NoClassDefFoundError: то, Acorde к https://developers.google.com/android/guides/setup: Если количество ссылок на методы в вашем приложении превышает предел 65K, ваше приложение может не скомпилироваться. Вы можете устранить эту проблему при компиляции своего приложения, указав только те API-интерфейсы служб Google Play, которые используют ваше приложение, а не все из них.

Пример:

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' 

В ссылке вы можете найти список Apis. Если вы не используете сервисы Google Play, примените тот же принцип к своим зависимостям.

Смежные вопросы