【问题标题】:FATAL EXCEPTION: java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$layout致命异常:java.lang.NoClassDefFoundError:android.support.v7.appcompat.R$layout
【发布时间】:2015-11-13 15:49:49
【问题描述】:

我刚从 eclipse 迁移到 studio。我关注了一篇博客,将项目从 Eclipse 导出到工作室。该应用程序在棒棒糖中运行良好,并在棒棒糖前设备中引发以下错误。

仅在工作室中出现此错误。不在日食中。

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,请告诉我。我会在这里更新。

有什么想法吗?

【问题讨论】:

  • 通过更新您的支持存储库切换到最新版本 v 23。 compile com.android.support:appcompat-v7:23
  • @Raghunandan 更新后出现此错误:Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'. Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'. Error:Execution failed for task ':processDebugResources'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Users/rethinavel/Library/Android/sdk/build-tools/22.0.1/aapt'' finished with non-zero exit value 1
  • 使用 AppCompat 主题。还将构建工具更新到 23
  • @Raghunandan 你说得对,先生
  • 你重建坑项目了吗?

标签: android android-studio gradle android-appcompat


【解决方案1】:

你的 logcat 返回

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

所以更新您的支持存储库(版本 23) 和 ** 对于 API 23:**

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

【讨论】:

  • 更改后出现此错误Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'. Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'. Error:Execution failed for task ':processDebugResources'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Users/rethinavel/Library/Android/sdk/build-tools/22.0.1/aapt'' finished with non-zero exit value 1
  • FAILURE:构建失败并出现异常。我仍然遇到同样的异常。 :-(
  • @RethinavelPillai 您是否将 buildtoolversion 设置为 23 而不是 buildToolsVersion '22.0.1'
  • compileSdkVersion 22 buildToolsVersion '23' defaultConfig { applicationId "com.hsp.inventory" minSdkVersion 14 targetSdkVersion 22 versionCode 1 versionName "1.0" multiDexEnabled true } SDK repository 风格: <style name="MyAppCompatTheme" parent="AppTheme.Base" /> <style name="AppTheme.Base" parent="Theme.AppCompat"> 这里有什么问题吗?我仍然遇到同样的问题!
【解决方案2】:

我可以看到您在此处发布的 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()
    }
}

【讨论】:

  • 让我试试你的解决方案并让你回复!
  • 我猜两者都是一样的。不是吗?
  • 你试过了吗?从apply plugin开始的部分不应该在那里,它应该只在内部的build.gradle文件中。
  • 你确定吗?
  • 你尝试了我猜的所有其他事情,我建议你,因为它发生在将 eclipse 项目迁移到 android studio 时。
【解决方案3】:

v7 appcompat 的 android 文档中 是一个注释:

注意:此库依赖于 v4 支持库。如果您正在使用 Ant 或 Eclipse,确保包含 v4 支持库作为一部分 这个库的类路径。

我认为这是您的问题,因为您已在 gradle 中注释掉该行:

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

再次添加该行并尝试编译项目。

我在你的 gradle 中也没有看到 com.android.support:appcompat-v7:21.0.0

【讨论】:

  • 即使我也关注了你的评论。我发现了同样的错误。
【解决方案4】:

我遇到了同样的问题并修复了它。 这是 Dex 限制的问题。因为达到了dex限制,所以创建了两个dex文件。 Lollipop 知道如何阅读,除非您在 Application 类中指定它,否则之前的 Lollipop 不知道。

请确保以下内容到位:

在 build.gradle 中

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

重要支持前棒棒糖:

在 Manifest 中,在 application 标签下,

<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

【讨论】:

  • 这是唯一对我有用的东西!!你拯救了我的白天、夜晚、早晨和一切!!衷心感谢拉梅什!
  • 无需在 Android Manifest 中更改应用程序类的名称。至少,它不适合我。
  • @mikbanUtah: "如果你写了 Application 类,让你的 Application 覆盖 attachBaseContext"
  • @Ramesh "如果您编写了 [自定义] 应用程序类,请 [原文如此] 您的应用程序覆盖 attachBaseContext [并确保 Android 清单中的应用程序类与您编写的相同]" 不清楚是否可以选择其中一个
  • 哇。哇。哇!这真太了不起了。非常感谢!
【解决方案5】:

可能是一个很长的镜头,但请确保您的图像在 /res/drawable 而不是 /res/drawable-v24 下 看到这个答案:Binary XML file line #0: Error inflating class ImageView

【讨论】:

    猜你喜欢
    • 2015-02-21
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    • 2017-09-13
    • 2012-07-23
    • 2016-06-14
    相关资源
    最近更新 更多