Set up Fresco in sample app

Summary:
This looks bad. There are two things I want to follow up on in future
diffs before landing this:

- Make loading the image conditional by adding another button.
- Add a default constructor to the plugin that avoids this crazy bit of boilerplate.

Reviewed By: oprisnik

Differential Revision: D14165569

fbshipit-source-id: 25c5fbaee32e72c6469979cda694cc9f13a92166
This commit is contained in:
Pascal Hartig
2019-02-22 02:46:51 -08:00
committed by Facebook Github Bot
parent 2067e5e1fc
commit d371a211a8
4 changed files with 39 additions and 1 deletions

View File

@@ -7,7 +7,7 @@ android {
minSdkVersion rootProject.minSdkVersion minSdkVersion rootProject.minSdkVersion
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
applicationId 'com.facebook.flipper.sample' applicationId 'com.facebook.flipper.sample'
targetSdkVersion 24 targetSdkVersion 28
} }
lintOptions { lintOptions {
@@ -29,11 +29,21 @@ dependencies {
implementation deps.lithoCore implementation deps.lithoCore
implementation deps.lithoWidget implementation deps.lithoWidget
implementation deps.lithoAnnotations implementation deps.lithoAnnotations
// TODO(T40752310): Temporary while we depend on the jitpack artifact with a different group.
implementation(deps.lithoFresco) {
exclude group: 'com.facebook.fresco'
}
annotationProcessor deps.lithoProcessor annotationProcessor deps.lithoProcessor
// Third-party // Third-party
implementation deps.soloader implementation deps.soloader
implementation deps.okhttp3 implementation deps.okhttp3
// TODO(T40752310): Temporary till Fresco has a stable release.
implementation('com.github.facebook:fresco:0ff379c262') {
exclude group: 'com.squareup.okhttp3'
exclude group: 'com.github.facebook.fresco', module: 'animated-base-test'
exclude group: 'com.github.facebook.fresco', module: 'imagepipeline-test'
}
// Integration test // Integration test
androidTestImplementation deps.testCore androidTestImplementation deps.testCore

View File

@@ -9,10 +9,16 @@ package com.facebook.flipper.sample;
import android.app.Application; import android.app.Application;
import android.content.Context; import android.content.Context;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.facebook.common.memory.manager.NoOpDebugMemoryManager;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.flipper.android.AndroidFlipperClient; import com.facebook.flipper.android.AndroidFlipperClient;
import com.facebook.flipper.core.FlipperArray;
import com.facebook.flipper.core.FlipperClient; import com.facebook.flipper.core.FlipperClient;
import com.facebook.flipper.perflogger.NoOpFlipperPerfLogger;
import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin; import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin;
import com.facebook.flipper.plugins.example.ExampleFlipperPlugin; import com.facebook.flipper.plugins.example.ExampleFlipperPlugin;
import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin;
import com.facebook.flipper.plugins.fresco.objecthelper.FlipperObjectHelper;
import com.facebook.flipper.plugins.inspector.DescriptorMapping; import com.facebook.flipper.plugins.inspector.DescriptorMapping;
import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin; import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;
import com.facebook.flipper.plugins.leakcanary.LeakCanaryFlipperPlugin; import com.facebook.flipper.plugins.leakcanary.LeakCanaryFlipperPlugin;
@@ -21,6 +27,7 @@ import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;
import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;
import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;
import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin.SharedPreferencesDescriptor; import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin.SharedPreferencesDescriptor;
import com.facebook.imagepipeline.debug.FlipperImageTracker;
import com.facebook.litho.config.ComponentsConfiguration; import com.facebook.litho.config.ComponentsConfiguration;
import com.facebook.soloader.SoLoader; import com.facebook.soloader.SoLoader;
import java.util.Arrays; import java.util.Arrays;
@@ -35,6 +42,7 @@ public class FlipperSampleApplication extends Application {
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
SoLoader.init(this, false); SoLoader.init(this, false);
Fresco.initialize(this);
final FlipperClient client = AndroidFlipperClient.getInstance(this); final FlipperClient client = AndroidFlipperClient.getInstance(this);
final DescriptorMapping descriptorMapping = DescriptorMapping.withDefaults(); final DescriptorMapping descriptorMapping = DescriptorMapping.withDefaults();
@@ -63,6 +71,19 @@ public class FlipperSampleApplication extends Application {
new SharedPreferencesDescriptor("sample", Context.MODE_PRIVATE), new SharedPreferencesDescriptor("sample", Context.MODE_PRIVATE),
new SharedPreferencesDescriptor("other_sample", Context.MODE_PRIVATE)))); new SharedPreferencesDescriptor("other_sample", Context.MODE_PRIVATE))));
client.addPlugin(new LeakCanaryFlipperPlugin()); client.addPlugin(new LeakCanaryFlipperPlugin());
client.addPlugin(
new FrescoFlipperPlugin(
new FlipperImageTracker(),
Fresco.getImagePipelineFactory().getPlatformBitmapFactory(),
new FlipperObjectHelper() {
@Override
public FlipperArray fromCallerContext(Object callerContext) {
return null;
}
},
new NoOpDebugMemoryManager(),
new NoOpFlipperPerfLogger(),
null));
client.addPlugin(new ExampleFlipperPlugin()); client.addPlugin(new ExampleFlipperPlugin());
client.addPlugin(CrashReporterPlugin.getInstance()); client.addPlugin(CrashReporterPlugin.getInstance());
client.start(); client.start();

