C# 无法获取提供程序com.google.firebase.provider.FirebaseInitProvider在调试模式下启动设备应用程序时遇到错误
我正在尝试使用库,以便在我的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)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:无法找到资源
这似乎是一个索引限制问题,但我已经尝试启用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