我尝试将 ProGuard 与我自己的 UncaughtExceptionHandler 类一起使用。没有 ProGuard 一切正常。但如果我启用它,函数 uncaughtException 将永远不会被调用。
public class MyBug implements UncaughtExceptionHandler
{
private UncaughtExceptionHandler defaultUEH;
public ASBug() {
alert("init");
defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
}
public void addHandlerToThread(Thread t) {
alert("set");
t.setUncaughtExceptionHandler(this);
}
@Override
public void uncaughtException(Thread t, Throwable e)
{
alert("catch");
}
static void alert(final String message) {
***.context().runOnUiThread(new Runnable() {
@Override
public void run() {
AlertDialog.Builder bld = new AlertDialog.Builder(***.context());
bld.setMessage(message);
bld.setNeutralButton("OK", null);
bld.create().show();
}
});
}
}
proguard-rules.txt
-keepclasseswithmembers public class com.asgardsoft.core.ASBug
明确要求 proguard 保留课程
-keepclass your.package.name.UncaughtExceptionHandler