View File

@@ -9,6 +9,8 @@ package com.facebook.flipper.sample;
import android.content.Intent; import android.content.Intent;
import android.util.Log; import android.util.Log;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.interfaces.DraweeController;
import com.facebook.flipper.android.AndroidFlipperClient; import com.facebook.flipper.android.AndroidFlipperClient;
import com.facebook.flipper.android.diagnostics.FlipperDiagnosticActivity; import com.facebook.flipper.android.diagnostics.FlipperDiagnosticActivity;
import com.facebook.flipper.core.FlipperClient; import com.facebook.flipper.core.FlipperClient;
@@ -21,6 +23,7 @@ import com.facebook.litho.ComponentContext;
import com.facebook.litho.annotations.LayoutSpec; import com.facebook.litho.annotations.LayoutSpec;
import com.facebook.litho.annotations.OnCreateLayout; import com.facebook.litho.annotations.OnCreateLayout;
import com.facebook.litho.annotations.OnEvent; import com.facebook.litho.annotations.OnEvent;
import com.facebook.litho.fresco.FrescoImage;
import com.facebook.litho.widget.Text; import com.facebook.litho.widget.Text;
import java.io.IOException; import java.io.IOException;
import okhttp3.Call; import okhttp3.Call;
@@ -35,6 +38,8 @@ public class RootComponentSpec {
@OnCreateLayout @OnCreateLayout
static Component onCreateLayout(final ComponentContext c) { static Component onCreateLayout(final ComponentContext c) {
final DraweeController controller =
Fresco.newDraweeControllerBuilder().setUri("https://fbflipper.com/img/icon.png").build();
return Column.create(c) return Column.create(c)
.child( .child(
Text.create(c) Text.create(c)
@@ -60,6 +65,7 @@ public class RootComponentSpec {
.key("3") .key("3")
.textSizeSp(20) .textSizeSp(20)
.clickHandler(RootComponent.openDiagnostics(c))) .clickHandler(RootComponent.openDiagnostics(c)))
.child(FrescoImage.create(c).controller(controller))
.build(); .build();
} }

View File

@@ -210,5 +210,6 @@ public abstract class FlipperObjectHelper {
return builder.build(); return builder.build();
} }
@Nullable
public abstract FlipperArray fromCallerContext(@Nullable Object callerContext); public abstract FlipperArray fromCallerContext(@Nullable Object callerContext);
} }