allow getFlipperPortsPropValue to do disk read as it's a debug tool
Summary:
`AndroidFlipperClient.java` is a debug tool, and it has some strict mode violation.
We should exempt them to reduce noise on logcat.
- 1.
```
D StrictMode policy violation; ~duration=43 ms: android.os.strictmode.DiskReadViolation
D at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1596)
D at libcore.io.BlockGuardOs.access(BlockGuardOs.java:71)
D at libcore.io.ForwardingOs.access(ForwardingOs.java:72)
D at android.app.ActivityThread$AndroidOs.access(ActivityThread.java:7578)
D at java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:281)
D at java.io.File.exists(File.java:815)
D at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:681)
D at android.app.ContextImpl.ensurePrivateDirExists(ContextImpl.java:672)
D at android.app.ContextImpl.getFilesDir(ContextImpl.java:717)
D at android.content.ContextWrapper.getFilesDir(ContextWrapper.java:253)
D at com.facebook.flipper.android.AndroidFlipperClient.getInstance(AndroidFlipperClient.java:55)
```
- 2.
```
D StrictMode policy violation; ~duration=46 ms: android.os.strictmode.DiskReadViolation
D at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1596)
D at libcore.io.BlockGuardOs.read(BlockGuardOs.java:304)
D at libcore.io.ForwardingOs.read(ForwardingOs.java:176)
D at libcore.io.IoBridge.read(IoBridge.java:509)
D at java.io.FileInputStream.read(FileInputStream.java:320)
D at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
D at java.io.BufferedInputStream.read(BufferedInputStream.java:347)
D at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:291)
D at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:355)
D at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:181)
D at java.io.InputStreamReader.read(InputStreamReader.java:184)
D at java.io.BufferedReader.fill(BufferedReader.java:172)
D at java.io.BufferedReader.readLine(BufferedReader.java:335)
D at java.io.BufferedReader.readLine(BufferedReader.java:400)
D at com.facebook.flipper.android.FlipperProps.getFlipperPortsPropValue(FlipperProps.java:92)
D at com.facebook.flipper.android.FlipperProps.getFlipperDefaultAltPortsPropValue(FlipperProps.java:76)
D at com.facebook.flipper.android.FlipperProps.getAltInsecurePort(FlipperProps.java:37)
D at com.facebook.flipper.android.AndroidFlipperClient.getInstance(AndroidFlipperClient.java:47)
```
Reviewed By: nikoant
Differential Revision: D35784406
fbshipit-source-id: b55ce458e04a44d98565972132707a392d71281c
This commit is contained in:
committed by
Facebook GitHub Bot
parent
0327282313
commit
bf988659cf
@@ -12,6 +12,7 @@ import android.content.pm.PackageManager;
|
|||||||
import android.net.wifi.WifiInfo;
|
import android.net.wifi.WifiInfo;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
|
import android.os.StrictMode;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
import com.facebook.flipper.BuildConfig;
|
import com.facebook.flipper.BuildConfig;
|
||||||
@@ -39,6 +40,15 @@ public final class AndroidFlipperClient {
|
|||||||
|
|
||||||
final Context app =
|
final Context app =
|
||||||
context.getApplicationContext() == null ? context : context.getApplicationContext();
|
context.getApplicationContext() == null ? context : context.getApplicationContext();
|
||||||
|
|
||||||
|
// exempt this disk read as this is a debug tool
|
||||||
|
StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
|
||||||
|
String privateAppDirectory;
|
||||||
|
try {
|
||||||
|
privateAppDirectory = context.getFilesDir().getAbsolutePath();
|
||||||
|
} finally {
|
||||||
|
StrictMode.setThreadPolicy(oldPolicy);
|
||||||
|
}
|
||||||
FlipperClientImpl.init(
|
FlipperClientImpl.init(
|
||||||
sFlipperThread.getEventBase(),
|
sFlipperThread.getEventBase(),
|
||||||
sConnectionThread.getEventBase(),
|
sConnectionThread.getEventBase(),
|
||||||
@@ -52,7 +62,7 @@ public final class AndroidFlipperClient {
|
|||||||
getId(),
|
getId(),
|
||||||
getRunningAppName(app),
|
getRunningAppName(app),
|
||||||
getPackageName(app),
|
getPackageName(app),
|
||||||
context.getFilesDir().getAbsolutePath());
|
privateAppDirectory);
|
||||||
sIsInitialized = true;
|
sIsInitialized = true;
|
||||||
}
|
}
|
||||||
return FlipperClientImpl.getInstance();
|
return FlipperClientImpl.getInstance();
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
package com.facebook.flipper.android;
|
package com.facebook.flipper.android;
|
||||||
|
|
||||||
|
import android.os.StrictMode;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -81,6 +82,9 @@ class FlipperProps {
|
|||||||
String propValue = null;
|
String propValue = null;
|
||||||
Process process = null;
|
Process process = null;
|
||||||
BufferedReader reader = null;
|
BufferedReader reader = null;
|
||||||
|
|
||||||
|
// this function does not read from disk and this tool is for debug only
|
||||||
|
StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
|
||||||
try {
|
try {
|
||||||
process = Runtime.getRuntime().exec(new String[] {"/system/bin/getprop", propsName});
|
process = Runtime.getRuntime().exec(new String[] {"/system/bin/getprop", propsName});
|
||||||
reader =
|
reader =
|
||||||
@@ -107,6 +111,7 @@ class FlipperProps {
|
|||||||
if (process != null) {
|
if (process != null) {
|
||||||
process.destroy();
|
process.destroy();
|
||||||
}
|
}
|
||||||
|
StrictMode.setThreadPolicy(oldPolicy);
|
||||||
}
|
}
|
||||||
return propValue;
|
return propValue;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user