React Native Android 应用崩溃 "E/AndroidRuntime: FATAL EXCEPTION: mqt_native_modules"

React Native Android App crashing with "E/AndroidRuntime: FATAL EXCEPTION: mqt_native_modules"

在现有项目中安装和配置 react-native-maps@react-native-firebase/app 后我的应用程序崩溃。

环境信息

OS: Windows 10
CPU: (4) x64 Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
Memory: 2.08 GB / 11.90 GB
Binaries:
Node: 10.16.0 - C:\Program Files\nodejs\node.EXE
Yarn: 1.9.4 - C:\Program Files (x86)\Yarn\bin\yarn.CMD
npm: 6.9.0 - C:\Program Files\nodejs\npm.CMD
SDKs:
Android SDK:
  API Levels: 23, 25, 26, 27, 28
  Build Tools: 23.0.1, 25.0.1, 25.0.2, 25.0.3, 26.0.1, 26.0.2, 26.0.3, 27.0.3, 28.0.1, 28.0.2, 28.0.3
  System Images: android-23 | Intel x86 Atom_64, android-23 | Google APIs Intel x86 Atom, android-23 | Google APIs Intel x86 Atom_64, android-26 | Google APIs Intel x86 Atom, android-28 | Intel x86 Atom_64, android-28 | Google Play Intel x86 Atom
IDEs:
Android Studio: Version  3.5.0.0 AI-191.8026.42.35.5900203
npmPackages:
react: 16.9.0 => 16.9.0
react-native: 0.61.4 => 0.61.4

我的部分应用依赖项:

"@react-native-firebase/app": "^6.0.3",
"react-native-maps": "0.26.1",

重现步骤

我通过 Aandroid studio 进行了调试并得到以下错误

--------- beginning of crash 11-13 15:00:24.209 4709-4746/com.melk.android E/AndroidRuntime: FATAL EXCEPTION: mqt_native_modules Process: com.melk.android, PID: 4709 java.lang.NoClassDefFoundError: com.google.android.gms.maps.GoogleMapOptions at com.airbnb.android.react.maps.AirMapManager.(AirMapManager.java:60) at com.airbnb.android.react.maps.MapsPackage.createViewManagers(MapsPackage.java:40) at com.facebook.react.ReactInstanceManager.getOrCreateViewManagers(ReactInstanceManager.java:782) at com.facebook.react.CoreModulesPackage.createUIManager(CoreModulesPackage.java:184) at com.facebook.react.CoreModulesPackage.getModule(CoreModulesPackage.java:152) at com.facebook.react.TurboReactPackage$ModuleHolderProvider.get(TurboReactPackage.java:122) at com.facebook.react.TurboReactPackage$ModuleHolderProvider.get(TurboReactPackage.java:110) at com.facebook.react.bridge.ModuleHolder.create(ModuleHolder.java:188) at com.facebook.react.bridge.ModuleHolder.getModule(ModuleHolder.java:153) at com.facebook.react.bridge.NativeModuleRegistry.getModule(NativeModuleRegistry.java:148) at com.facebook.react.bridge.CatalystInstanceImpl.getNativeModule(CatalystInstanceImpl.java:479) at com.facebook.react.bridge.CatalystInstanceImpl.getNativeModule(CatalystInstanceImpl.java:466) at com.facebook.react.uimanager.UIManagerHelper.getUIManager(UIManagerHelper.java:31) at com.facebook.react.ReactInstanceManager.attachRootViewToInstance(ReactInstanceManager.java:1054) at com.facebook.react.ReactInstanceManager.setupReactContext(ReactInstanceManager.java:1012) at com.facebook.react.ReactInstanceManager.access00(ReactInstanceManager.java:125) at com.facebook.react.ReactInstanceManager.run(ReactInstanceManager.java:972) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:26) at android.os.Looper.loop(Looper.java:148) at com.facebook.react.bridge.queue.MessageQueueThreadImpl.run(MessageQueueThreadImpl.java:225) at java.lang.Thread.run(Thread.java:818)

可重现的示例代码

android/build.gradle

buildscript {
    ext {
        buildToolsVersion = "28.0.3"
        minSdkVersion = 16
        compileSdkVersion = 28
        targetSdkVersion = 28
        supportLibVersion = "28.0.0"
    }
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath("com.android.tools.build:gradle:3.4.2")

        classpath 'com.google.gms:google-services:4.2.0'
    }
}

修改android/app/build.gradle如下

dependencies {
    implementation "com.facebook.react:react-native:+"  // From node_modules


    - implementation 'com.google.android.gms:play-services-base:10.0.1'  //remove this line
    - implementation 'com.google.android.gms:play-services-maps:10.0.1'  //remove this line
    + implementation 'com.google.android.gms:play-services-base:+'       //add this line
    + implementation 'com.google.android.gms:play-services-maps:+'       //add this line

}

问题:当您的 fresco 库版本与 animated-gif 或任何其他库不匹配时会出现此问题。

解决方案一: (我的要求是使用 animatied-gif 库,所以我的 fresco 版本和 animated-gif 是一样的。也就是说,你的版本应该是一样的)

实施'com.facebook.fresco:fresco:2.6.0'

实施'com.facebook.fresco:animated-gif:2.6.0'

方案二:(仅供参考,请勿使用)

将您的 react-native 版本降级一个版本。 [我会要求你只使用上面提到的解决方案]