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.WifiManager;
|
||||
import android.os.Build;
|
||||
import android.os.StrictMode;
|
||||
import android.util.Log;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import com.facebook.flipper.BuildConfig;
|
||||
@@ -39,6 +40,15 @@ public final class AndroidFlipperClient {
|
||||
|
||||
final Context app =
|
||||
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(
|
||||
sFlipperThread.getEventBase(),
|
||||
sConnectionThread.getEventBase(),
|
||||
@@ -52,7 +62,7 @@ public final class AndroidFlipperClient {
|
||||
getId(),
|
||||
getRunningAppName(app),
|
||||
getPackageName(app),
|
||||
context.getFilesDir().getAbsolutePath());
|
||||
privateAppDirectory);
|
||||
sIsInitialized = true;
|
||||
}
|
||||
return FlipperClientImpl.getInstance();
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
package com.facebook.flipper.android;
|
||||
|
||||
import android.os.StrictMode;
|
||||
import android.util.Log;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
@@ -81,6 +82,9 @@ class FlipperProps {
|
||||
String propValue = null;
|
||||
Process process = null;
|
||||
BufferedReader reader = null;
|
||||
|
||||
// this function does not read from disk and this tool is for debug only
|
||||
StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
|
||||
try {
|
||||
process = Runtime.getRuntime().exec(new String[] {"/system/bin/getprop", propsName});
|
||||
reader =
|
||||
@@ -107,6 +111,7 @@ class FlipperProps {
|
||||
if (process != null) {
|
||||
process.destroy();
|
||||
}
|
||||
StrictMode.setThreadPolicy(oldPolicy);
|
||||
}
|
||||
return propValue;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user