如果我使用 VSTS 托管构建/HockeyApp,则调试 Xamarin Android 应用程序

Debugging Xamarin Android apps if I'm using VSTS hosted builds / HockeyApp

我一直在使用 Visual Studio Community 2015 开发 Xamarin Android 应用程序。到目前为止,调试一切正常,因为我只是在 VS 中构建我的应用程序,然后连接我的 phone 到我的笔记本电脑并使用 F5 对其进行调试。

最近,我开始使用 HockeyApp 进行崩溃报告,这样当我使用我的应用程序时(在我不编程的那一天),如果它崩溃了,我可以发送崩溃报告。这工作正常,但崩溃报告不包括行号,而且我没有很好的参考应用程序崩溃的构建,因为应用程序本身实际上没有上传到 HockeyApp,调试符号也没有.

为了解决这个问题,我尝试使用 Visual Studio Team Services 进行更有条理,在签入我的源代码时进行托管构建,并自动将应用程序和调试符号上传到 HockeyApp。

现在我正在努力在脑海中协调这对我来说应该如何工作。如果我在 VS 中编码并通过 VS 进行调试,应用程序将部署到我的 phone。但是现在,我签入了源代码,VSTS 进行了 CI 构建并将所有内容上传到 HockeyApp。但是现在,VSTS 所做的 CI 构建与我的 phone 上的构建并不完全相同,因为该构建来自 Visual Studio 构建。

所以,当我完成编码然后在当天晚些时候,我 运行 我的应用程序崩溃了,我担心来自 HockeyApp 的崩溃报告实际上与什么无关曲棍球应用程序有。一方面,我可能没有签入源代码管理,在这种情况下,我的 phone 的版本将比 HockeyApp 的版本更新。但即使我记得签入它,它也确实不一样 "build"(因为我的 phone 具有由 Visual Studio 构建的 APK,而 HockeyApp 具有由 Visual Studio 构建的 APK VSTS).

问题:

1) 是否可以直接从 Visual Studio 上传我的应用程序和调试符号,而无需通过 VSTS 构建? (最好在每次构建时自动执行,这样我就不必记住执行额外的步骤)?

2) 如果不是,解决我上面提到的问题的最佳做法是什么?

理想情况下,我不想在完成一天的编码后执行任何额外的步骤。我希望能够始终知道我构建并部署到我的 phone 的最后一个版本将上传到 HockeyApp,这样如果它崩溃,HockeyApp 发送的崩溃 repo 将与正确的源代码匹配和调试符号。

关于你的第一个问题,这取决于你从事的项目。如果您正在处理 UWP 项目,则有一个 "Enable Crash Analytics" 选项和 "Distribute With Hockey App" 选项允许您在右键单击项目时执行此操作。但是,如果您正在处理 Xamarin.Android 项目,则无法执行此操作。您需要手动将它们上传到 Hockey App。但是,您可以创建一个 power-shell 脚本来将这些文件上传到 Hockey App,并将此 power-shell 脚本配置为 post-build 事件。您可以在此处查看 power-shell 脚本以供参考:upload_file.ps.

对于 Visual Studio Team Services(VSTS) 构建,您只需确保应用程序版本和构建配置与您在本地计算机上通过 VS 调试时完全相同。 Hockey App会自动检测版本并将数据发送到相关构建版本。