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

React Native 64.0.3 集成Fresco模块启动崩溃求助

问题描述
  • React Native 版本:64.0.3
  • 目标SDK版本:31
  • 故障现象:新版本上传至Google Play商店后出现崩溃,从Play Console获取到的崩溃日志如下:
1)Type
        java.lang.NoSuchMethodError
        Exception java.lang.NoSuchMethodError:
          at f.c.h.a.a.c.f
          at f.c.h.a.a.c.e
          at com.facebook.react.modules.fresco.FrescoModule.initialize
          at com.facebook.react.bridge.ModuleHolder.doInitialize
          at com.facebook.react.bridge.ModuleHolder.markInitializable
          at com.facebook.react.bridge.NativeModuleRegistry.notifyJSInstanceInitialized
          at com.facebook.react.bridge.CatalystInstanceImpl$2.run
          at android.os.Handler.handleCallback (Handler.java:751)
          at android.os.Handler.dispatchMessage (Handler.java:95)
          at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage
          at android.os.Looper.loop (Looper.java:154)
          at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run
          at java.lang.Thread.run (Thread.java:762)
2)Type

com.facebook.react.common.c

Exception com.facebook.react.common.c:
  at com.facebook.react.modules.core.ExceptionsManagerModule.reportException (ExceptionsManagerModule.java)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.facebook.react.bridge.JavaMethodWrapper.invoke (JavaMethodWrapper.java)
  at com.facebook.react.bridge.JavaModuleWrapper.invoke (JavaModuleWrapper.java)
  at com.facebook.react.bridge.queue.NativeRunnable.run (NativeRunnable.java)
  at android.os.Handler.handleCallback (Handler.java:938)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage (MessageQueueThreadHandler.java)
  at android.os.Looper.loopOnce (Looper.java:238)
  at android.os.Looper.loop (Looper.java:349)
  at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run (MessageQueueThreadImpl.java)
  at java.lang.Thread.run (Thread.java:920)
解决方案

1. 升级Fresco依赖版本

RN 0.64.x默认集成的Fresco版本与Android 12(SDK31)存在方法兼容问题,需升级到兼容版本(如2.5.0或更高):

  • 打开android/build.gradle文件,修改ext中的frescoVersion:
buildscript {
    ext {
        minSdkVersion = 21
        compileSdkVersion = 31
        targetSdkVersion = 31
        // 替换为兼容的Fresco版本
        frescoVersion = "2.5.0"
    }
    // ... 其他配置
}
  • 执行缓存清理与依赖重装:
cd android && ./gradlew clean
rm -rf node_modules && yarn install
npx react-native run-android

2. 修复混淆规则(若启用R8/ProGuard)

如果项目开启了代码混淆,需确保Fresco相关类未被错误混淆,在android/app/proguard-rules.pro中添加:

-keep class com.facebook.fresco.** { *; }
-keep class com.facebook.imagepipeline.** { *; }
-keep class com.facebook.react.modules.fresco.** { *; }

3. 调整Fresco初始化顺序

部分场景下模块初始化顺序会触发崩溃,可尝试手动初始化Fresco:

  • 打开android/app/src/main/java/[你的包名]/MainApplication.java:
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.react.ReactApplication;
// ... 其他导入

public class MainApplication extends Application implements ReactApplication {
    @Override
    public void onCreate() {
        super.onCreate();
        // 提前初始化Fresco
        Fresco.initialize(this);
        SoLoader.init(this, /* native exopackage */ false);
        // ... 其他初始化代码
    }
    // ... 其他方法
}

内容的提问来源于stack exchange,提问作者kawsar ahmad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:31:05