Flutter读取Firebase数据时遇Dynamite模块及隐藏方法问题求助
Flutter 从Firebase读取数据时的DynamiteModule报错解决建议
报错信息
W/DynamiteModule( 6937): Local module descriptor class for com.google.android.gms.providerinstaller.dynamite not found. I/DynamiteModule( 6937): Considering local module com.google.android.gms.providerinstaller.dynamite:0 and remote module com.google.android.gms.providerinstaller.dynamite:0 W/ProviderInstaller( 6937): Failed to load providerinstaller module: No acceptable module com.google.android.gms.providerinstaller.dynamite found. Local version is 0 and remote version is 0. I/example.thrift( 6937): The ClassLoaderContext is a special shared library. I/example.thrift( 6937): The ClassLoaderContext is a special shared library. V/NativeCrypto( 6937): Registering com/google/android/gms/org/conscrypt/NativeCrypto's 295 native methods... W/example.thrift( 6937): Accessing hidden method Ljava/security/spec/ECParameterSpec;->getCurveName()Ljava/lang/String; (greylist, reflection, allowed) I/ProviderInstaller( 6937): Installed default security provider GmsCore_OpenSSL W/example.thrift( 6937): Accessing hidden field Ljava/net/Socket;->impl:Ljava/net/SocketImpl; (greylist, reflection, allowed) W/example.thrift( 6937): Accessing hidden method Ldalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard; (greylist,core-platform-api, linking, allowed) W/example.thrift( 6937): Accessing hidden method Ldalvik/system/CloseGuard;->open(Ljava/lang/String;)V (greylist,core-platform-api, linking, allowed) W/example.thrift( 6937): Accessing hidden method Ljava/security/spec/ECParameterSpec;->setCurveName(Ljava/lang/String;)V (greylist, reflection, allowed) W/example.thrift( 6937): Accessing hidden method Ldalvik/system/BlockGuard;->getThreadPolicy()Ldalvik/system/BlockGuard$Policy; (greylist,core-platform-api, linking, allowed) W/example.thrift( 6937): Accessing hidden method Ldalvik/system/BlockGuard$Policy;->onNetwork()V (greylist, linking, allowed)
相关AndroidManifest.xml片段
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.th"> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:allowBackup="true" android:largeHeap="true" android:label="th" android:name="${applicationName}" android:icon="@mipmap/ic_launcher">
解决建议
- 检查Google Play服务版本:确保测试设备/模拟器搭载最新版Google Play服务。模拟器优先选择带Google APIs的系统镜像,避免使用纯Android镜像。
- 更新Firebase依赖:在项目
pubspec.yaml中确认所有Firebase插件(如firebase_core、firebase_firestore)为稳定最新版,执行flutter pub upgrade完成更新。 - 验证Google服务配置:确认
android/app/google-services.json文件正确放置,同时检查gradle配置:- 根目录
build.gradle中添加:classpath 'com.google.gms:google-services:4.3.15'(或最新兼容版本) - app目录
build.gradle末尾添加:apply plugin: 'com.google.gms.google-services'
- 根目录
- 补充网络权限:在AndroidManifest.xml中添加
INTERNET权限:<uses-permission android:name="android.permission.INTERNET" /> - 清理重建项目:依次执行
flutter clean、flutter pub get,再重新运行应用。 - 手动初始化ProviderInstaller:若上述步骤无效,可在Android端代码中手动触发初始化:
import com.google.android.gms.security.ProviderInstaller; import com.google.android.gms.security.ProviderInstaller.ProviderInstallListener; // 在MainActivity的onCreate或自定义Application类中调用 ProviderInstaller.installIfNeededAsync(this, new ProviderInstallListener() { @Override public void onProviderInstalled() { // 初始化完成,无需额外操作 } @Override public void onProviderInstallFailed(int errorCode, Intent recoveryIntent) { // 可在此处理恢复逻辑,如弹出系统恢复对话框 } });
内容的提问来源于stack exchange,提问作者Ibtissam
相关产品推荐
相关产品推荐

