Как устранить ошибку NoClassDefFoundError: Ошибка при разрешении: Landroid / view / View $ OnUnhandledKeyEventListener;

Я обновил свою Android Studio до

Android Studio 3.2
Build #AI-181.5540.7.32.5014246, built on September 17, 2018
JRE: 1.8.0_152-release-1136-b06 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.11.6

Я создаю новый проект с использованием шаблона пустого действия

Sync Gradle
Clean
Build
Run

мой журнал приложений показывает это исключение при запуске

2018-09-27 13:51:41.116 22090-22090/? I/zygote64: Rejecting re-init on previously-failed class java.lang.Class<android.support.v4.view.ViewCompat$OnUnhandledKeyEventListenerWrapper>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.support.v4.view.ViewCompat.setBackground(android.view.View, android.graphics.drawable.Drawable) (ViewCompat.java:2341)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.support.v7.widget.ActionBarContainer.<init>(android.content.Context, android.util.AttributeSet) (ActionBarContainer.java:62)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at java.lang.Object java.lang.reflect.Constructor.newInstance0(java.lang.Object[]) (Constructor.java:-2)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at java.lang.Object java.lang.reflect.Constructor.newInstance(java.lang.Object[]) (Constructor.java:334)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.createView(java.lang.String, java.lang.String, android.util.AttributeSet) (LayoutInflater.java:647)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:790)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet) (LayoutInflater.java:730)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.view.LayoutInflater.rInflate(org.xmlpull.v1.XmlPullParser, android.view.View, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:863)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.view.LayoutInflater.rInflateChildren(org.xmlpull.v1.XmlPullParser, android.view.View, android.util.AttributeSet, boolean) (LayoutInflater.java:824)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.inflate(org.xmlpull.v1.XmlPullParser, android.view.ViewGroup, boolean) (LayoutInflater.java:515)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup, boolean) (LayoutInflater.java:423)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup) (LayoutInflater.java:374)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.view.ViewGroup android.support.v7.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:607)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:518)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.support.v7.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:466)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.support.v7.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:140)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void com.manacle.secondmanacle.MainActivity.onCreate(android.os.Bundle) (MainActivity.java:11)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.Activity.performCreate(android.os.Bundle, android.os.PersistableBundle) (Activity.java:7009)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:7000)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1214)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2731)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2856)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.ActivityThread.-wrap11(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1589)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:106)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.os.Looper.loop() (Looper.java:164)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6494)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:438)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:807)
2018-09-27 13:51:41.116 22090-22090/? I/zygote64: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener" on path: DexPathList[[zip file "/data/app/com.manacle.secondmanacle-6Ra5peoMwc4HH30iTlEXCg==/base.apk"],nativeLibraryDirectories=[/data/app/com.manacle.secondmanacle-6Ra5peoMwc4HH30iTlEXCg==/lib/arm64, /system/lib64, /vendor/lib64]]

Я не вносил изменений в шаблон приложения, созданный Android Studio.

Почему приложение для создания шаблона не запускается чисто?

Я попытался перейти на androidX, но проблема осталась прежней.

Почему Android Studio не может создать "чистый" шаблон приложения?

Мои файлы gradle выглядят так: -

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0'


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

====

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.manacle.secondmanacle"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
}
111
0
78 197
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

Ответ принят как подходящий

Иногда после обновления вам нужно сделать недействительным и очистить кеш.

В версии 3.2 есть некоторые известные проблемы, поэтому также убедитесь, что вы не пользуетесь инструментами Kotlin. org.jetbrains.kotlin: kotlin-gradle-plugin: 1.2.70

поскольку это также вызывает проблемы с зависанием. Если это не сработает, удалите строки плагинов Google и вспомогательные библиотеки, синхронизируйте и добавьте их снова и синхронизируйте. Иногда каталоги кеша просто выходят из строя.

круто, рад, что у тебя сработало. Это тоже несколько раз спасало мою задницу;)

Sam 27.09.2018 18:38

Ничего не помогло. Я пытаюсь использовать Invalidate Caches / Restart. С Котлином и без. У меня Android Studio 3.2.1.

Bobert 18.10.2018 16:30

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

Sam 18.10.2018 21:32

Привет @ Sam, это точно такая же проблема. Я создаю новый проект и запускаю этот новый проект и становлюсь тем же LogCat Infos. Но я использую Android Studio 3.2.1 Build # AI-181.5540.7.32.5056338, построенный 9 октября 2018 г. JRE: 1.8.0_152-release-1136-b06 amd64 JVM: 64-разрядная серверная виртуальная машина OpenJDK от JetBrains s.r.o Windows 7 6.1

Bobert 19.10.2018 11:22

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

Sam 19.10.2018 21:09

Я обнаружил проблему от меня Issueetracker.google.com/117685087, он делает ту же ошибку

Bobert 20.10.2018 13:00

Ничего не помогло. Я пытаюсь использовать Invalidate Caches / Restart.

Hamza Abdullah 31.05.2019 16:40

Это может быть связано с targetSDK версии 27 или 28 или androidX.

Kirill Karmazin 15.07.2019 19:51

привет @rbaleksandar файл-недействительный кеш и перезапуск все еще есть в последней версии. Я просто предложил иногда это делать. Поэтому я не уверен, что вы имеете в виду, говоря «не работаю с последними версиями SDK и Studio», поскольку я использую последнюю, а аннулирование кеша и перезапуск по-прежнему делают именно то, что сказано.

Sam 05.11.2019 02:13

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

