gpt4 book ai didi

android - 多平台开发 : use recent Visual Studio with older version of Android

转载 作者:行者123 更新时间:2023-11-30 04:54:30 25 4
gpt4 key购买 nike

[更新] 我终于能够使用最新的工具链在 4.2 上部署我们的应用程序。我得到一个错误。原文后见下文。

我们正在寻找一个长期的解决方案,以继续使用最新版本的 Visual Studio(本文发布时为 2019 年),同时继续为旧的 Android 平台(4.4 之前)进行开发。

Xamarin@Microsoft 在 Xamarin.Android 版本 9.2 中放弃了对 4.4 之前的 Android 的支持,但我们不能放弃对我们产品的支持。到目前为止,我们一直在使用 VS2017 进行特定的 android 开发,但是 VS2019 和 VS2017 开发环境之间的差距越来越大,这增加了我们日常开发的开销。

我们的项目是使用部署在 PC 上的软件的最通用代码库开发的,但此代码的一部分也是可以在特定设备上运行的 Android 应用程序的一部分。对于作为我们主要 Activity 的 PC 开发,我们希望尽可能能够使用最新的 .NET 标准和最新的工具进行编码。

Android 版本是一个工业软件,非常特定于它所使用的硬件,我们不能指望 Android 操作系统会更新,因此我们坚持使用 4.2.2 的最低 Android 版本支持。

我已经在 SO 和其他论坛上进行了搜索,但没有找到任何“好的”长期解决方案。有关信息,这里是我发现的与此主题相关的一些有用信息:

https://learn.microsoft.com/en-us/xamarin/android/release-notes/9/9.2

https://learn.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://learn.microsoft.com/en-us/dotnet/standard/net-standard

目前我认为我们可以做的是:

1) 我们代码的公共(public)部分主要使用.NET标准库

2) 直接使用 Xamarin.Android 的程序集很少,通常仅用于 UI 部分。

请注意,这与我们现在正在做的很接近(除了我认为我们可以将更多程序集移植到 .NET Standard)。

然而,由于我们以 API 级别 4.4 为目标并在 4.2 上使用该应用程序,我们可能会调用一些 4.2 中不支持的 API,或者更糟的是,调用支持但有问题的 API,因为新的 Xamarin/Mono 运行时不支持旧的安卓版本。尤其如此,因为存在警告 XA4216:即使我们可以在较旧的 android 上部署和运行(因为 list 允许),我们也无法确保操作系统提供 mono 运行时使用的所有必要功能。目前警告 XA4216 是针对版本 4.0.3,但我们看到更新 VS2019 并在 Android 4.2 上收到此警告的那一天即将到来。

那么有没有更好的解决方案:

1) 保留旧的 VS2017/旧的 Xamarin.Android 构建环境并阻止我们的日常工作,以继续确保与 Android 4.2 的完全兼容性

2) 使用最新的 Xamarin 将我们的构建和开发环境完全更新到 VS2019,并祈祷该实现不会在旧操作系统上出现错误。

我希望能够使用 2 并确保一切正常,而不必在每次更新 visual studio 时重新测试整个应用程序。你怎么认为?为了确保应用程序的稳定性,我们是否坚持使用旧的构建系统(VS2017 + 旧的 Xamarin.Android),或者升级到带有最新 Xamarin 的 VS2019 是否存在“安全”风险?

在此先感谢您就此主题提出任何好的建议。

附言:我插入了解决方案 2:“使用最新的 Xamarin 将我们的构建和开发环境完全更新到 VS2019,并祈祷该实现不会在旧操作系统上出现问题。”首先在我的电脑上进行本地测试。在对我们的应用程序进行必要的更改以便它使用 VS2019 和最新的 Xamarin 构建之后,我部署了测试我们的 Android 4.2.2 设备(花了我一整天的时间来修复构建错误......)。我收到以下错误并且应用程序卡住:W/libc (9196): protoent* getprotobyname(char const*)(3) 未在 Android 上实现。

也许祈祷还不够……有什么想法吗?

最佳答案

使用选项 2 并使用最新的 Xamarin 将您的构建和开发环境完全更新到 VS2019!该实现不应导致任何旧操作系统出现错误。

即使它确实添加了错误,也只需在 QA 中测试您的代码。至于生产,您可以在您的应用程序上放置良好的崩溃分析,并且您将能够捕获、报告和修复任何错误。

在大多数情况下,在 Android 上使用 Android 4.4 以下的用户数量不到所有用户的 0.001%。到那时,在您的应用中实现辅助功能就更有意义了,因为这会影响 1000 倍以上的用户。

关于android - 多平台开发 : use recent Visual Studio with older version of Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59467756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com