【问题标题】:Unable to get provider com.google.firebase.provider.FirebaseInitProvider error encountered when launching app to device on debug mode xamarin forms在调试模式 xamarin 表单上启动应用程序到设备时遇到无法获取提供程序 com.google.firebase.provider.FirebaseInitProvider 错误
【发布时间】:2020-11-27 20:36:02
【问题描述】:

我正在尝试使用 this 库以便在我的 xamarin 表单应用程序中使用 firebase。但是在我完成 android 设置后,我遇到了运行时错误

"05-12 10:41:01.362 E/AndroidRuntime(4616): java.lang.RuntimeException: 无法获取提供者 com.google.firebase.provider.FirebaseInitProvider: android.content.res.Resources$NotFoundException: 无法查找资源 ID #0x7f080010"。

我将输出详细程度更改为详细,并在构建消息中找到了这一点

1>由于错误条件,任务“错误”被跳过; (!Exists('..\packages\Xamarin.Firebase.Common.60.1142.0\build\MonoAndroid80\Xamarin.Firebase.Common.targets')) 被评估为 (!Exists('..\packages\Xamarin.Firebase .Common.60.1142.0\build\MonoAndroid80\Xamarin.Firebase.Common.targets'))。

1>由于错误条件,任务“错误”被跳过; (!Exists('..\packages\Xamarin.Firebase.Iid.60.1142.0\build\MonoAndroid80\Xamarin.Firebase.Iid.targets')) 被评估为 (!Exists('..\packages\Xamarin.Firebase .Iid.60.1142.0\build\MonoAndroid80\Xamarin.Firebase.Iid.targets'))。

1>由于错误条件,任务“错误”被跳过; (!Exists('..\packages\Xamarin.Firebase.Messaging.60.1142.0\build\MonoAndroid80\Xamarin.Firebase.Messaging.targets')) 被评估为 (!Exists('..\packages\Xamarin.Firebase .Messaging.60.1142.0\build\MonoAndroid80\Xamarin.Firebase.Messaging.targets'))。

我不知道是什么原因造成的,也不知道它的影响。

在运行时我在输出中看到这条消息

05-12 10:40:51.334 W/ResourceType(4616):对于资源 0x7f080010,条目索引 (16) 超出类型 entryCount(14)

这似乎是一个 dex 限制问题,但我已经尝试启用 multidex 无济于事。任何帮助将不胜感激

【问题讨论】:

  • 你可以像this.一样使用Firebase

标签: c# xamarin xamarin.android firebase-cloud-messaging


【解决方案1】:

我不知道这是否是一个有效的解决方案,但我重新启用了 multidex,并清理了解决方案,物理删除了本地项目和 PCL 的 bin 和 obj 文件。经过几次重建后,它才开始工作。

我想为遇到此问题的其他人发布此消息,如果有人可以提供可靠的解释,我会全力以赴。

【讨论】:

    【解决方案2】:

    在我的情况下,我在将我的 Android Target API 从 21 升级到 26 后遇到了这个问题。

    => 从设备中删除以前安装的应用程序。

    => 清理并重建

    为我工作。

    【讨论】:

      【解决方案3】:

      使用 MvvmCross,我们使用了一个 LinkerPleaseInclude 类,它只是一个简单的类,我们在其中添加了可以链接出来的代码实现。

      我只是在那个类中添加了:

      public void Include(Firebase.Provider.FirebaseInitProvider provider)
      {
          Console.WriteLine(provider);
      }
      

      现在它没有链接并且每次都有效。

      【讨论】:

        【解决方案4】:

        这个问题是在我启用 Proguard 时出现的。如果您在 Android 设置中启用了 Proguard,则必须创建一个名为 Proguar.cfg 的文件并将其添加到您的项目中,在属性中您必须在编译操作中选择 ProguardCofiguration。

        然后我的解决方案是在我的Proguar.cfg 文件中添加这些说明。

        -keep public class com.google.android.gms.* { public *; }
        -keep class com.google.firebase.provider.FirebaseInitProvider
        -dontwarn com.google.android.gms.**
        

        我的apk文件的重量也减少了很多。

        【讨论】:

          【解决方案5】:

          我解决了这个问题。 1.清理你的项目。 2.然后重建。

          为我工作。

          【讨论】:

            【解决方案6】:

            可能 google-services.json 中的包名和 firebase 中的包名不同,我遇到了同样的问题,后来我读到了 firebaseinitprovider 方法,结果发现它从 google-services.json 获取数据并将其与中的数据进行比较火力基地。如果有任何不匹配,它只会在运行时抛出错误。

            【讨论】:

              【解决方案7】:

              确保在 AndroidManifest 中添加以下权限。我有同样的错误,这解决了它。

              <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
              <uses-permission android:name="android.permission.WAKE_LOCK" />
              <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2017-01-05
                • 1970-01-01
                • 2020-02-12
                • 2019-11-03
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多