Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法获取提供程序com.google.firebase.provider.FirebaseInitProvider在调试模式下启动设备应用程序时遇到错误_C#_Xamarin_Xamarin.android_Firebase Cloud Messaging - Fatal编程技术网

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

C# 无法获取提供程序com.google.firebase.provider.FirebaseInitProvider在调试模式下启动设备应用程序时遇到错误,c#,xamarin,xamarin.android,firebase-cloud-messaging,C#,Xamarin,Xamarin.android,Firebase Cloud Messaging,我正在尝试使用库,以便在我的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:无法找到资源

我正在尝试使用库,以便在我的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”

我将输出详细度更改为detailed,并在构建消息中找到它

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)


这似乎是一个索引限制问题,但我已经尝试启用multidex,但没有任何效果。非常感谢您的帮助

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


我想为遇到这种情况的其他人发布这篇文章,如果有人能提供可靠的解释,我洗耳恭听。

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


我想为其他遇到这种情况的人发布这篇文章,如果有人能提供一个可靠的解释,我洗耳恭听。

在我的例子中,我是在将我的Android Target API从21推广到26之后遇到这个问题的

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

=>清理和重建


为我工作。

在我的例子中,我是在将我的Android目标API从21提升到26之后遇到这个问题的

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

=>清理和重建


为我工作。

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

在那节课上,我简单地加了一句:

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

现在它不是链接出来的,而且每次都能工作。

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

在那节课上,我简单地加了一句:

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

现在它没有链接,每次都能工作。

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

然后,我的解决方案是将这些指令添加到我的
Proguar.cfg
文件中

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

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

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

然后,我的解决方案是将这些指令添加到我的
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.然后重建

为我工作。

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


为我工作。

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

可能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"/>

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

您可以像使用Firebase一样使用Firebase