From 82e835ea91a4b0934c868070fb41cc9a76d48765 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 2 Feb 2026 18:02:50 +0100 Subject: [PATCH 1/2] Remove flipper from the codebase. The library is not maintained anymore. Part of #9086 --- dependencies.gradle | 5 -- dependencies_groups.gradle | 2 - docs/flipper.md | 58 -------------- vector-app/build.gradle | 10 --- vector-app/src/debug/AndroidManifest.xml | 5 -- .../app/features/debug/di/DebugModule.kt | 5 -- .../vector/app/flipper/VectorFlipperProxy.kt | 76 ------------------- .../java/im/vector/app/VectorApplication.kt | 3 - .../im/vector/app/core/di/SingletonModule.kt | 6 +- .../java/im/vector/app/core/di/DebugModule.kt | 10 --- .../im/vector/app/core/debug/FlipperProxy.kt | 16 ---- 11 files changed, 1 insertion(+), 195 deletions(-) delete mode 100644 docs/flipper.md delete mode 100644 vector-app/src/debug/java/im/vector/app/flipper/VectorFlipperProxy.kt delete mode 100644 vector/src/main/java/im/vector/app/core/debug/FlipperProxy.kt diff --git a/dependencies.gradle b/dependencies.gradle index d3e839a118d..8ab397e95b5 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -19,7 +19,6 @@ def markwon = "4.6.2" def moshi = "1.15.1" def lifecycle = "2.8.3" def flowBinding = "1.2.0" -def flipper = "0.259.0" def epoxy = "5.0.0" def mavericks = "3.0.9" def glide = "4.16.0" @@ -95,10 +94,6 @@ ext.libs = [ 'hiltAndroidTesting' : "com.google.dagger:hilt-android-testing:$dagger", 'hiltCompiler' : "com.google.dagger:hilt-compiler:$dagger" ], - flipper : [ - 'flipper' : "com.facebook.flipper:flipper:$flipper", - 'flipperNetworkPlugin' : "com.facebook.flipper:flipper-network-plugin:$flipper", - ], element : [ 'opusencoder' : "io.element.android:opusencoder:1.1.0", 'wysiwyg' : "io.element.android:wysiwyg:2.38.2" diff --git a/dependencies_groups.gradle b/dependencies_groups.gradle index 282fa353e4f..59cc63896f6 100644 --- a/dependencies_groups.gradle +++ b/dependencies_groups.gradle @@ -69,7 +69,6 @@ ext.groups = [ 'com.dropbox.core', 'com.soywiz.korlibs.korte', 'com.facebook.fbjni', - 'com.facebook.flipper', 'com.facebook.fresco', 'com.facebook.infer.annotation', 'com.facebook.react', @@ -114,7 +113,6 @@ ext.groups = [ 'com.intellij', 'com.jakewharton.android.repackaged', 'com.jakewharton.timber', - 'com.kgurgul.flipper', 'com.linkedin.dexmaker', 'com.mapbox.mapboxsdk', 'com.nulab-inc', diff --git a/docs/flipper.md b/docs/flipper.md deleted file mode 100644 index 495425ce5f4..00000000000 --- a/docs/flipper.md +++ /dev/null @@ -1,58 +0,0 @@ -# Flipper - - - -* [Introduction](#introduction) -* [Setup](#setup) - * [Troubleshoot](#troubleshoot) - * [No device found issue](#no-device-found-issue) - * [Diagnostic Activity](#diagnostic-activity) - * [Other](#other) -* [Links](#links) - - - -## Introduction - -[Flipper](https://fbflipper.com) is a powerful tool from Meta, which allow to inspect the running application details and states from your computer. - -Flipper is configured in the Element Android project to let the developers be able to: -- inspect all the Realm databases content; -- do layout inspection; -- see the crash logs; -- see the logcat; -- see all the network requests; -- see all the SharedPreferences; -- take screenshots and record videos of the device; -- and more! - -## Setup - -- Install Flipper on your computer. Follow instructions here: https://fbflipper.com/docs/getting-started/index/ -- Run the debug version of Element on an emulator or on a real device. - -### Troubleshoot - -#### No device found issue - -The configuration of the Flipper application has to be updated. The issue has been asked and answered here: https://stackoverflow.com/questions/71744103/android-emulator-unable-to-connect-to-flipper/72608113#72608113 - -#### Diagnostic Activity - -Flipper comes with a Diagnostic Activity that you can start from command line using: - -```shell -adb shell am start -n im.vector.app.debug/com.facebook.flipper.android.diagnostics.FlipperDiagnosticActivity -``` - -It provides some log which can help to figure out what's going on client side. - -#### Other - -https://fbflipper.com/docs/getting-started/troubleshooting/android/ may help. - -## Links - -- Official Flipper website: https://fbflipper.com -- Realm Plugin for Flipper: https://github.com/kamgurgul/Flipper-Realm -- Dedicated Matrix room: https://matrix.to/#/#unifiedpush:matrix.org diff --git a/vector-app/build.gradle b/vector-app/build.gradle index 1905e397f5f..bdc705bd76c 100644 --- a/vector-app/build.gradle +++ b/vector-app/build.gradle @@ -391,16 +391,6 @@ dependencies { implementation 'androidx.multidex:multidex:2.0.1' implementation "androidx.sharetarget:sharetarget:1.2.0" - // Flipper, debug builds only - debugImplementation(libs.flipper.flipper) { - exclude group: 'com.facebook.fbjni', module: 'fbjni' - } - debugImplementation(libs.flipper.flipperNetworkPlugin) { - exclude group: 'com.facebook.fbjni', module: 'fbjni' - } - debugImplementation 'com.facebook.soloader:soloader:0.10.5' - debugImplementation "com.kgurgul.flipper:flipper-realm-android:2.3.0" - gplayImplementation "com.google.android.gms:play-services-location:21.3.0" // UnifiedPush gplay flavor only gplayImplementation platform(libs.google.firebaseBom) diff --git a/vector-app/src/debug/AndroidManifest.xml b/vector-app/src/debug/AndroidManifest.xml index be2aadbeaf8..4f1d6817531 100644 --- a/vector-app/src/debug/AndroidManifest.xml +++ b/vector-app/src/debug/AndroidManifest.xml @@ -11,11 +11,6 @@ - - - diff --git a/vector-app/src/debug/java/im/vector/app/features/debug/di/DebugModule.kt b/vector-app/src/debug/java/im/vector/app/features/debug/di/DebugModule.kt index 6604545ca4c..b5af29f7e08 100644 --- a/vector-app/src/debug/java/im/vector/app/features/debug/di/DebugModule.kt +++ b/vector-app/src/debug/java/im/vector/app/features/debug/di/DebugModule.kt @@ -16,10 +16,8 @@ import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import im.vector.app.core.debug.DebugNavigator import im.vector.app.core.debug.DebugReceiver -import im.vector.app.core.debug.FlipperProxy import im.vector.app.core.debug.LeakDetector import im.vector.app.features.debug.DebugMenuActivity -import im.vector.app.flipper.VectorFlipperProxy import im.vector.app.leakcanary.LeakCanaryLeakDetector import im.vector.app.receivers.VectorDebugReceiver @@ -40,9 +38,6 @@ abstract class DebugModule { @Binds abstract fun bindsDebugReceiver(receiver: VectorDebugReceiver): DebugReceiver - @Binds - abstract fun bindsFlipperProxy(flipperProxy: VectorFlipperProxy): FlipperProxy - @Binds abstract fun bindsLeakDetector(leakDetector: LeakCanaryLeakDetector): LeakDetector } diff --git a/vector-app/src/debug/java/im/vector/app/flipper/VectorFlipperProxy.kt b/vector-app/src/debug/java/im/vector/app/flipper/VectorFlipperProxy.kt deleted file mode 100644 index fca6278d7d3..00000000000 --- a/vector-app/src/debug/java/im/vector/app/flipper/VectorFlipperProxy.kt +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2022-2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial - * Please see LICENSE files in the repository root for full details. - */ - -package im.vector.app.flipper - -import android.content.Context -import android.os.Build -import com.facebook.flipper.android.AndroidFlipperClient -import com.facebook.flipper.android.utils.FlipperUtils -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.sharedpreferences.SharedPreferencesFlipperPlugin -import com.facebook.soloader.SoLoader -import com.kgurgul.flipper.RealmDatabaseDriver -import com.kgurgul.flipper.RealmDatabaseProvider -import im.vector.app.core.debug.FlipperProxy -import io.realm.RealmConfiguration -import okhttp3.Interceptor -import org.matrix.android.sdk.api.Matrix -import javax.inject.Inject -import javax.inject.Singleton - -@Singleton -class VectorFlipperProxy @Inject constructor( - private val context: Context, -) : FlipperProxy { - private val networkFlipperPlugin = NetworkFlipperPlugin() - - private val isEnabled: Boolean - get() { - // https://github.com/facebook/flipper/issues/3572 - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) { - return false - } - - return FlipperUtils.shouldEnableFlipper(context) - } - - override fun init(matrix: Matrix) { - if (!isEnabled) return - - SoLoader.init(context, false) - - val client = AndroidFlipperClient.getInstance(context) - client.addPlugin(CrashReporterPlugin.getInstance()) - client.addPlugin(SharedPreferencesFlipperPlugin(context)) - client.addPlugin(InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())) - client.addPlugin(networkFlipperPlugin) - client.addPlugin( - DatabasesFlipperPlugin( - RealmDatabaseDriver( - context = context, - realmDatabaseProvider = object : RealmDatabaseProvider { - override fun getRealmConfigurations(): List { - return matrix.debugService().getAllRealmConfigurations() - } - }) - ) - ) - client.start() - } - - override fun networkInterceptor(): Interceptor? { - if (!isEnabled) return null - - return FlipperOkhttpInterceptor(networkFlipperPlugin) - } -} diff --git a/vector-app/src/main/java/im/vector/app/VectorApplication.kt b/vector-app/src/main/java/im/vector/app/VectorApplication.kt index 84b87b14040..f984729c57a 100644 --- a/vector-app/src/main/java/im/vector/app/VectorApplication.kt +++ b/vector-app/src/main/java/im/vector/app/VectorApplication.kt @@ -38,7 +38,6 @@ import com.vanniktech.emoji.EmojiManager import com.vanniktech.emoji.google.GoogleEmojiProvider import dagger.hilt.android.HiltAndroidApp import im.vector.app.config.Config -import im.vector.app.core.debug.FlipperProxy import im.vector.app.core.debug.LeakDetector import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.pushers.FcmHelper @@ -97,7 +96,6 @@ class VectorApplication : @Inject lateinit var decryptionFailureTracker: DecryptionFailureTracker @Inject lateinit var vectorFileLogger: VectorFileLogger @Inject lateinit var vectorAnalytics: VectorAnalytics - @Inject lateinit var flipperProxy: FlipperProxy @Inject lateinit var matrix: Matrix @Inject lateinit var fcmHelper: FcmHelper @Inject lateinit var buildMeta: BuildMeta @@ -121,7 +119,6 @@ class VectorApplication : enableStrictModeIfNeeded() super.onCreate() appContext = this - flipperProxy.init(matrix) vectorAnalytics.init() vectorAnalytics.updateSuperProperties( SuperProperties( diff --git a/vector-app/src/main/java/im/vector/app/core/di/SingletonModule.kt b/vector-app/src/main/java/im/vector/app/core/di/SingletonModule.kt index 4f1180303a3..49f0fd7aae3 100644 --- a/vector-app/src/main/java/im/vector/app/core/di/SingletonModule.kt +++ b/vector-app/src/main/java/im/vector/app/core/di/SingletonModule.kt @@ -24,7 +24,6 @@ import im.vector.app.EmojiSpanify import im.vector.app.SpaceStateHandler import im.vector.app.SpaceStateHandlerImpl import im.vector.app.config.Config -import im.vector.app.core.debug.FlipperProxy import im.vector.app.core.device.DefaultGetDeviceInfoUseCase import im.vector.app.core.device.GetDeviceInfoUseCase import im.vector.app.core.dispatchers.CoroutineDispatchers @@ -140,7 +139,6 @@ import javax.inject.Singleton fun providesMatrixConfiguration( vectorPreferences: VectorPreferences, vectorRoomDisplayNameFallbackProvider: VectorRoomDisplayNameFallbackProvider, - flipperProxy: FlipperProxy, vectorPlugins: VectorPlugins, vectorCustomEventTypesProvider: VectorCustomEventTypesProvider, mdmService: MdmService, @@ -149,9 +147,7 @@ import javax.inject.Singleton applicationFlavor = BuildConfig.FLAVOR_DESCRIPTION, roomDisplayNameFallbackProvider = vectorRoomDisplayNameFallbackProvider, threadMessagesEnabledDefault = vectorPreferences.areThreadMessagesEnabled(), - networkInterceptors = listOfNotNull( - flipperProxy.networkInterceptor(), - ), + networkInterceptors = emptyList(), metricPlugins = vectorPlugins.plugins(), cryptoAnalyticsPlugin = vectorPlugins.cryptoMetricPlugin, customEventTypesProvider = vectorCustomEventTypesProvider, diff --git a/vector-app/src/release/java/im/vector/app/core/di/DebugModule.kt b/vector-app/src/release/java/im/vector/app/core/di/DebugModule.kt index 89a2d184842..25085ccb2ba 100644 --- a/vector-app/src/release/java/im/vector/app/core/di/DebugModule.kt +++ b/vector-app/src/release/java/im/vector/app/core/di/DebugModule.kt @@ -14,7 +14,6 @@ import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import im.vector.app.core.debug.DebugNavigator import im.vector.app.core.debug.DebugReceiver -import im.vector.app.core.debug.FlipperProxy import im.vector.app.core.debug.LeakDetector import okhttp3.Interceptor import org.matrix.android.sdk.api.Matrix @@ -41,15 +40,6 @@ object DebugModule { } } - @Provides - fun providesFlipperProxy() = object : FlipperProxy { - override fun init(matrix: Matrix) { - // no op - } - - override fun networkInterceptor(): Interceptor? = null - } - @Provides fun providesLeakDetector() = object : LeakDetector { override fun enable(enable: Boolean) { diff --git a/vector/src/main/java/im/vector/app/core/debug/FlipperProxy.kt b/vector/src/main/java/im/vector/app/core/debug/FlipperProxy.kt deleted file mode 100644 index d3dc4b346ee..00000000000 --- a/vector/src/main/java/im/vector/app/core/debug/FlipperProxy.kt +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright 2022-2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial - * Please see LICENSE files in the repository root for full details. - */ - -package im.vector.app.core.debug - -import okhttp3.Interceptor -import org.matrix.android.sdk.api.Matrix - -interface FlipperProxy { - fun init(matrix: Matrix) - fun networkInterceptor(): Interceptor? -} From 5f370f805c1255812f819809f13a96be86206012 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 3 Feb 2026 09:03:53 +0100 Subject: [PATCH 2/2] Remove unused import statements. --- .../src/release/java/im/vector/app/core/di/DebugModule.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/vector-app/src/release/java/im/vector/app/core/di/DebugModule.kt b/vector-app/src/release/java/im/vector/app/core/di/DebugModule.kt index 25085ccb2ba..2819bc9c821 100644 --- a/vector-app/src/release/java/im/vector/app/core/di/DebugModule.kt +++ b/vector-app/src/release/java/im/vector/app/core/di/DebugModule.kt @@ -15,8 +15,6 @@ import dagger.hilt.components.SingletonComponent import im.vector.app.core.debug.DebugNavigator import im.vector.app.core.debug.DebugReceiver import im.vector.app.core.debug.LeakDetector -import okhttp3.Interceptor -import org.matrix.android.sdk.api.Matrix @InstallIn(SingletonComponent::class) @Module