【问题标题】:SignalR stops working in Xamarin.Forms Android app after migration of backend server and app to .NET Core 3.1 signalR将后端服务器和应用程序迁移到 .NET Core 3.1 signalR 后,SignalR 在 Xamarin.Forms Android 应用程序中停止工作
【发布时间】:2020-11-17 18:05:13
【问题描述】:

我正在将我的网站从 ASP.NET Framework 迁移到 ASP.NET Core,并且在更新我的 Xamarin Forms 应用程序以连接后端迁移的 signalR 的最后一步中遇到了问题。我迁移了我的应用程序,一切都在模拟器和物理设备(LG V50 THINQ)上通过 USB 在调试配置中运行,因此我将发布配置 APK 部署到 Google Play。但是,当我从 Google Play 商店将应用程序安装到同一台物理设备上时,signalR 停止工作。

首先,后端似乎没有问题。我并没有完全排除它,但到目前为止我记录的内容并没有指出后端问题。另外,需要注意的是,我目前在我的应用程序中设置为每个选定的 ABI 生成一个包 (.apk)。到目前为止,我一直上传到 Play 商店的架构是 armeabi-v7a 和 arm64-v8a。

为了追查这个问题,我采取了以下步骤:

  1. 在模拟器上运行我的发布配置 - 工作正常
  2. 通过 USB 在设备上从 VS 2019 运行我的发布配置 - 失败 - 设备日志显示对 signalR 集线器的出站调用,并且 signalR 集线器显示一切正常并尝试按预期调用设备客户端,但设备日志未显示入站来自 signalR 集线器的调用成功。
  3. 在 Release 配置中切换设置以使其与 Debug 配置保持一致,直到我发现在 Android 选项面板中切换以下设置允许应用接收来自 signalR 集线器的回调才能工作:
    <DebugSymbols>true</DebugSymbols>
    <Optimize>false</Optimize>
  1. 然后我尝试使用这些选项设置将 APK 上传到 Google Play 并从 Google Play 部署到设备 - 失败
  2. 此时,我退后一步,将 armeabi-v7a 的签名 APK 直接复制到 V50(与我上传到 Play 商店的 APK 相同)并手动安装 APK - WORKED
  3. 我卸载了 armeabi-v7a APK,然后直接将 arm64-v8a 的签名 APK 复制并手动安装到 V50 - 失败
  4. 我将 Release 配置设置恢复为默认值,构建并签署了新的 APK,发现即使在原始的默认 Release 配置 armeabi-v7a WORKED 和 arm64-v8a FAILED 下。

所以,我知道两件事:

  1. 在 V50 设备上,32 位 armeabi-v7a 32 位 APK 与 signalR 一起使用,而 64 位 arm64-v8a APK 在默认发布配置设置下无法与 signalR 一起使用(但我仍然不知道为什么)。
  2. 如果我为这两个项目更新了如上所示的发布配置设置(并且两者都是必需的),我可以在运行 VS 2019 的发布配置的 V50 上进行调试,但这些设置一旦部署为已签名的 APK。

在这一点上,我很难过。感觉像是 64 位与 32 位的问题,但没有任何面包屑可以指出我接下来应该看的地方。有人有什么线索可以让我关注吗?

【问题讨论】:

    标签: android .net-core xamarin.forms xamarin.android signalr


    【解决方案1】:

    好的,终于找到了明显的罪魁祸首。不得不禁用“使用 LLVM 优化编译器”,signalR 开始使用 arm64-v8a。

    【讨论】:

    • 这个选项在哪里?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    相关资源
    最近更新 更多