Meituan-Dianping / Robust

Robust is an Android HotFix solution with high compatibility and high stability. Robust can fix bugs immediately without a reboot.
Apache License 2.0
4.41k stars 806 forks source link

同一个用户偶尔修复失败 #302

Open jorry opened 5 years ago

jorry commented 5 years ago

线上运行一个月后根据Robust修复的Log分析得出: 同一个设备,每次启动都可能会修复或者失败, 具体日志如下:patch_apply = 0 为失败;1为成功

[ { "id": 马赛克, "pid": "马赛克", "logKey": "patch_apply", "logValue": "1", "logWhere": "onPatchApplied", "patchId": "201811071538_7", "patchMd5": "9501bf5c8ab47539", "appHash": "马赛克", "us": "77", "osVersion": "5.1", "appVersion": "7.3.4", "phoneModel": "vivo X6D", "currentTimeMillis": "2018-11-07T10:33:57.000Z" }, { "id": 马赛克, "pid": "马赛克", "logKey": "patch_apply", "logValue": "1", "logWhere": "onPatchApplied", "patchId": "201811071538_7", "patchMd5": "9501bf5c8ab47539", "appHash": "马赛克", "us": "77", "osVersion": "5.1", "appVersion": "7.3.4", "phoneModel": "vivo X6D", "currentTimeMillis": "2018-11-07T10:34:36.000Z" }, { "id": 马赛克, "pid": "马赛克", "logKey": "patch_apply", "logValue": "1", "logWhere": "onPatchApplied", "patchId": "201811071538_7", "patchMd5": "9501bf5c8ab47539", "appHash": "马赛克", "us": "77", "osVersion": "5.1", "appVersion": "7.3.4", "phoneModel": "vivo X6D", "currentTimeMillis": "2018-11-07T22:44:37.000Z" }, { "id": 马赛克, "pid": "马赛克", "logKey": "patch_apply", "logValue": "1", "logWhere": "onPatchApplied", "patchId": "201811071538_7", "patchMd5": "9501bf5c8ab47539", "appHash": "马赛克", "us": "77", "osVersion": "5.1", "appVersion": "7.3.4", "phoneModel": "vivo X6D", "currentTimeMillis": "2018-11-08T05:30:52.000Z" }, { "id": 马赛克, "pid": "马赛克", "logKey": "exception", "logValue": "java.lang.ClassNotFoundException: Didn&t find class \"com..client.robust.PatchesInfoImpl\" on path: DexPathList[[zip file \"/data/data/com..client/cache/patch/_com..client201811071538_7_663094d61a999ebb8821de1ad2cae4b6_temp.jar\"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]\n\tat dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)\n\tat java.lang.ClassLoader.loadClass(ClassLoader.java:511)\n\tat java.lang.ClassLoader.loadClass(ClassLoader.java:469)\n\tat com.meituan.robust.PatchExecutor.patch(Unknown Source)\n\tat com.meituan.robust.PatchExecutor.applyPatchList(Unknown Source)\n\tat com.meituan.robust.PatchExecutor.run(Unknown Source)\n\tSuppressed: java.io.IOException: Unable to open &/data/data/com..client/cache/patch/_com..client201811071538_7_663094d61a999ebb8821de1ad2cae4b6_temp.jar& : No such file or directory\n\t\tat dalvik.system.DexFile.openDexFileNative(Native Method)\n\t\tat dalvik.system.DexFile.openDexFile(DexFile.java:295)\n\t\tat dalvik.system.DexFile.(DexFile.java:111)\n\t\tat dalvik.system.DexFile.loadDex(DexFile.java:151)\n\t\tat dalvik.system.DexPathList.loadDexFile(DexPathList.java:265)\n\t\tat dalvik.system.DexPathList.makeDexElements(DexPathList.java:231)\n\t\tat dalvik.system.DexPathList.(DexPathList.java:109)\n\t\tat dalvik.system.BaseDexClassLoader.(BaseDexClassLoader.java:48)\n\t\tat dalvik.system.DexClassLoader.(DexClassLoader.java:57)\n\t\t... 3 more\n\tCaused by: java.io.IOException: \nFailed to open generated oat file &/data/data/cache/_com..client201811071538_7_663094d61a999ebb8821de1ad2cae4b6_temp.dex&: Failed to open oat filename for reading: No such file or directory\n\t\t... 12 more\n\tCaused by: java.io.IOException: Failed to find dex file &/data/data.client/cache/patch/_com..client201811071538_7_663094d61a999ebb8821de1ad2cae4b6_temp.jar& in oat location &/data/data/.client/cache/_com..client201811071538_7_663094d61a999ebb8821de1ad2cae4b6_temp.dex&: Failed to find existing oat file at /data/data/.client/cache/_com..client201811071538_7_663094d61a999ebb8821de1ad2cae4b6_temp.dex: File size of 0 bytes not large enough to contain ELF header of 52 bytes: &/data/data/.client/cache/_com. .client201811071538_7_663094d61a999ebb8821de1ad2cae4b6_temp.dex&\n\t\t... 12 more\n\tSuppressed: java.lang.ClassNotFoundException: Didn&t find class \"c.client.robust.PatchesInfoImpl\" on path: DexPathList[[zip file \"/data/data/com..client/.cache/classes2.jar\", zip file \"/data/data/com..client/.cache/classes.jar\", zip file \"/data/app/com..client-1/base.apk\"],nativeLibraryDirectories=[/data/app/com..client-1/lib/arm, /vendor/lib, /system/lib]]\n\t\tat dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)\n\t\tat java.lang.ClassLoader.loadClass(ClassLoader.java:511)\n\t\tat java.lang.ClassLoader.loadClass(ClassLoader.java:504)\n\t\t... 4 more\n\t\tSuppressed: java.lang.ClassNotFoundException: com..client.robust.PatchesInfoImpl\n\t\t\tat java.lang.Class.classForName(Native Method)\n\t\t\tat java.lang.BootClassLoader.findClass(ClassLoader.java:781)\n\t\t\tat java.lang.BootClassLoader.loadClass(ClassLoader.java:841)\n\t\t\tat java.lang.ClassLoader.loadClass(ClassLoader.java:504)\n\t\t\t... 5 more\n\t\tCaused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available\n", "logWhere": "class:PatchExecu", "patchId": "", "patchMd5": "", "appHash": "663094d61a999ebb", "us": "77", "osVersion": "5.1", "appVersion": "7.3.4", "phoneModel": "vivo X6D", "currentTimeMillis": "2018-11-08T11:21:08.000Z" }, { "id": 马赛克, "pid": "马赛克", "logKey": "logNotify", "logValue": "patchesInfo is null, patch info:id = 201811071538_7,md5 = 9501bf5c8ab4753925c47d0027802704", "logWhere": "class:PatchExecu", "patchId": "", "patchMd5": "", "appHash": "马赛克", "us": "77", "osVersion": "5.1", "appVersion": "7.3.4", "phoneModel": "vivo X6D", "currentTimeMillis": "2018-11-08T11:21:08.000Z" }, { "id": 马赛克, "pid": "马赛克", "logKey": "patch_apply", "logValue": "0", "logWhere": "onPatchApplied", "patchId": "201811071538_7", "patchMd5": "9501bf5c8ab47539", "appHash": "马赛克", "us": "77", "osVersion": "5.1", "appVersion": "7.3.4", "phoneModel": "vivo X6D", "currentTimeMillis": "2018-11-08T11:21:08.000Z" } ]

hedex commented 5 years ago

@jorry 你们的app有其他classloader吗?看起来与classloader有关