【错误记录】Android 应用运行报错 ( java.lang.VerifyError: Verifier rejected class androidx. | 逆向中遇到的问题 )
生活随笔
收集整理的這篇文章主要介紹了
【错误记录】Android 应用运行报错 ( java.lang.VerifyError: Verifier rejected class androidx. | 逆向中遇到的问题 )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、報錯信息
- 二、問題分析
一、報錯信息
從 DEX 文件加載 Activity 組件 , 運行時報如下錯誤 ;
2021-12-12 14:02:52.432 5342-5342/com.example.classloader_demo E/AndroidRuntime: FATAL EXCEPTION: mainProcess: com.example.classloader_demo, PID: 5342java.lang.VerifyError: Verifier rejected class androidx.appcompat.app.WindowDecorActionBar: androidx.appcompat.view.ActionMode androidx.appcompat.app.WindowDecorActionBar.startActionMode(androidx.appcompat.view.ActionMode$Callback) failed to verify: androidx.appcompat.view.ActionMode androidx.appcompat.app.WindowDecorActionBar.startActionMode(androidx.appcompat.view.ActionMode$Callback): [0x2A] register v0 has type Precise Reference: androidx.appcompat.app.WindowDecorActionBar$ActionModeImpl but expected Reference: androidx.appcompat.view.ActionMode (declaration of 'androidx.appcompat.app.WindowDecorActionBar' appears in /data/app/com.example.classloader_demo-F2fgfWcEO4AIIt49r9aB1w==/base.apk)at androidx.appcompat.app.AppCompatDelegateImpl.initWindowDecorActionBar(AppCompatDelegateImpl.java:557)at androidx.appcompat.app.AppCompatDelegateImpl.getSupportActionBar(AppCompatDelegateImpl.java:537)at androidx.appcompat.app.AppCompatDelegateImpl.onPostResume(AppCompatDelegateImpl.java:679)at androidx.appcompat.app.AppCompatActivity.onPostResume(AppCompatActivity.java:241)at android.app.Activity.performResume(Activity.java:7325)at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3814)at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3854)at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:51)at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)at android.os.Handler.dispatchMessage(Handler.java:106)at android.os.Looper.loop(Looper.java:193)at android.app.ActivityThread.main(ActivityThread.java:6718)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)二、問題分析
這是從 Dex 文件中加載 Activity 組件類 , 然后啟動該 Activity 組件 , 報上述錯誤 ;
Activity 組件類加載成功 , 執行時報錯 ;
錯誤是與類加載方式相關 ;
加載該 Activity 組件類時 , 先創建 DexClassLoader , 并設置其 父類節點為 BootClassLoader , 然后使用 DexClassLoader 實例對象作為 PathClassLoader 的父節點 ;
最終加載到該 Activity 組件并啟動該組件時 , 報上述錯誤 ;
使用 【Android 逆向】啟動 DEX 字節碼中的 Activity 組件 ( 替換 LoadedApk 中的類加載器 | 加載 DEX 文件中的 Activity 類并啟動成功 ) 中的方案是可以執行成功的 ;
總結
以上是生活随笔為你收集整理的【错误记录】Android 应用运行报错 ( java.lang.VerifyError: Verifier rejected class androidx. | 逆向中遇到的问题 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】启动 DEX 字
- 下一篇: 【Android 逆向】启动 DEX 字