【发布时间】: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。
为了追查这个问题,我采取了以下步骤:
- 在模拟器上运行我的发布配置 - 工作正常
- 通过 USB 在设备上从 VS 2019 运行我的发布配置 - 失败 - 设备日志显示对 signalR 集线器的出站调用,并且 signalR 集线器显示一切正常并尝试按预期调用设备客户端,但设备日志未显示入站来自 signalR 集线器的调用成功。
- 在 Release 配置中切换设置以使其与 Debug 配置保持一致,直到我发现在 Android 选项面板中切换以下设置允许应用接收来自 signalR 集线器的回调才能工作:
<DebugSymbols>true</DebugSymbols>
<Optimize>false</Optimize>
- 然后我尝试使用这些选项设置将 APK 上传到 Google Play 并从 Google Play 部署到设备 - 失败
- 此时,我退后一步,将 armeabi-v7a 的签名 APK 直接复制到 V50(与我上传到 Play 商店的 APK 相同)并手动安装 APK - WORKED
- 我卸载了 armeabi-v7a APK,然后直接将 arm64-v8a 的签名 APK 复制并手动安装到 V50 - 失败
- 我将 Release 配置设置恢复为默认值,构建并签署了新的 APK,发现即使在原始的默认 Release 配置 armeabi-v7a WORKED 和 arm64-v8a FAILED 下。
所以,我知道两件事:
- 在 V50 设备上,32 位 armeabi-v7a 32 位 APK 与 signalR 一起使用,而 64 位 arm64-v8a APK 在默认发布配置设置下无法与 signalR 一起使用(但我仍然不知道为什么)。
- 如果我为这两个项目更新了如上所示的发布配置设置(并且两者都是必需的),我可以在运行 VS 2019 的发布配置的 V50 上进行调试,但这些设置一旦部署为已签名的 APK。
在这一点上,我很难过。感觉像是 64 位与 32 位的问题,但没有任何面包屑可以指出我接下来应该看的地方。有人有什么线索可以让我关注吗?
【问题讨论】:
标签: android .net-core xamarin.forms xamarin.android signalr