Don't allow initialization when not in supported build

Summary:
If something calls FlipperClient.getInstance(), it will start a new thread and try to start the client. If this is in a context that will fail, like a process that hasn't loaded the .so, then it will fail, but we don't know who started the thread. This adds logging before spawning a new thread so we can see the stack trace of the culprit.

It might want to throw an error instead, that will help track down the culprit of such initializations, but this is a less intrusive change to just stop the failures from happening, to start with.

Reviewed By: cekkaewnumchai

Differential Revision: D18658972

fbshipit-source-id: 2433d4d6ef411d4fb28f31e27bcef702c5a8f4db
This commit is contained in:
John Knox
2019-11-23 18:19:59 -08:00
committed by Facebook Github Bot
parent 4faac01448
commit 554037d444

View File

@@ -15,6 +15,7 @@ import android.os.Build;
import android.util.Log; import android.util.Log;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import com.facebook.flipper.core.FlipperClient; import com.facebook.flipper.core.FlipperClient;
import com.facebook.flipper.BuildConfig;
public final class AndroidFlipperClient { public final class AndroidFlipperClient {
private static boolean sIsInitialized = false; private static boolean sIsInitialized = false;
@@ -25,6 +26,10 @@ public final class AndroidFlipperClient {
public static synchronized FlipperClient getInstance(Context context) { public static synchronized FlipperClient getInstance(Context context) {
if (!sIsInitialized) { if (!sIsInitialized) {
if (!BuildConfig.IS_INTERNAL_BUILD) {
Log.e("Flipper", "Attempted to initialize in non-internal build");
return null;
}
checkRequiredPermissions(context); checkRequiredPermissions(context);
sFlipperThread = new FlipperThread("FlipperEventBaseThread"); sFlipperThread = new FlipperThread("FlipperEventBaseThread");
sFlipperThread.start(); sFlipperThread.start();