java - android:java.lang.NoClassDefFoundError:解析失败:Landroid/view/View$OnUnhandledKeyEventListener;
问题描述
我正在创建一个具有空活动、最低 API 级别为 24 并启用支持库的新项目。当我在模拟器上运行它时它可以工作,但是当我在摩托罗拉 g4(这是我的目标设备)上运行它时,我得到了这个错误)。
目标 SDK(由 android studio 设置)为 29。当我将其更改为 24 并重新构建时,我AAPT: error: resource android:attr/colorError not found
在.gradle/caches/transforms/.../appcompat-v7-28.0.0/res/values-v26/values-26.xml
. 尝试删除缓存并重新构建,但同样发生。
原始错误的堆栈跟踪是
W/System: ClassLoader referenced unknown path: /data/app/com.mypackage.myapplication/lib/arm
W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
I/art: 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;
at void android.support.v4.view.ViewCompat.setBackground(android.view.View, android.graphics.drawable.Drawable) (ViewCompat.java:2341)
at void android.support.v7.widget.ActionBarContainer.<init>(android.content.Context, android.util.AttributeSet) (ActionBarContainer.java:62)
at java.lang.Object java.lang.reflect.Constructor.newInstance0!(java.lang.Object[]) (Constructor.java:-2)
at java.lang.Object java.lang.reflect.Constructor.newInstance(java.lang.Object[]) (Constructor.java:430)
at android.view.View android.view.LayoutInflater.createView(java.lang.String, java.lang.String, android.util.AttributeSet) (LayoutInflater.java:645)
at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:787)
at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet) (LayoutInflater.java:727)
at void android.view.LayoutInflater.rInflate(org.xmlpull.v1.XmlPullParser, android.view.View, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:858)
at void android.view.LayoutInflater.rInflateChildren(org.xmlpull.v1.XmlPullParser, android.view.View, android.util.AttributeSet, boolean) (LayoutInflater.java:821)
at android.view.View android.view.LayoutInflater.inflate(org.xmlpull.v1.XmlPullParser, android.view.ViewGroup, boolean) (LayoutInflater.java:518)
at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup, boolean) (LayoutInflater.java:426)
at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup) (LayoutInflater.java:377)
at android.view.ViewGroup android.support.v7.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:607)
at void android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:518)
at void android.support.v7.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:466)
at void android.support.v7.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:140)
at void com.mypackage.myapplication.MainActivity.onCreate(android.os.Bundle) (MainActivity.java:12)
解决方案
SDK 目标的最低版本为 28,如果您使用以下版本,Play 商店将不允许您上传 apk。
尝试从 sdk 目标 28.0.0 访问资源时出现错误。
这是官方文档:https ://developer.android.com/distribute/best-practices/develop/target-sdk
推荐阅读
- powershell - 使用powershell检索文本文件中的json对象
- gatling - Gatling 如何使用 .replace 函数
- java - 如何在使用 Selenium 驱动程序执行 Foreach 循环时对其进行控制?
- c - 如何将 char 值转换为二进制并分别显示每个位?
- react-native - 在 vagrant 上使用 create-react-native 应用程序热重载
- c - wglCreateContext 失败并出现错误“像素格式无效”
- c# - 如何使用 SelectContentControlsByTag 和 formattedText 将富文本粘贴到 MS Word“表单”中
- android - Android 测试共享偏好
- office365 - Sharepoint Online - 创建页脚
- c# - Unity 5.5.6f1 - 本机插件不起作用,错误 DllNotFoundException