alibaba / alibaba/AndFix

单例类中添加方法,应用patch时崩溃

Open
#128 6 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
7k
Forks
1.6k
PR merge metrics
No merged PRs in 30d

Description

A类调用B类,B类是一个单例类,在B类中添加一个方法,然后在A类中调用B类中的新加方法,可以生成patch文件,但代码中addPatch后,崩溃,提示A类中找不到B_CF类。
Process: com.cubic.autohome, PID: 5511
01-27 14:45:55.506: E/AndroidRuntime(5511): java.lang.NoClassDefFoundError: Failed resolution of: Lcom/aaa/bbb/business/hotfix/TestPatch_CF;
01-27 14:45:55.506: E/AndroidRuntime(5511): at com.aaa.bbb.MainActivity_CF.onCreate(MainActivity.java:472)
01-27 14:45:55.506: E/AndroidRuntime(5511): at android.app.Activity.performCreate(Activity.java:6021)
01-27 14:45:55.506: E/AndroidRuntime(5511): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1114)
01-27 14:45:55.506: E/AndroidRuntime(5511): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2461)
01-27 14:45:55.506: E/AndroidRuntime(5511): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2570)
01-27 14:45:55.506: E/AndroidRuntime(5511): at android.app.ActivityThread.access$800(ActivityThread.java:167)
01-27 14:45:55.506: E/AndroidRuntime(5511): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
01-27 14:45:55.506: E/AndroidRuntime(5511): at android.os.Handler.dispatchMessage(Handler.java:111)
01-27 14:45:55.506: E/AndroidRuntime(5511): at android.os.Looper.loop(Looper.java:194)
01-27 14:45:55.506: E/AndroidRuntime(5511): at android.app.ActivityThread.main(ActivityThread.java:5588)
01-27 14:45:55.506: E/AndroidRuntime(5511): at java.lang.reflect.Method.invoke(Native Method)
01-27 14:45:55.506: E/AndroidRuntime(5511): at java.lang.reflect.Method.invoke(Method.java:372)
01-27 14:45:55.506: E/AndroidRuntime(5511): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:968)
01-27 14:45:55.506: E/AndroidRuntime(5511): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:763)
01-27 14:45:55.506: E/AndroidRuntime(5511): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.aaa.bbb.business.hotfix.TestPatch_CF" on path: DexPathList[[zip file "/data/app/com.aaa.bbb-1/base.apk"],nativeLibraryDirectories=[/data/app/com.aaa.bbb-1/lib/arm, /vendor/lib, /system/lib]]
01-27 14:45:55.506: E/AndroidRuntime(5511): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
01-27 14:45:55.506: E/AndroidRuntime(5511): at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
01-27 14:45:55.506: E/AndroidRuntime(5511): at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
01-27 14:45:55.506: E/AndroidRuntime(5511): ... 14 more
01-27 14:45:55.506: E/AndroidRuntime(5511): Suppressed: java.lang.ClassNotFoundException: com.cubic.autohome.business.hotfix.TestPatch_CF
01-27 14:45:55.506: E/AndroidRuntime(5511): at java.lang.Class.classForName(Native Method)
01-27 14:45:55.506: E/AndroidRuntime(5511): at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
01-27 14:45:55.506: E/AndroidRuntime(5511): at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
01-27 14:45:55.506: E/AndroidRuntime(5511): at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
01-27 14:45:55.506: E/AndroidRuntime(5511): ... 15 more
01-27 14:45:55.506: E/AndroidRuntime(5511): Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the addPatch call and the MainActivity.java:472 stack-trace entry, then inspect how the singleton's generated TestPatch_CF class is produced and loaded. Reproduce the patch that adds a method to the singleton and verify that applying it no longer causes NoClassDefFoundError or ClassNotFoundException.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, java
Domain
mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.