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 版本降级一个版本。 [我会要求你只使用上面提到的解决方案]
在现有项目中安装和配置 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 版本降级一个版本。 [我会要求你只使用上面提到的解决方案]