web-dev-qa-db-ja.com

致命的な例外:Java.lang.NoClassDefFoundError:Android.support.v7.appcompat.R $ layout

EclipseからStudioに移行したところです。 1つのブログをフォローして、プロジェクトをEclipseからスタジオにエクスポートしました。 Lollipopでアプリが正常に動作し、Lollipop以前のデバイスで次のエラーをスローします。

このエラーはスタジオでのみ発生します。 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をご覧になりたい場合はお知らせください。ここで更新します。

何か案が?

17

私は同じ問題に直面し、それを修正しました。 Dex制限の問題です。 dex制限に達したため、2つのdexファイルが作成されます。 Lollipopは読み方を知っているため、LollipopがApplicationクラスで指定しない限り、Lollipopより前のバージョンはわかりません。

以下が整っていることを確認してください:

build.gradle

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

[〜#〜]重要[〜#〜]プレロリポップをサポートするには:

マニフェストのアプリケーションタグの下で、

<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

78
Ramesh

logcatが返す

Java.lang.NoClassDefFoundError:Android.support.v7.appcompat

サポートリポジトリ(バージョン23)を更新してください** API 23の場合:**

compile 'com.Android.support:appcompat-v7:23.0.0'
1
IntelliJ Amiya

Androidのドキュメント v7 appcompat のドキュメントには次のように記載されています:

注:このライブラリは、v4サポートライブラリに依存しています。 AntまたはEclipseを使用している場合は、必ずこのライブラリのクラスパスの一部としてv4サポートライブラリを含めてください。

あなたのgradleの行をコメントアウトしているので、私はそれがあなたの問題だと思います:

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

もう一度行を追加して、プロジェクトをコンパイルしてみてください。

また、私はcom.Android.support:appcompat-v7:21.0.0グラドルの行

0
Zelldon

ロングショットかもしれませんが、画像が/ res/drawable-v24ではなく/ res/drawableの下にあることを確認してくださいこの回答を参照してください: Binary XML file line#0:Error inflating class ImageView

0
kurdtpage

私が見ることができるように、あなたがここに投稿した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()
    }
}
0
Amar