mirror of
https://github.com/schwabe/ics-openvpn.git
synced 2024-09-20 03:52:27 +02:00
Add logging of StrictMode violations to app internal log
Also disable penaltyDeath by default as thjere is some Android internal leak that I am unable to track down.
This commit is contained in:
parent
609fd8e292
commit
cf093699bd
@ -14,6 +14,12 @@ import android.graphics.Color;
|
||||
import android.os.Build;
|
||||
|
||||
import android.os.StrictMode;
|
||||
import android.os.strictmode.Violation;
|
||||
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
import de.blinkt.openvpn.BuildConfig;
|
||||
import de.blinkt.openvpn.R;
|
||||
import de.blinkt.openvpn.api.AppRestrictions;
|
||||
@ -23,6 +29,9 @@ public class ICSOpenVPNApplication extends Application {
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
if (BuildConfig.BUILD_TYPE.equals("debug"))
|
||||
enableStrictModes();
|
||||
|
||||
if("robolectric".equals(Build.FINGERPRINT))
|
||||
return;
|
||||
|
||||
@ -34,8 +43,7 @@ public class ICSOpenVPNApplication extends Application {
|
||||
mStatus = new StatusListener();
|
||||
mStatus.init(getApplicationContext());
|
||||
|
||||
if (BuildConfig.BUILD_TYPE.equals("debug"))
|
||||
enableStrictModes();
|
||||
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
AppRestrictions.getInstance(this).checkRestrictions(this);
|
||||
@ -43,15 +51,36 @@ public class ICSOpenVPNApplication extends Application {
|
||||
}
|
||||
|
||||
private void enableStrictModes() {
|
||||
StrictMode.VmPolicy policy = new StrictMode.VmPolicy.Builder()
|
||||
StrictMode.ThreadPolicy.Builder tpbuilder = new StrictMode.ThreadPolicy.Builder()
|
||||
.detectAll()
|
||||
.penaltyLog()
|
||||
.penaltyDeath()
|
||||
.build();
|
||||
.penaltyLog();
|
||||
|
||||
|
||||
|
||||
StrictMode.VmPolicy.Builder vpbuilder = new StrictMode.VmPolicy.Builder()
|
||||
.detectAll()
|
||||
.penaltyLog();
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||
tpbuilder.penaltyListener(Executors.newSingleThreadExecutor(), this::logViolation);
|
||||
vpbuilder.penaltyListener(Executors.newSingleThreadExecutor(), this::logViolation);
|
||||
|
||||
}
|
||||
//tpbuilder.penaltyDeath();
|
||||
//vpbuilder.penaltyDeath();
|
||||
|
||||
StrictMode.VmPolicy policy = vpbuilder.build();
|
||||
StrictMode.setVmPolicy(policy);
|
||||
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.P)
|
||||
public void logViolation(Violation v) {
|
||||
String name = Application.getProcessName();
|
||||
System.err.println("------------------------- Violation detected in " + name + " ------" + v.getCause() + "---------------------------");
|
||||
VpnStatus.logException(VpnStatus.LogLevel.DEBUG, null, v);
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.O)
|
||||
private void createNotificationChannels() {
|
||||
NotificationManager mNotificationManager =
|
||||
@ -90,4 +119,5 @@ public class ICSOpenVPNApplication extends Application {
|
||||
mChannel.setLightColor(Color.CYAN);
|
||||
mNotificationManager.createNotificationChannel(mChannel);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ public class VpnStatus {
|
||||
public static TrafficHistory trafficHistory;
|
||||
|
||||
|
||||
public static void logException(LogLevel ll, String context, Exception e) {
|
||||
public static void logException(LogLevel ll, String context, Throwable e) {
|
||||
StringWriter sw = new StringWriter();
|
||||
e.printStackTrace(new PrintWriter(sw));
|
||||
LogItem li;
|
||||
@ -59,11 +59,11 @@ public class VpnStatus {
|
||||
newLogItem(li);
|
||||
}
|
||||
|
||||
public static void logException(Exception e) {
|
||||
public static void logException(Throwable e) {
|
||||
logException(LogLevel.ERROR, null, e);
|
||||
}
|
||||
|
||||
public static void logException(String context, Exception e) {
|
||||
public static void logException(String context, Throwable e) {
|
||||
logException(LogLevel.ERROR, context, e);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user