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:
committed by
Facebook Github Bot
parent
2067e5e1fc
commit
d371a211a8
@@ -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
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user