Неустранимое исключение: java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$layout

Я только что мигрировал из затмения в студию. Я следил за одним блогом, чтобы экспортировать проект из затмения в студию. Приложение работает нормально в леденце и выдает следующую ошибку в устройствах перед леденцом на палочке.

Получение этой ошибки только в студии. не в затмении.

FATAL EXCEPTION: main
    java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$layout
            at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:324)
            at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:246)
            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)
            at com.hsp.inventory.SplashActivity.onCreate(SplashActivity.java:53)
            at android.app.Activity.performCreate(Activity.java:5122)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270)
          //
          ......
          //

Мой файл Gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
        mavenCentral()
        maven {
            url "http://dl.bintray.com/journeyapps/maven"
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

apply plugin: 'com.android.application'

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.gms:play-services:7.5.0'
    compile 'com.android.support:design:22.2.0'
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.android.support:cardview-v7:22.2.0'
    compile 'com.android.support:recyclerview-v7:22.2.0'
    compile 'com.google.code.gson:gson:2.3'
   // compile "com.android.support:support-v4:18.0.+"

    compile project(':sliderLibrary')
    compile project(':camera')
    compile project(':volley')

    // Zxing library compile

    compile 'com.journeyapps:zxing-android-embedded:2.3.0@aar'
    compile 'com.journeyapps:zxing-android-legacy:2.3.0@aar'
    compile 'com.journeyapps:zxing-android-integration:2.3.0@aar'
    compile 'com.google.zxing:core:3.2.0'

}


android {

    compileSdkVersion 22
    buildToolsVersion '22.0.1'

    defaultConfig {
        applicationId "com.hsp.inventory"
        minSdkVersion 14
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets', 'src/main/assets', 'src/main/assets/fonts']
        }

        instrumentTest.setRoot('tests')


        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

Пожалуйста, дайте мне знать, если вы хотите взглянуть на мой манифест и act_splash.xml. Я буду обновлять здесь.

Любая идея?

5 ответов

Решение

Я столкнулся с той же проблемой и исправил ее. Это проблема с Dex-лимитом. Поскольку предел dex достигнут, он создает два файла dex. Lollipop умеет читать, pre-Lollipop понятия не имеет, если вы не укажете его в Application учебный класс.

Пожалуйста, убедитесь, что следующие на месте:

в build.gradle

dependencies {
    compile 'com.android.support:multidex:1.0.0'
}
defaultConfig {          
    multiDexEnabled true
}

ВАЖНО для поддержки pre-Lollipop:

В Манифесте под тегом приложения

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

Или, если вы использовали свой собственный Application класс, сделай свой Application переопределение attachBaseContext начиная с

 import android.support.multidex.MultiDexApplication;
 import android.support.multidex.MultiDex;

 public class MyApplication extends MultiDexApplication {
 // ......

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

Ссылка: https://developer.android.com/tools/building/multidex.html

Ваш logcat возвращается

java.lang.NoClassDefFoundError: android.support.v7.appcompat

Поэтому обновите свой репозиторий поддержки (версия 23) и ** для API 23:**

compile 'com.android.support:appcompat-v7:23.0.0'

Возможно, это длинный выстрел, но убедитесь, что ваши изображения находятся в /res/drawable, а не /res/drawable-v24 Смотрите этот ответ: Строка двоичного XML-файла #0: Ошибка надувания класса ImageView

Как я вижу, файл Gradle, который вы разместили здесь, представляет собой файл Gradle верхнего уровня, который содержит материалы, которых там быть не должно. Замените содержимое файла верхнего уровня, как показано ниже:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
        mavenCentral()
        maven {
            url "http://dl.bintray.com/journeyapps/maven"
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

В документации Android для v7 appcompat есть примечание:

Примечание. Эта библиотека зависит от библиотеки поддержки v4. Если вы используете Ant или Eclipse, убедитесь, что вы включили библиотеку поддержки v4 как часть пути к этой библиотеке.

Я думаю, что это ваша проблема, так как вы закомментировали строку в вашем выпуске:

   // compile "com.android.support:support-v4:18.0.+"

Снова добавьте строку и попробуйте скомпилировать проект.

Тоже не вижу com.android.support:appcompat-v7:21.0.0 линия в твоем gradle

Другие вопросы по тегам