首页 > 解决方案 > Android Mono 版本或支持包版本

问题描述

假设我想确保所有 Android 7.0 设备都可以运行我的应用程序。

安装 NuGet 包时应该注意哪个版本?

Android Mono 版本还是 Support 包的版本?

我应该选择A还是B?顺便说一句,Android 7.0 是否与 Android Mono 7.0 相同,或者不是?

甲还是乙?

标签: xamarinxamarin.android

解决方案


首先,MonoAndroid V7.0 和 Android V7.0 不是一回事。

Mono Android 是基于 C# 语言和 Common Language Runtime 开放标准的微软 .NET Framework 的开源实现,而 Android 是谷歌开发的移动操作系统,基于 Linux 内核的修改版本和其他开放源软件。

要回答您的第一个问题,支持库实际上以不同的方式工作,然后您了解确保您的应用程序可以在所有 Android 7.0 设备上运行,您需要确保您拥有 Android SDK 并且您的 compilesdkversion 最低或高于此,另一方面,现在支持库是为了兼容性,假设您有一个针对 V 5.1 的应用程序,并且有一个在 5.1 上可用的 API,但是如果您希望能够在下面的设备中使用相同的 API,您需要有支持库 V21 以更好地理解阅读直到最后。

当您说 MonoAndroid 版本时,尽量保持简单明了,它基本上向您显示了您的 android 应用程序所针对的版本。这基本上意味着您的目标版本与最大支持无关。

目标框架:

目标框架 - 指定在构建应用程序时要使用的框架。此 API 级别由 Xamarin.Android 在编译时使用。

您要针对您的 android 应用程序的框架,这实际上是A根据您的需要,这与它是否会在高于它的设备上运行无关,它基本上为您提供了该 Android 可用的新功能框架。目标框架(也称为 compileSdkVersion)是您的应用在构建时编译的特定 Android 框架版本(API 级别)。此设置指定您的应用程序在运行时期望使用的 API,但它对安装时您的应用程序实际可用的 API 没有影响。因此,更改目标框架设置不会更改运行时行为。

例如:如果您针对 V6.0 以下的任何内容,则不需要提供任何运行时权限,或者如果您针对 v8.0,您可以使用自适应图标等等。Target Framework 标识了您的应用程序所链接的库版本——这决定了您可以在您的应用程序中使用哪些 API。例如,如果要使用 Android 5.0 Lollipop 中引入的 NotificationBuilder.SetCategory 方法,则必须将 Target Framework 设置为 API Level 21 (Lollipop) 或更高版本。如果您将项目的 Target Framework 设置为 API 级别,例如 API Level 19 (KitKat) 并尝试在代码中调用 SetCategory 方法,则会出现编译错误。

另请注意:

从 2018 年 8 月开始,Google Play 控制台将要求新应用面向 API 级别 26 (Android 8.0) 或更高版本。从 2018 年 11 月开始,现有应用程序将需要以 API 级别 26 或更高级别为目标。有关更多信息,请参阅在未来几年提高 Google Play 上的应用程序安全性和性能。

最低安卓版本

最低 Android 版本 – 指定您希望应用支持的最旧 Android 版本。此 API 级别由 Android 在运行时使用。

最低 Android 版本(也称为 minSdkVersion)是可以安装和运行您的应用程序的 Android 操作系统的最旧版本(即最低 API 级别)。默认情况下,应用只能安装在匹配 Target Framework 设置或更高版本的设备上;如果最低 Android 版本设置低于目标框架设置,您的应用也可以在早期版本的 Android 上运行。例如,如果您将 Target Framework 设置为 Android 7.1 (Nougat) 并将最低 Android 版本设置为 Android 4.0.3 (Ice Cream Sandwich),则您的应用可以安装在 API 级别 15 到 API 级别 25(含)的任何平台上.

例如:虽然您的应用程序可以成功构建和安装在这一系列平台上,但这并不能保证它会在所有这些平台上成功运行。例如,如果您的应用安装在 Android 5.0 (Lollipop) 上,并且您的代码调用了仅在 Android 7.1 (Nougat) 和更高版本中可用的 API,则您的应用将出现运行时错误并可能崩溃。因此,您的代码必须确保——在运行时——它只调用运行它的 Android 设备支持的那些 API。换句话说,您的代码必须包含明确的运行时检查,以确保您的应用仅在足够新的设备上使用更新的 API 以支持它们。

目标安卓版本

目标 Android 版本 – 指定您的应用打算在其上运行的 Android 版本。此 API 级别由 Android 在运行时使用。

目标 Android 版本(也称为 targetSdkVersion)是应用程序预期运行的 Android 设备的 API 级别。Android 使用此设置来确定是否启用任何兼容性行为 - 这可确保您的应用继续按照您预期的方式运行。Android 使用应用程序的目标 Android 版本设置来确定哪些行为更改可以应用于您的应用程序而不会破坏它(这就是 Android 提供前向兼容性的方式)。

Target Framework 和 Target Android 版本虽然名称非常相似,但并不是一回事。Target Framework 设置将目标 API 级别信息传递给 Xamarin.Android 以供在编译时使用,而 Target Android 版本将目标 API 级别信息传递给 Android 以供在运行时使用(当应用程序安装并在设备上运行时)。

通常,目标 Android 版本应受最低 Android 版本和目标框架的限制。那是:

最低 Android 版本 <= 目标 Android 版本 <= 目标框架

支持库

Android 支持库是每个 Android 应用程序的重要组成部分,您绝对可以在任何地方找到它们。支持库使开发人员能够将 Android 的最新和最强大的功能添加到他们的应用程序中,同时保持与旧版本 Android 的向后兼容性。随着新版本的 Android SDK 不断推出,支持库的更新也在不断推出;使它们保持最新并安装正确的版本是 Android 开发的重要(有时是令人沮丧的)部分。在此博客中,我希望揭开支持库的神秘面纱并帮助您升级到最新版本

有关支持库的更多理解和参考:https ://blog.xamarin.com/mastering-android-support-libraries/


推荐阅读