Неустранимое исключение: 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