rbaleksandar 05.11.2019 11:58

@rbaleksandar звучит так, как будто у вас есть более серьезная проблема, чем простая очистка кеша.

Sam 05.11.2019 19:15

аннулирование и очистка кеша - наиболее популярное решение возможных проблем в Android Studio.

void pointer 19.02.2020 07:25

Я решил аналогичную проблему, вставив это в конец моего файла build.gradle.

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == "com.android.support") {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion "26.+"
            }
        }
    }
}

https://github.com/facebook/flipper/issues/146

Вы можете объяснить, что это делает?

dwlz 15.05.2019 23:30

он заставляет библиотеки зависимостей androidx / appcompat ориентироваться на определенный уровень времени выполнения sdk.

ShellDude 06.01.2020 18:56

который не работает, кстати. см. здесь: stackoverflow.com/questions/51782548/…

ShellDude 06.01.2020 19:01

если вы используете android x, попробуйте это (добавьте этот сегмент кода в файл Gradle уровня приложения)

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == "androidx") {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion "${targetSdk}.+"
        }
    }
}}

если вы не используете android x, попробуйте этот сегмент кода.

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == "com.android.support") {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion "26.+"
        }
    }
}}

Спасибо, но у меня не сработало :-( - Android Studio 3.5.3, Build # AI-191.8026.42.35.6010548, построено 15 ноября 2019 г., JRE: 1.8.0_202-release-1483-b49-5587405 amd64 , JVM: 64-разрядная серверная виртуальная машина OpenJDK от JetBrains sro, Linux 4.15.0-74-generic

legolas108 30.01.2020 17:56

@ legolas108, перед сборкой приложения сделайте недействительные кеши / перезапустите IDE, затем очистите проект и заново соберите APK приложения. У меня это сработало.

Supun Ishara 31.01.2020 11:04

Это помогло, новый проект Empty Activity без изменений теперь запускается без этой ошибки после выполнения дополнительных инструкций. Большое спасибо!

legolas108 01.02.2020 14:43

Я использую Kotlin и мой targetSdk: 29, и у меня это не работает.

Anbuselvan Rocky 27.04.2020 05:11

@Anbuselvan Rocky Думаю, эта статья будет вам полезна обсуждение.kotlinlang.org/t/kotlin-dependencies-in-gradle-proje cts /…

Supun Ishara 27.04.2020 16:09

Эта ошибка может быть приманкой. В моем случае фактическая ошибка оказалась Resources$NotFoundException где-то в трассировке стека. Когда я заменил <androidx.appcompat.widget.AppCompatImageView на ImageView, я получил читаемую ошибку, которую потом было легко исправить.

Моя проблема заключалась в отсутствии импорта androidx в build.gradle для одного из элементов представления в раздуваемом макете. Добавление implementation 'androidx.drawerlayout:drawerlayout:1.0.0 ' устранило мою конкретную проблему. Я предполагаю, что внутри макета вашей основной деятельности есть некий вид androidx, который не импортируется. Все различные пакеты и версии находятся в https://maven.google.com/web/index.html, просто найдите элемент, который вам не хватает, и добавьте его в зависимости в build.gradle вашего модуля.

Я боролся с тем же исключением, но только при тестировании моего приложения на реальном устройстве (Samsung Galaxy S9). То же приложение нормально работало на виртуальных устройствах. Поскольку изменение конфигурации build.gradle не было решено, я решил проблему, переместив основное действие из AppCompatActivity в Activity. Похоже, я понижаю уровень вашей активности, но если вы не используете расширенные функции активности - см. Это (https://developer.android.com/reference/androidx/appcompat/app/AppCompatActivity) - это не настоящая проблема.

//import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;

public class MainActivity /*extends AppCompatActivity*/ extends Activity

Получил аналогичную проблему с зависимостями androidx, например

Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;

Решено путем добавления конфигураций в файлы Gradle, как показано ниже.

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == "androidx.appcompat") {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion "1.+"
            }
        }
    }
}

Работал на AS 4.1. Для друзей-новичков я добавил это в build.gradle модуля (тот, который находится в папке приложения).

Lodovik 01.11.2020 13:37

Это действительно работает, вы можете объяснить, почему?

Amos 09.12.2020 13:04

У меня есть лучшее решение, чем добавление этого фрагмента кода, обратитесь к stackoverflow.com/a/65217631/3260008

Amos 19.12.2020 04:19

Решил похожую проблему

Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
 
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener"

Добавление зависимости в build.gradle (уровень приложения)

implementation 'androidx.core:core:1.5.0-alpha04'

Подтверждаю, что исправил проблему за меня. Используется последняя версия AS (2021.03 Arctic Fox Patch 1). Также обновлена ​​зависимость Google Play до последней версии (com.google.gms: google-services: 4.3.10)

HX_unbanned 21.08.2021 13:39

Добавьте это в gradle, чтобы решить проблему, у меня работает:

implementation 'androidx.appcompat:appcompat:1.3.0-alpha02'

Обратите внимание, 1.2.0 даже не работает

У меня не сработало. В моем проекте есть подмодуль. Это дает ANR без сбоев. Можете ли вы указать другие зависимости Gradle, которые вы использовали в ответе.

Nuwan Chamara 12.03.2021 09:53

Работал на меня, спасибо, чувак

Omar Essam 06.06.2021 14:17

Работал на меня, спасибо за Амоса в топе

добавьте это в свои зависимости в Gradl

    implementation 'androidx.core:core:1.5.0-alpha04'

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