繁体   English   中英

无法获取提供程序 com.google.firebase.provider.FirebaseInitProvider 在调试模式下将应用程序启动到设备时遇到错误 xamarin 表单

[英]Unable to get provider com.google.firebase.provider.FirebaseInitProvider error encountered when launching app to device on debug mode xamarin forms

我正在尝试使用库以便在我的 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 无济于事。 任何帮助将不胜感激

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

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

就我而言,在将我的 Android Target API 从 21 提升到 26 后,我遇到了这个问题。

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

=> 清理和重建

为我工作。

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

在那堂课上,我简单地补充道:

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

现在它没有链接出来并且每次都可以工作。

当我启用 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 文件的重量也减少了很多。

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

为我工作。

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

确保在 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"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM