You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 21:48:23