Xamarin.Android应用程序报告崩溃与java.lang.reflect.InvocationTargetException异常

时间:2017-07-05 15:52:44

标签: java android xamarin xamarin.android xamarin.forms

首先,这不是一个重复的问题,或者已在stackoverflow或xamarin论坛上得到解答。在xamarin论坛上,这个问题/问题仍在讨论中,所以我在这里发布了它。

因此,我的应用程序以及其他一些已在Xamarin.Android中开发的问题在Google的游戏机上报告崩溃(选择加入和退出)。

App实际上没有崩溃。它只是向Google的播放控制台报告自动崩溃报告。

以下是崩溃适用于Android 6.0和7.0的堆栈跟踪

java.lang.RuntimeException: 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.reflect.InvocationTargetException: 
at java.lang.reflect.Method.invoke(Native Method:0)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
(ZygoteInit.java:726)

在Android 5.1和5.0中:

java.lang.RuntimeException: 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Caused by: java.lang.reflect.InvocationTargetException: 
at java.lang.reflect.Method.invoke(Native Method:0)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)

适用于Android 4.2和4.4:

java.lang.RuntimeException: 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
at dalvik.system.NativeStart.main(Native Method:0)
Caused by: java.lang.reflect.InvocationTargetException: 
at java.lang.reflect.Method.invokeNative(Native Method:0)
 at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)

似乎此异常主要发生在Android 6.0和7.0中。以上是谷歌播放控制台为我和其他开发者应用程序提供的唯一堆栈跟踪。目前还没有任何详细的跟踪信息。

对于我的应用,只要在应用上收到通知,就会报告崩溃。它会在收到通知的同时影响所有应用用户。

收到通知时的崩溃报告图像

enter image description here

enter image description here

enter image description here

以下是我的FCM代码:

MainActivity

Task.Run(() =>
        {
            var instanceid = FirebaseInstanceId.Instance;
            instanceid.DeleteInstanceId();
            Log.Debug("TAG", "{0} {1}", instanceid.Token, instanceid.GetToken(this.GetString(Resource.String.gcm_defaultSenderId), Firebase.Messaging.FirebaseMessaging.InstanceIdScope));
        });

令牌注册

 [Service]
[IntentFilter(new[] {
    "com.google.firebase.INSTANCE_ID_EVENT"
})]
class MyFirebaseIIDService : FirebaseInstanceIdService
{
    const string TAG = "MyFirebaseIIDService";
    public override void OnTokenRefresh()
    {
        var refreshedToken = FirebaseInstanceId.Instance.Token;
        Log.Debug(TAG, "Refreshed token: " + refreshedToken);
        SendRegistrationToServer(refreshedToken);
    }
    void SendRegistrationToServer(string token) { }  

}

OnMessageReceived

[Service]
[IntentFilter(new[] {
    "com.google.firebase.MESSAGING_EVENT"
})]
class MyFireMessagingService : FirebaseMessagingService
{
    public override void OnMessageReceived(RemoteMessage message)
    {
        base.OnMessageReceived(message);

        var title = string.Empty;
        if (message.Data.Count > 0)
        {
            //Log.Debug(Tag, "Message data payload: " + message.Data);
            title = message.Data["title"];
        }

        SendNotificatios(title);
    }
    public void SendNotificatios( string Header)
    {
        Notification.Builder builder = new Notification.Builder(this);
        builder.SetSmallIcon(Resource.Drawable.Icon);
        var intent = new Intent(this, typeof(MainActivity));
        intent.AddFlags(ActivityFlags.ClearTop);
        PendingIntent pendingIntent = PendingIntent.GetActivity(this, 0, intent, 0);
        builder.SetContentIntent(pendingIntent);
       // builder.SetLargeIcon(BitmapFactory.DecodeResource(Resources, Resource.Drawable.Icon));
        builder.SetContentTitle(Header);
        builder.SetPriority(1);
        builder.SetContentText("read more..");
        builder.SetVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 });
        builder.SetSound(Android.Net.Uri.Parse("android.resource://" + Application.PackageName + "/" + Resource.Raw.demonstrative));
        builder.SetAutoCancel(true);
        Random r = new Random();
        int uniw = r.Next(1, 10);
        NotificationManager notificationManager = (NotificationManager)GetSystemService(NotificationService);
        notificationManager.Notify(uniw, builder.Build());

    }
}

注意:通知正常,只要通知到达应用报告崩溃到Google Play控制台。

如果有任何人对此问题有任何相关知识,请提供帮助。 TIA

0 个答案:

没有答案