更新我终于能够使用最新的工具链在4.2上部署我们的应用程序。我得到一个错误。原文后见下文。
我们正在寻找一个长期的解决方案,以继续使用最新版本的Visual Studio (在本文发表时为2019),同时继续开发旧的Android平台(4.4之前)。
微软在Xamarin.Android 9.2版本中放弃了对安卓4.4之前版本的支持,但我们不能放弃对我们产品的支持。到目前为止,我们一直在使用VS2017进行特定的安卓开发,但是VS2019和VS2017开发环境之间的差距越来越大,这给我们的日常开发增加了越来越多的开销。
我们的项目是使用PC上部署的软件的通用代码库开发的,但这些代码的一部分也是可以在特定设备上运行的Android应用程序的一部分。对于PC开发,这是我们的主要活动,我们希望尽可能多地能够使用最新的.NET标准和最新的工具进行编码。
Android版本是一个非常特定于它所使用的硬件的工业软件,我们不能期望Android操作系统会更新,所以我们坚持使用4.2.2的最低Android版本支持。
我已经在SO和其他论坛上搜索过了,但没有找到任何“好”的长期解决方案。以下是我找到的一些与此主题相关的有用信息:
https://docs.microsoft.com/en-us/xamarin/android/release-notes/9/9.2
https://docs.microsoft.com/en-us/xamarin/android/app-fundamentals/android-api-levels?tabs=windows
Which .Net Standard version supports which Android versions?
https://github.com/xamarin/xamarin-android/blob/master/Documentation/guides/messages/xa4216.md
https://docs.microsoft.com/en-us/dotnet/standard/net-standard
目前我认为我们可以做的是:
1)我们代码的公共部分主要使用.NET标准库
2)只有很少的程序集直接使用Xamarin.Android,通常只用于UI部分。
请注意,这与我们现在已经在做的事情很接近(除了我们可以将更多的程序集移植到.NET标准)。
然而,由于我们的目标是API级别4.4并在4.2上使用应用程序,我们可能会调用一些4.2中不支持的API,或者更糟糕的是,调用支持但存在错误的API,因为新的Xamarin/Mono运行时不支持旧的Android版本。这是特别正确的,因为有警告XA4216:即使我们可以部署和运行在旧的安卓上,因为清单允许这样做,我们也不能确保操作系统提供了mono运行时使用的所有必要功能。目前,XA4216的警告是针对4.0.3版本的,但我们看到更新VS2019的那一天即将到来,并得到这个针对Android4.2的警告。
那么有没有比这更好的解决方案:
1)保留旧的VS2017/旧的Xamarin.Android构建环境,并阻止我们的日常工作,以确保与Android4.2的完全兼容
2)使用最新的Xamarin将我们的构建和开发环境完全更新到VS2019,并祈祷该实现不会在较旧的操作系统上出现our。
我希望能够使用2,并确保一切都能正常工作,而不必在每次visual studio更新时重新测试整个应用程序。你认为如何?为了确保应用程序的稳定性,我们是坚持使用旧的构建系统(VS2017 +旧的Xamarin.Android),还是用最新的VS2019升级到Xamarin是一个“安全”的风险?
提前感谢你在这个话题上的任何好的建议。
PS:我推动了解决方案2:“使用最新的Xamarin将我们的构建和开发环境完全更新到VS2019,并祈祷实现不会在旧操作系统上出现our。”首先在我的PC上进行本地测试。在对我们的应用程序进行必要的更改,使其使用VS2019和最新的Xamarin进行构建后,我部署到我们的Android4.2.2设备上进行测试(我花了一整天的时间来修复构建错误...)。我收到以下错误,应用程序冻结: W/libc ( 9196):protoent* getprotobyname(char const*)(3)未在Android上实现。
也许祈祷还不够..。有什么想法吗?
发布于 2019-12-25 02:57:40
使用选项2&使用最新的Xamarin将您的构建和开发环境完全更新到VS2019!该实现不应对任何较旧的操作系统产生错误。
即使它确实添加了bug,也只需在QA中测试代码即可。至于生产,您可以在您的应用程序上放置良好的崩溃分析,您将能够捕获、报告和修复任何bug。
在很大程度上,在Android上,使用Android4.4以下的用户数量不到所有用户的0.001%。在这一点上,在你的应用程序中实现辅助功能更有意义,因为这会影响1000倍以上的用户。
https://stackoverflow.com/questions/59467756
复制相似问题