在调试模式xamarin表单

时间:2018-05-12 15:44:35

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

我正在尝试使用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:Unable找到资源ID#0x7f080010“。

我将输出详细程度更改为详细信息,并在构建消息

中找到了
  

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

     

1>由于错误条件,跳过任务“错误”; (!存在('.. \ packages \ Xamarin.Firebase.Iid.60.1142.0 \ build \ MonoAndroid80 \ Xamarin.Firebase.Iid.targets'))被评估为(!Exists('.. \ packages \ Xamarin.Firebase) .Iid.60.1142.0 \构建\ 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 \构建\ MonoAndroid80 \ Xamarin.Firebase.Messaging.targets'))。

我不知道造成这种情况的原因是什么,或者它的影响是什么。

在运行时,我在输出中看到此消息

  

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

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

7 个答案:

答案 0 :(得分:2)

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

我想将这个发布给遇到此事的其他人,如果有人可以提供一个可靠的解释,我会全力以赴。

答案 1 :(得分:0)

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

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

=>清理并重建

为我工作。

答案 2 :(得分:0)

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

在该课程中,我只是添加了:

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

现在它没有被链接出去,并且每次都能工作。

答案 3 :(得分:0)

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

enter image description here

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

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

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

答案 4 :(得分:0)

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

为我工作。

答案 5 :(得分:0)

google-services.json中的软件包名称和firebase中的软件包名称可能不同,我面临着相同的问题,后来我读到有关firebaseinitprovider方法的信息,结果是它从google-services.json中获取数据并将其与火力基地。如果存在任何不匹配,则会在运行时抛出错误。

答案 6 :(得分:0)

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