diff --git a/app/src/main/java/com/gh/common/util/DataUtils.java b/app/src/main/java/com/gh/common/util/DataUtils.java index 919c2d155a..dd3edff11b 100644 --- a/app/src/main/java/com/gh/common/util/DataUtils.java +++ b/app/src/main/java/com/gh/common/util/DataUtils.java @@ -42,6 +42,15 @@ public class DataUtils { } SentryAndroid.init(context, options -> { + // Sentry 疯狂报 ANR (很大一部分还是莫名奇妙的 ANR)严重影响到其它闪退日志的收集 + // 这里将它局限到只有官网渠道的包才统计 ANR + if ("GH_206".equals(channel)) { + options.setAnrEnabled(true); + options.setAnrTimeoutIntervalMillis(6000); + } else { + options.setAnrEnabled(false); + } + options.setDebug(BuildConfig.DEBUG); options.setEnableSessionTracking(true); options.setEnvironment(BuildConfig.FLAVOR); diff --git a/app/src/main/java/com/gh/common/util/PackageUtils.java b/app/src/main/java/com/gh/common/util/PackageUtils.java index 3ec4f507c8..9b18c5d367 100644 --- a/app/src/main/java/com/gh/common/util/PackageUtils.java +++ b/app/src/main/java/com/gh/common/util/PackageUtils.java @@ -183,16 +183,13 @@ public class PackageUtils { return null; } + // TODO 找一个更好的办法来比较签名并且不触发 ANR public static boolean compareSignatureBetweenInstalledAppWithApk(Context context, String packageName, String apkFilePath) { try { - // 统计签名比较使用的频率 (大文件会触发 ANR) - SentryHelper.INSTANCE.onEvent( - "SIGNATURE_COMPARE", - "packageName", packageName); - + // 据 Sentry 统计,刚上架一个周末的包里对这个方法有 700+ 次调用,然后其中一部分会造成 ANR Signature sig = context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_SIGNATURES).signatures[0]; - // Fuck HUAWEI, 华为系统调用 getPackageArchiveInfo 获取魔羯 apk 的签名时会耗时超过5秒造成 ANR,没有找到解决方法 + // 调用 getPackageArchiveInfo 获取较大的 apk 的签名时会耗时超过5秒造成 ANR,没有找到解决方法 // 如果可以的话尽量避免调用 getPackageArchiveInfo 方法 Signature releaseSig = context.getPackageManager().getPackageArchiveInfo(apkFilePath, PackageManager.GET_SIGNATURES).signatures[0]; return sig.hashCode() == releaseSig.hashCode();