当前位置: 首页 > 知识库问答 >
问题:

错误 java.exe退出代码 1 Xamarin Firbase Messaging

曾沛
2023-03-14

我正在使用nuget包Xamarin.Firebase.MessagingXamarin.GooglePlayServices.Base在我的应用程序中接收推送通知,以前它工作正常,但是当我将visual Studio 2022更新到17.2.3时,它停止工作

我尝试了所有这些:

  • 更新所有nuget包
  • 从所有共享项目中删除obj bin文件夹
  • 启用multidex
  • 安装并包含

<代码>

>

  • 这是一个很好的例子https://techhelpnotes.com/c-working-through-package-reference-errors-with-firebase-and-a-java-exe-exited-with-code-1-error-xamarin/

    https://github.com/xamarin/GooglePlayServicesComponents/issues/379

    我以前做过的任何事情都没有奏效

    我的代码接收推送通知:

    using System;
    using System.Threading.Tasks;
    using Android.App;
    using Firebase.Messaging;
    using Plugin.DeviceInfo;
    using Xamarin.Essentials;
    using Xamarin.Forms;
    
    namespace MyApp.Droid
    {
        [Service]
        [IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
    
        public class MyFirebaseMessagingService : FirebaseMessagingService
        {
            readonly AndroidNotificationManager _androidNotification = new AndroidNotificationManager();
            public override void OnMessageReceived(RemoteMessage message)
            {
                var mensajeData = message.Data;
    
                string title= mensajeData["notiTitle"];
                string bodymessage= mensajeData["notiBody"];
    
                _androidNotification.CreateLocalNotification(title, bodymessage);
            }
    
            public override void OnNewToken(string token)
            {
                base.OnNewToken(token);
                Preferences.Set("TokenFirebase", token);
            }
        }
    }
    

    如果我删除< code>[Service]或< code >[intent filter(new[]{ " com . Google . firebase . messaging _ EVENT " })],代码会正确编译

  • 共有2个答案

    沈凡
    2023-03-14

    除了这里的答案,我还必须导出广播版本

    [BroadcastReceiver(Enabled = true, Exported = true)]
    
    柯乐童
    2023-03-14

    显然,这是由于我对visual Studio进行了更新,因为Android SDK也进行了更新,解决方案是将Android 31的[Services]编辑为[Services(Export = true)],留下这样的最终代码。

    [Service(Exported = true)]
    [IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
    
    public class MyFirebaseMessagingService : FirebaseMessagingService
    {
        readonly AndroidNotificationManager _androidNotification = new AndroidNotificationManager();
        public override void OnMessageReceived(RemoteMessage message)
        {
            var mensajeData = message.Data;
    
            string title= mensajeData["notiTitle"];
            string bodymessage= mensajeData["notiBody"];
    
            _androidNotification.CreateLocalNotification(title, bodymessage);
        }
    
        public override void OnNewToken(string token)
        {
            base.OnNewToken(token);
            Preferences.Set("TokenFirebase", token);
        }
    }
    

    添加后,一切编译正确

    字体答案

     类似资料:
    • 这几天我试图解决这个问题,但还是没有成功。如果我建立发布版本没有proGuard然后一切都好。 我读了许多关于可能问题的话题,但对我来说没有任何帮助。到目前为止,我做了如下: Java最大堆大小-1G 一般Android-dontwarnorg.apache.http.**-dontwarnandroid.net.http.Android HttpClient -保持课堂秩序。支持多重索引。多索引

    • 问题内容: 所以我有Xamarin.Android项目,其中包含几个库。当我尝试构建时,收到错误消息“ java.exe”,代码2退出。 经过数小时的Google研究,我发现可以启用Multidex。根据Jon Doublas的博客文章,我做了提到的步骤。 http://www.jon- douglas.com/2016/09/05/xamarin-android-multidex/ 根据博客条目

    • 我得到以下错误,当我建立我的Xamarin。Android应用发布。 这是输出。。。 阅读输出消息ProGuard似乎有问题,有人知道我能做什么吗?

    • 问题内容: 用一些错误代码退出程序的惯用方式是什么? 的文档说:“程序立即终止;延迟的函数不运行。”,仅调用。对于不是严重错误的事情,终止程序而不运行延迟函数似乎是极端的。 我是否应该绕过一些表明存在错误的状态,然后在某个我知道可以安全退出并已运行所有延迟函数的位置进行调用? 问题答案: 我在大多数实际软件包中都遵循了这些原则,以便尽快采用该约定并适当终止该约定:

    • 我试图在vscode中调试一个flutter的演示应用程序,错误显示为ADB退出,代码1执行流式安装。我卸载现有的Flutter演示应用程序。

    • 我正在使用鲍尔安装几个库。出于演示目的,我正在安装引导程序。无论包,我收到以下错误: 我已尝试使用以下解决方案删除第一个错误-我在此搜索中发现: 但是,这不起作用,该页面上的任何其他解决方案也不起作用。在搜索第二个错误的解决方案时,如果您位于公司网络/防火墙后面,则为代理服务器设置用户名/pwd似乎可以解决此问题。但是,我没有使用代理服务器,因为我使用的是家用电脑/网络(windows 7 x64