diff --git a/android/sample/build.gradle b/android/sample/build.gradle index cf3b9ff0d..c9302b3bc 100644 --- a/android/sample/build.gradle +++ b/android/sample/build.gradle @@ -7,7 +7,7 @@ android { minSdkVersion rootProject.minSdkVersion testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' applicationId 'com.facebook.flipper.sample' - targetSdkVersion 24 + targetSdkVersion 28 } lintOptions { @@ -29,11 +29,21 @@ dependencies { implementation deps.lithoCore implementation deps.lithoWidget 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 // Third-party implementation deps.soloader 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 androidTestImplementation deps.testCore diff --git a/android/sample/src/main/java/com/facebook/flipper/sample/FlipperSampleApplication.java b/android/sample/src/main/java/com/facebook/flipper/sample/FlipperSampleApplication.java index 6d3469840..a0bc17872 100644 --- a/android/sample/src/main/java/com/facebook/flipper/sample/FlipperSampleApplication.java +++ b/android/sample/src/main/java/com/facebook/flipper/sample/FlipperSampleApplication.java @@ -9,10 +9,16 @@ package com.facebook.flipper.sample; import android.app.Application; import android.content.Context; 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.core.FlipperArray; import com.facebook.flipper.core.FlipperClient; +import com.facebook.flipper.perflogger.NoOpFlipperPerfLogger; import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin; 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.InspectorFlipperPlugin; 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.sharedpreferences.SharedPreferencesFlipperPlugin; import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin.SharedPreferencesDescriptor; +import com.facebook.imagepipeline.debug.FlipperImageTracker; import com.facebook.litho.config.ComponentsConfiguration; import com.facebook.soloader.SoLoader; import java.util.Arrays; @@ -35,6 +42,7 @@ public class FlipperSampleApplication extends Application { public void onCreate() { super.onCreate(); SoLoader.init(this, false); + Fresco.initialize(this); final FlipperClient client = AndroidFlipperClient.getInstance(this); final DescriptorMapping descriptorMapping = DescriptorMapping.withDefaults(); @@ -63,6 +71,19 @@ public class FlipperSampleApplication extends Application { new SharedPreferencesDescriptor("sample", Context.MODE_PRIVATE), new SharedPreferencesDescriptor("other_sample", Context.MODE_PRIVATE)))); 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(CrashReporterPlugin.getInstance()); client.start(); diff --git a/android/sample/src/main/java/com/facebook/flipper/sample/RootComponentSpec.java b/android/sample/src/main/java/com/facebook/flipper/sample/RootComponentSpec.java index c6a738fbc..507c9bd7b 100644 --- a/android/sample/src/main/java/com/facebook/flipper/sample/RootComponentSpec.java +++ b/android/sample/src/main/java/com/facebook/flipper/sample/RootComponentSpec.java @@ -9,6 +9,8 @@ package com.facebook.flipper.sample; import android.content.Intent; 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.diagnostics.FlipperDiagnosticActivity; 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.OnCreateLayout; import com.facebook.litho.annotations.OnEvent; +import com.facebook.litho.fresco.FrescoImage; import com.facebook.litho.widget.Text; import java.io.IOException; import okhttp3.Call; @@ -35,6 +38,8 @@ public class RootComponentSpec { @OnCreateLayout static Component onCreateLayout(final ComponentContext c) { + final DraweeController controller = + Fresco.newDraweeControllerBuilder().setUri("https://fbflipper.com/img/icon.png").build(); return Column.create(c) .child( Text.create(c) @@ -60,6 +65,7 @@ public class RootComponentSpec { .key("3") .textSizeSp(20) .clickHandler(RootComponent.openDiagnostics(c))) + .child(FrescoImage.create(c).controller(controller)) .build(); } diff --git a/android/src/main/java/com/facebook/flipper/plugins/fresco/objecthelper/FlipperObjectHelper.java b/android/src/main/java/com/facebook/flipper/plugins/fresco/objecthelper/FlipperObjectHelper.java index 9d66dbd63..1e0bac1bb 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/fresco/objecthelper/FlipperObjectHelper.java +++ b/android/src/main/java/com/facebook/flipper/plugins/fresco/objecthelper/FlipperObjectHelper.java @@ -210,5 +210,6 @@ public abstract class FlipperObjectHelper { return builder.build(); } + @Nullable public abstract FlipperArray fromCallerContext(@Nullable Object callerContext); }