今天在運行部署項目時logcat彈出下列錯誤:
2019-04-26 13:57:46.481 27346-27346/? E/Zygote: v2 2019-04-26 13:57:46.481 27346-27346/? I/libpersona: KNOX_SDCARD checking this for 10421 2019-04-26 13:57:46.481 27346-27346/? I/libpersona: KNOX_SDCARD not a persona 2019-04-26 13:57:46.482 27346-27346/? E/Zygote: accessInfo : 0 2019-04-26 13:57:46.482 27346-27346/? W/SELinux: SELinux selinux_android_compute_policy_index : Policy Index[2], Con:u:r:zygote:s0 RAM:SEPF_SECMOBILE_7.0_0010, [-1 -1 -1 -1 0 1] 2019-04-26 13:57:46.483 27346-27346/? I/SELinux: SELinux: seapp_context_lookup: seinfo=untrusted, level=s0:c512,c768, pkgname=com.yongdaimi.android.ffapitest 2019-04-26 13:57:46.486 27346-27346/? I/art: Late-enabling -Xcheck:jni 2019-04-26 13:57:46.564 27346-27346/com.yongdaimi.android.ffapitest 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 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest 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; 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.support.v4.view.ViewCompat.setBackground(android.view.View, android.graphics.drawable.Drawable) (ViewCompat.java:2341) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.support.v7.widget.ActionBarContainer.<init>(android.content.Context, android.util.AttributeSet) (ActionBarContainer.java:62) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at java.lang.Object java.lang.reflect.Constructor.newInstance0!(java.lang.Object[]) (Constructor.java:-2) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at java.lang.Object java.lang.reflect.Constructor.newInstance(java.lang.Object[]) (Constructor.java:430) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at android.view.View android.view.LayoutInflater.createView(java.lang.String, java.lang.String, android.util.AttributeSet) (LayoutInflater.java:652) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:794) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet) (LayoutInflater.java:734) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.view.LayoutInflater.rInflate(org.xmlpull.v1.XmlPullParser, android.view.View, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:865) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.view.LayoutInflater.rInflateChildren(org.xmlpull.v1.XmlPullParser, android.view.View, android.util.AttributeSet, boolean) (LayoutInflater.java:828) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at android.view.View android.view.LayoutInflater.inflate(org.xmlpull.v1.XmlPullParser, android.view.ViewGroup, boolean) (LayoutInflater.java:525) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup, boolean) (LayoutInflater.java:427) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup) (LayoutInflater.java:378) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at android.view.ViewGroup android.support.v7.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:607) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:518) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.support.v7.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:466) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.support.v7.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:140) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void com.yongdaimi.android.ffapitest.MatrixDemoActivity.onCreate(android.os.Bundle) (MatrixDemoActivity.java:30) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6942) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1126) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2880) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2988) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.app.ActivityThread.-wrap14(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1631) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.os.Looper.loop() (Looper.java:154) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6682) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:1520) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:1410) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.View$OnUnhandledKeyEventListener" on path: DexPathList[[zip file "/data/app/com.yongdaimi.android.ffapitest-1/base.apk"],nativeLibraryDirectories=[/data/app/com.yongdaimi.android.ffapitest-1/lib/arm, /data/app/com.yongdaimi.android.ffapitest-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]] 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.support.v4.view.ViewCompat.setBackground(android.view.View, android.graphics.drawable.Drawable) (ViewCompat.java:2341) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.support.v7.widget.ActionBarContainer.<init>(android.content.Context, android.util.AttributeSet) (ActionBarContainer.java:62) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at java.lang.Object java.lang.reflect.Constructor.newInstance0!(java.lang.Object[]) (Constructor.java:-2) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at java.lang.Object java.lang.reflect.Constructor.newInstance(java.lang.Object[]) (Constructor.java:430) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at android.view.View android.view.LayoutInflater.createView(java.lang.String, java.lang.String, android.util.AttributeSet) (LayoutInflater.java:652) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:794) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at android.view.View android.view.LayoutInflater.createViewFromTag(android.view.View, java.lang.String, android.content.Context, android.util.AttributeSet) (LayoutInflater.java:734) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.view.LayoutInflater.rInflate(org.xmlpull.v1.XmlPullParser, android.view.View, android.content.Context, android.util.AttributeSet, boolean) (LayoutInflater.java:865) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.view.LayoutInflater.rInflateChildren(org.xmlpull.v1.XmlPullParser, android.view.View, android.util.AttributeSet, boolean) (LayoutInflater.java:828) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at android.view.View android.view.LayoutInflater.inflate(org.xmlpull.v1.XmlPullParser, android.view.ViewGroup, boolean) (LayoutInflater.java:525) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup, boolean) (LayoutInflater.java:427) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at android.view.View android.view.LayoutInflater.inflate(int, android.view.ViewGroup) (LayoutInflater.java:378) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at android.view.ViewGroup android.support.v7.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:607) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:518) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.support.v7.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:466) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.support.v7.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:140) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void com.yongdaimi.android.ffapitest.MatrixDemoActivity.onCreate(android.os.Bundle) (MatrixDemoActivity.java:30) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6942) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1126) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2880) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2988) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.app.ActivityThread.-wrap14(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1631) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.os.Looper.loop() (Looper.java:154) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6682) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:1520) 2019-04-26 13:57:46.587 27346-27346/com.yongdaimi.android.ffapitest I/art: at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:1410) 2019-04-26 13:57:46.629 27346-27346/com.yongdaimi.android.ffapitest W/Activity: AppLock checkAppLockState locked:false verifying:false pkgName = com.yongdaimi.android.ffapitest isInMultiWindowMode:false 2019-04-26 13:57:46.658 27346-27346/com.yongdaimi.android.ffapitest I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus 2019-04-26 13:57:46.674 27346-27363/com.yongdaimi.android.ffapitest I/OpenGLRenderer: Initialized EGL, version 1.4
這個錯誤不會影響項目正常運行,但是每次項目跑起來就提示一次,真的煩人,個人平時對於logcat打印的錯誤日志還是很重視的,決定查看下這到底是什么問題。仔細看了下報錯的位置,是在:
setContentView(R.layout.activity_matrix_demo);
這一行,可問題是這只有一行代碼呀,而且布局文件很簡單,根本就不可能出錯:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/bt_change_color" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="變換" /> <!--<ImageView android:id="@+id/iv_display" android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@drawable/ic_yangmi" />--> </LinearLayout>
萬般無奈,只能求助萬能的Google,后來發現有人也跟我遇到過同樣的問題:https://blog.csdn.net/weixin_37651459/article/details/80956366 ,按照他的說法是Android SDK Tools的版本與Appcompat庫的版本不對應所致,更改下項目下的build.gradle中的Appcompat庫的版本就好:
實際實驗了一下,確實是有效的。
這里還是要吐嘈下Google,雖說近幾代的Android Studio有了不少的改進,但是平時使用下來還是有不少的缺陷,尤其是當項目代碼量增加,模塊增多了之后,編譯時間巨慢,經常動不動在編譯的時候會報一些莫名其妙的問題,但是clean或者是重啟下AS就又好了,嚴重影響開發者的時間,相比之下微軟的VS和蘋果的XCode就很少有這種問題。我的AS經常是發生了一個錯誤,然后就提示我要不要發送問題到Google,個人也做過一段時間iOS的開發,對比之下覺得蘋果真的是強,從軟件生態,應用商店,開發工具,API,從上到下通通秒殺安卓,安卓想要超越蘋果,恐怕還有很長的路要走。