Created
August 12, 2019 18:30
-
-
Save axemclion/414a396a9aa05842c4b9f50384e63123 to your computer and use it in GitHub Desktop.
Adding Flipper to ReactNative
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
dependencies { | |
... | |
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { | |
exclude group:'com.facebook.yoga' | |
exclude group:'com.facebook.flipper', module: 'fbjni' | |
exclude group:'com.facebook.litho', module: 'litho-annotations' | |
} | |
... | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Call this in MainApplication.onCreate(), just after Soloader line. | |
private static void initialize(Context context) { | |
if (BuildConfig.DEBUG) { | |
try { | |
/* | |
We use reflection here to pick up the class that initializes Flipper, | |
since Flipper library is not available in release mode | |
*/ | |
Class<?> aClass = Class.forName("com.facebook.flipper.ReactNativeFlipper"); | |
aClass.getMethod("initializeFlipper", Context.class).invoke(null, context); | |
} catch (ClassNotFoundException e) { | |
e.printStackTrace(); | |
} catch (NoSuchMethodException e) { | |
e.printStackTrace(); | |
} catch (IllegalAccessException e) { | |
e.printStackTrace(); | |
} catch (InvocationTargetException e) { | |
e.printStackTrace(); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Copyright (c) Facebook, Inc. and its affiliates. | |
* | |
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root | |
* directory of this source tree. | |
*/ | |
package com.facebook.flipper; | |
import android.content.Context; | |
import com.facebook.flipper.android.AndroidFlipperClient; | |
import com.facebook.flipper.android.utils.FlipperUtils; | |
import com.facebook.flipper.core.FlipperClient; | |
import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin; | |
import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin; | |
import com.facebook.flipper.plugins.inspector.DescriptorMapping; | |
import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin; | |
import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; | |
import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; | |
import com.facebook.flipper.plugins.react.ReactFlipperPlugin; | |
import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; | |
import com.facebook.react.BuildConfig; | |
import com.facebook.react.modules.network.NetworkingModule; | |
import okhttp3.OkHttpClient; | |
public class ReactNativeFlipper { | |
public static final String CLASS_NAME = "com.facebook.flipper.ReactNativeFlipper"; | |
public static void initializeFlipper(Context context) { | |
if (BuildConfig.DEBUG && FlipperUtils.shouldEnableFlipper(context)) { | |
final FlipperClient client = AndroidFlipperClient.getInstance(context); | |
client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())); | |
client.addPlugin(new ReactFlipperPlugin()); | |
client.addPlugin(new DatabasesFlipperPlugin(context)); | |
client.addPlugin(new SharedPreferencesFlipperPlugin(context)); | |
client.addPlugin(CrashReporterPlugin.getInstance()); | |
NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin(); | |
NetworkingModule.setCustomClientBuilder( | |
new NetworkingModule.CustomClientBuilder() { | |
@Override | |
public void apply(OkHttpClient.Builder builder) { | |
builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); | |
} | |
}); | |
client.addPlugin(networkFlipperPlugin); | |
client.start(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment