package com.jddj.weaver.lib.reporter; import android.content.Context; import android.content.Intent; import com.jddj.weaver.lib.util.UpgradePatchRetry; import com.jddj.weaver.lib.util.WeaverLog; import com.jddj.weaver.lib.weaver.Weaver; import com.jddj.weaver.loader.shareutil.ShareConstants; import com.jddj.weaver.loader.shareutil.SharePatchFileUtil; import com.jddj.weaver.loader.shareutil.SharePatchInfo; import com.jddj.weaver.loader.shareutil.ShareWeaverInternals; import java.io.File; import java.util.List; public class DefaultPatchReporter implements PatchReporter { private static final String TAG = "Weaver.DefaultPatchReporter"; private static boolean shouldRetry; protected final Context context; public DefaultPatchReporter(Context context2) { this.context = context2; } @Override // com.jddj.weaver.lib.reporter.PatchReporter public void onPatchServiceStart(Intent intent) { WeaverLog.i(TAG, "patchReporter onPatchServiceStart: patch service start", new Object[0]); shouldRetry = false; UpgradePatchRetry.getInstance(this.context).onPatchServiceStart(intent); } @Override // com.jddj.weaver.lib.reporter.PatchReporter public void onPatchPackageCheckFail(File file, int i) { WeaverLog.i(TAG, "patchReporter onPatchPackageCheckFail: package check failed. path: %s, code: %d", file.getAbsolutePath(), Integer.valueOf(i)); if (i == -3 || i == -4 || i == -8) { Weaver.with(this.context).cleanPatchByPatchApk(file); } } @Override // com.jddj.weaver.lib.reporter.PatchReporter public void onPatchVersionCheckFail(File file, SharePatchInfo sharePatchInfo, String str) { WeaverLog.i(TAG, "patchReporter onPatchVersionCheckFail: patch version exist. path: %s, version: %s", file.getAbsolutePath(), str); } @Override // com.jddj.weaver.lib.reporter.PatchReporter public void onPatchTypeExtractFail(File file, File file2, String str, int i) { WeaverLog.i(TAG, "patchReporter onPatchTypeExtractFail: file extract fail type: %s, path: %s, extractTo: %s, filename: %s", ShareWeaverInternals.getTypeString(i), file.getPath(), file2.getPath(), str); Weaver.with(this.context).cleanPatchByPatchApk(file); } @Override // com.jddj.weaver.lib.reporter.PatchReporter public void onPatchDexOptFail(File file, List<File> list, Throwable th) { WeaverLog.i(TAG, "patchReporter onPatchDexOptFail: dex opt fail path: %s, dex size: %d", file.getAbsolutePath(), Integer.valueOf(list.size())); WeaverLog.printErrStackTrace(TAG, th, "onPatchDexOptFail:", new Object[0]); if (th.getMessage().contains(ShareConstants.CHECK_DEX_OAT_EXIST_FAIL) || th.getMessage().contains(ShareConstants.CHECK_DEX_OAT_FORMAT_FAIL)) { shouldRetry = true; deleteOptFiles(list); return; } Weaver.with(this.context).cleanPatchByPatchApk(file); } @Override // com.jddj.weaver.lib.reporter.PatchReporter public void onPatchResult(File file, boolean z, long j) { WeaverLog.i(TAG, "patchReporter onPatchResult: patch all result path: %s, success: %b, cost: %d", file.getAbsolutePath(), Boolean.valueOf(z), Long.valueOf(j)); if (!shouldRetry) { UpgradePatchRetry.getInstance(this.context).onPatchServiceResult(); } } @Override // com.jddj.weaver.lib.reporter.PatchReporter public void onPatchInfoCorrupted(File file, String str, String str2) { WeaverLog.i(TAG, "patchReporter onPatchInfoCorrupted: patch info is corrupted. old: %s, new: %s", str, str2); Weaver.with(this.context).cleanPatch(); } @Override // com.jddj.weaver.lib.reporter.PatchReporter public void onPatchException(File file, Throwable th) { WeaverLog.i(TAG, "patchReporter onPatchException: patch exception path: %s, throwable: %s", file.getAbsolutePath(), th.getMessage()); WeaverLog.e(TAG, "weaver patch exception, welcome to submit issue to us: https://github.com/Tencent/weaver/issues", new Object[0]); WeaverLog.printErrStackTrace(TAG, th, "weaver patch exception", new Object[0]); Weaver.with(this.context).setWeaverDisable(); Weaver.with(this.context).cleanPatchByPatchApk(file); } private void deleteOptFiles(List<File> list) { for (File file : list) { SharePatchFileUtil.safeDeleteFile(file); } } }