Подтвердить что ты не робот

FATAL EXCEPTION: 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:[email protected]'
    compile 'com.journeyapps:zxing-android-legacy:[email protected]'
    compile 'com.journeyapps:zxing-android-integration:[email protected]'
    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. Я уточню здесь.

Любая идея?

4b9b3361

Ответ 1

Я столкнулся с той же проблемой и исправил ее. Это проблема с ограничением 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#mdex-gradle

Ответ 2

Ваш логарифм возвращает

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

Итак, обновите свой репозиторий поддержки (версия 23) А также ** Для API 23: **

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

Ответ 3

Как я могу видеть, файл gradle, который вы разместили здесь, - это файл верхнего уровня 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()
    }
}

Ответ 4

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

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

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

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

Добавьте строку еще раз и попытайтесь скомпилировать проект.

Также я не вижу строку com.android.support:appcompat-v7:21.0.0 в gradle