升级Flipper至0.182.0后应用无法显示,求适配方案
Flipper从0.95.0升级至0.182.0适配指南
问题背景
升级后应用无法正常显示,日志抛出RSocket弃用提示:
Deprecation notice: [conn] RSockets are being deprecated at Flipper. Please, use the latest Flipper client in your app to migrate to WebSockets. App:
当前依赖配置:
debugImplementation 'com.facebook.flipper:flipper:0.182.0' debugImplementation 'com.facebook.flipper:flipper-network-plugin:0.182.0' debugImplementation 'com.facebook.soloader:soloader:0.10.4' releaseImplementation 'com.facebook.flipper:flipper-noop:0.182.0'
Flipper拦截器初始化代码:
if (com.facebook.flipper.android.utils.FlipperUtils.shouldEnableFlipper(context)) { com.facebook.soloader.SoLoader.init(context, false) val networkPlugin = NetworkFlipperPlugin() val client: FlipperClient = AndroidFlipperClient.getInstance(context) client.addPlugin(InspectorFlipperPlugin(context, com.facebook.flipper.plugins.inspector.DescriptorMapping.withDefaults())) client.addPlugin(networkPlugin) client.start() fbflipperInterceptor = FlipperOkhttpInterceptor(networkPlugin) val interceptors: MutableList<Interceptor> = ArrayList() fbflipperInterceptor?.let { interceptors.add(it) } val builder = OkHttpClient.Builder() .readTimeout(60, TimeUnit.SECONDS) .connectTimeout(60, TimeUnit.SECONDS) .writeTimeout(10, TimeUnit.MINUTES) .retryOnConnectionFailure(true) for (interceptor in interceptors) { builder.addInterceptor(interceptor!!) } val logging = HttpLoggingInterceptor() logging.setLevel(HttpLoggingInterceptor.Level.BODY) builder.addInterceptor(logging); return builder.build() }
Retrofit配置:
Retrofit.Builder() .baseUrl(endPoint) .addConverterFactory(GsonConverterFactory.create()) .client(httpClient) .build()
旧版本(0.95.0)可正常运行,对应依赖:
debugImplementation "com.facebook.flipper:flipper:0.95.0" debugImplementation "com.facebook.flipper:flipper-network-plugin:0.95.0" debugImplementation "com.facebook.soloader:soloader:0.10.1"
适配修改步骤
1. 替换RSocket为WebSocket连接
0.125.0版本后Flipper弃用RSocket,需强制切换到WebSocket:
- 添加WebSocket插件依赖:
debugImplementation 'com.facebook.flipper:flipper-websocket-plugin:0.182.0'
- 修改客户端初始化逻辑,添加WebSocket插件:
val client = AndroidFlipperClient.getInstance(context).apply { addPlugin(WebSocketFlipperPlugin()) // 核心:添加WebSocket支持 addPlugin(InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())) addPlugin(networkPlugin) } client.start()
2. 升级Soloader版本
旧版Soloader与新版Flipper存在兼容性问题,升级到兼容版本:
debugImplementation 'com.facebook.soloader:soloader:0.10.5' // 或更高兼容版本
3. 使用推荐的客户端构建方式
新版Flipper建议用AndroidFlipperClientBuilder替代直接获取实例,确保配置生效:
if (FlipperUtils.shouldEnableFlipper(context)) { SoLoader.init(context, false) val networkPlugin = NetworkFlipperPlugin() val client = AndroidFlipperClientBuilder(context) .addPlugin(InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())) .addPlugin(networkPlugin) .addPlugin(WebSocketFlipperPlugin()) .build() client.start() fbflipperInterceptor = FlipperOkhttpInterceptor(networkPlugin) // OkHttp和Retrofit后续配置保持不变 }
4. 同步Flipper桌面端版本
确保本地Flipper桌面应用也升级到0.182.0,客户端与桌面端版本不一致会导致连接异常。
5. 清理RSocket残留配置
移除项目中所有RSocket相关的依赖、代码,避免冲突。
内容的提问来源于stack exchange,提问作者lannyf
相关产品推荐
相关产品推荐

