生成属性

MSBuild 属性控制目标的行为。 它们是在项目文件中指定的,例如 MSBuild PropertyGroup 中的 MyApp.csproj

AdbTarget

$(AdbTarget) 属性指定 Android 包可能要安装到或从中删除的 Android 目标设备。 此属性的值与 adb 目标设备选项相同。

AfterGenerateAndroidManifest

此属性中列出的 MSBuild 目标将在内部 _GenerateJavaStubs 目标(及在 AndroidManifest.xml 中生成 $(IntermediateOutputPath) 的位置)后直接运行。 如果想要对生成的 AndroidManifest.xml 文件进行任何修改,则可以使用此扩展点完成。

Added in Xamarin.Android 9.4。

AndroidAapt2CompileExtraArgs

指定处理 Android 资产和资源时传递给 aapt2 compile 命令的命令行选项。

在 Xamarin.Android 9.1 中新增。

AndroidAapt2LinkExtraArgs

指定处理 Android 资产和资源时传递给 aapt2 link 命令的命令行选项。

在 Xamarin.Android 9.1 中新增。

AndroidAddKeepAlives

一个布尔属性,该属性控制链接器是否在绑定项目中插入 GC.KeepAlive() 调用,以防止过早地收集对象。

发布配置版本的默认值为 True

Xamarin.Android 11.2 中添加了此属性。

AndroidAotAdditionalArguments

一个字符串属性,在对将 $(AndroidEnableProfiledAot)$(AotAssemblies) 设置为 true 的项目执行 Aot 任务期间,允许将选项传递到 Mono 编译器。 调用 Mono 交叉编译器时,此属性的字符串值会添加到响应文件。

通常情况下,此属性应保留为空,但在某些特殊场景中,它可以提供有用的灵活性。

$(AndroidAotAdditionalArguments) 属性与相关 $(AndroidExtraAotOptions) 属性不同;$(AndroidAotAdditionalArguments) 将完整的独立空格分隔选项(如 --verbose--debug)传递给 AOT 编译器,而 $(AndroidExtraAotOptions) 包含以逗号分隔的参数,这些参数是 AOT 编译器的 --aot 选项的一部分。

AndroidAotCustomProfilePath

aprofutil 应创建的用于保存探查器数据的文件。

AndroidAotProfiles

允许开发人员通过命令行添加 AOT 配置文件的字符串属性。 它是以分号或逗号分隔的绝对路径列表。 在 Xamarin.Android 10.1 中新增。

AndroidAotProfilerPort

获取分析数据时 aprofutil 应连接到的端口。

AndroidAotEnableLazyLoad

启用 AOT 程序集的推迟(延迟)加载,而不是在启动时预加载它们。 对于启用了任何形式的 AOT 的发布版本,默认值为 True

在 .NET 6 中引入。

AndroidApkDigestAlgorithm

一个字符串值,指定将用于 jarsigner -digestalg 的摘要算法。

默认值为 SHA-256。 在 Xamarin.Android 10.0 以及更早的版本中,默认值为 SHA1

Added in Xamarin.Android 9.4。

AndroidApkSignerAdditionalArguments

一个字符串属性,允许开发人员向 apksigner 工具提供自变量。

在 Xamarin.Android 8.2 中新增。

AndroidApkSigningAlgorithm

一个字符串值,指定将用于 jarsigner -sigalg 的签名算法。

默认值为 SHA256withRSA。 在 Xamarin.Android 10.0 以及更早的版本中,默认值为 md5withRSA

在 Xamarin.Android 8.2 中新增。

AndroidApplication

此布尔值指示项目是用于 Android 应用程序 (True) 还是用于 Android 库项目(False 或不存在)。

在 Android 包中,可能只存在一个具有 <AndroidApplication>True</AndroidApplication> 的项目。 (遗憾的是,这一要求尚未得到验证,这可能会导致与 Android 资源有关的微妙和奇怪的错误。)

AndroidApplicationJavaClass

完整 Java 类名称,用于在类继承自 Android.App.Application 时替代 android.app.Application

$(AndroidApplicationJavaClass) 属性通常由其他属性(如 $(AndroidEnableMultiDex) MSBuild 属性)设置。

已在 Xamarin.Android 6.1 中添加。

AndroidBinUtilsPath

包含 Android binutils(如本机链接器 ld 和本机汇编程序 as)的目录路径。 这些工具包含在 Xamarin.Android 安装中。

默认值为 $(MonoAndroidBinDirectory)\binutils\bin\

Added in Xamarin.Android 10.0。

AndroidBoundExceptionType

字符串值,当 Xamarin.Android 提供的类型根据 Java 类型实现 .NET 类型或接口时(例如 Android.Runtime.InputStreamInvokerSystem.IO.Stream,或 Android.Runtime.JavaDictionarySystem.Collections.IDictionary),此值会指定如何传播异常。

  • Java:原始 Java 异常类型按原样传播。

    Java 意味着,例如,InputStreamInvoker 无法正确实现 System.IO.Stream API,因为可能会从 Stream.Read() 引发 Java.IO.IOException,而不是从 System.IO.IOException 引发。

    Java 是 Xamarin.Android 的所有版本中的异常传播行为,包括 Xamarin.Android 13.0。

  • System:捕获原始 Java 异常类型,并将其包装到适当的 .NET 异常类型中。

    System 意味着,例如,InputStreamInvoker 正确实现 System.IO.StreamStream.Read() 不会引发 Java.IO.IOException 实例。 (它可能会引发包含 Java.IO.IOException 作为 Exception.InnerException 值的 System.IO.IOException。)

    System 是 .NET 6.0 中的默认值。

在 Xamarin.Android 10.2 中新增。

AndroidBoundInterfacesContainConstants

一个布尔属性,用于确定是否支持接口上的绑定常数,或者将使用创建 IMyInterfaceConsts 类的解决方法。

在 .NET 6 中,默认值为 True,在旧版中为 False

AndroidBoundInterfacesContainStaticAndDefaultInterfaceMethods

一个布尔属性,支持接口上的默认成员和静态成员,还是创建一个包含静态成员的同级类(如 abstract class MyInterface)的旧解决方法。

在 .NET 6 中,默认值为 True,在旧版中为 False

AndroidBoundInterfacesContainTypes

一个布尔属性,支持接口中嵌套的类型,还是创建非嵌套类型(如 IMyInterfaceMyNestedClass)的解决方法。

在 .NET 6 中,默认值为 True,在旧版中为 False

AndroidBuildApplicationPackage

此布尔值指示是否创建包 (.apk) 并为其签名。 将此值设置为 True 等效于使用 SignAndroidPackage 生成目标。

在 Xamarin.Android 7.1 之后添加了对该属性的支持。

该属性默认为 False

AndroidBundleConfigurationFile

指定一个文件名,以在生成 Android 应用程序捆绑包时用作 bundletool配置文件。 此文件从某些方面控制捆绑包如何生成 APK,例如从哪些维度拆分捆绑包来生成 APK。 Xamarin.Android 自动配置其中的部分设置,包括未压缩的文件扩展名列表。

仅当 $(AndroidPackageFormat) 设置为 aab 时,此属性才是相关的。

在 Xamarin.Android 10.3 中新增。

AndroidBundleToolExtraArgs

指定在生成应用程序包时传递给 bundletool 命令的命令行选项。

Xamarin.Android 11.3 中添加了此属性。

AndroidClassParser

一个字符串属性,用于控制如何分析 .jar 文件。 可能的值包括:

  • class-parse:使用 class-parse.exe 直接解析 Java 字节码,无需 JVM 的帮助。

  • jar2xml:使用 jar2xml.jar 以使用 Java 反射从 .jar 文件中提取类型和成员。

class-parse 优于 jar2xml 的优势是:

  • class-parse 能够从包含调试符号的 Java 字节码(用 javac -g 编译的字节码)提取参数名称。

  • class-parse 不会“跳过”从无法解析的类型继承或者包含无法解析类型成员的类。

已在 Xamarin.Android 6.0 中添加。

在“旧版”Xamarin.Android 中,默认值为 jar2xml,在 .NET 6 及更高版本中为 class-parse

jar2xml 的支持已过时,在 .NET 6 中删除了 jar2xml

AndroidCodegenTarget

一个字符串属性,用于控制代码生成目标 ABI。 可能的值包括:

  • XamarinAndroid:使用自 Mono for Android 1.0 以来存在的 JNI 绑定 API。 使用 Xamarin.Android 5.0 或更高版本生成的绑定程序集只能在 Xamarin.Android 5.0 或更高版本(API/ABI 附加程序)上运行,但源与先前的产品版本兼容

  • XAJavaInterop1:使用 Java.Interop 进行 JNI 调用。 只能通过 Xamarin.Android 6.1 或更高版本构建和执行使用 XAJavaInterop1 的绑定程序集。 Xamarin.Android 6.1 和更高版本会将 Mono.Android.dll 与此值绑定。

XAJavaInterop1 的好处包括:

  • 程序集较小。

  • 只要继承层次结构中的所有其他绑定类型均使用 XAJavaInterop1 或更高版本构建,即可使用 base 方法调用的 jmethodID 缓存。

  • 用于托管子类的 Java Callable Wrapper 构造函数的 jmethodID 缓存。

默认值为 XAJavaInterop1

XamarinAndroid 支持已过时,.NET 6 中将删除 XamarinAndroid 支持。

AndroidCreatePackagePerAbi

一个布尔属性,用于确定是否应该创建一文件($(AndroidSupportedAbis) 中指定的每个ABI 一个),而不是在单个 .apk 中支持所有 ABI。

另请参阅生成 ABI 特定的 APK 指南。

AndroidCreateProguardMappingFile

一个布尔属性,用于控制是否在生成过程中生成 proguard 映射文件。

将以下内容添加到 csproj 将导致生成文件,并使用 AndroidProguardMappingFile 属性来控制最终映射文件的位置。

<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>

生成 .aab 文件时,映射文件会自动包含在包中。 无需手动将其上传到 Google Play 商店。 使用 .apk 文件时,需要手动上传 AndroidProguardMappingFile

使用 $(AndroidLinkTool)=r8 时,默认值为 True

已在 Xamarin.Android 12.3 中添加。

AndroidDebugKeyAlgorithm

指定要用于 debug.keystore 的默认算法。 默认值为 RSA

AndroidDebugKeyValidity

指定要用于 debug.keystore 的默认有效期。 默认值为 1095030 * 36530 years

AndroidDebugStoreType

指定用于 debug.keystore 的密钥存储文件格式。 默认为 pkcs12

在 Xamarin.Android 10.2 中新增。

AndroidDeviceUserId

允许在来宾帐户或工作帐户下部署和调试应用程序。 该值是从以下 adb 命令获得的 uid 值:

adb shell pm list users

上述命令将返回以下数据:

Users:
	UserInfo{0:Owner:c13} running
	UserInfo{10:Guest:404}

uid 是第一个整数值。 在上述输出中,它们为 010

Xamarin.Android 11.2 中添加了 $(AndroidDeviceUserId) 属性。

AndroidDexTool

枚举样式的属性,有效值为 dxd8。 指示在 Xamarin.Android 生成过程中使用的 Android dex 编译器。 默认值为 dx。 请参阅有关 D8 和 R8 的文档。

AndroidEnableDesugar

此布尔属性确定是否启用了 desugar。 Android 当前不支持所有 Java 8 功能;默认工具链通过对 javac 编译器的输出执行称为 desugar 的字节码转换,实现新的语言功能。 如果使用 $(AndroidDexTool)=dx,则默认值为 False;如果使用 $(AndroidDexTool)=d8,则为 True

AndroidEnableGooglePlayStoreChecks

一个布尔属性,允许开发人员禁用以下 Google Play 商店检查:XA1004、XA1005 和 XA1006。 对于目标不是 Google Play 商店并且不想运行这些检查的开发人员来说,禁用这些检查非常有用。

Added in Xamarin.Android 9.4。

AndroidEnableMultiDex

此布尔属性确定是否将在最终的 .apk 中使用 multi-dex 支持。

Xamarin.Android 5.1 中增加了对该属性的支持。

该属性默认为 False

AndroidEnablePreloadAssemblies

一个布尔属性,用于控制在进程启动时是否加载应用程序包内绑定的所有托管程序集。

如果设置为 True,在进程启动时,将在调用任何应用程序代码前加载应用程序包内绑定的所有程序集。 预加载程序集是 Xamarin.Android 的作用。

如果设置为 False,将仅根据需要加载程序集。 根据需要加载程序集可让应用程序更快地启动,并且也更符合桌面 .NET 语义。 若要查看节省的时间,请将 debug.mono.log 系统属性设置为包含 timing,然后在 Finished loading assemblies: preloaded 中查找 adb logcat 消息。

使用依赖项注入的应用程序或库可能要求此属性为 True(如果它们又要求 AppDomain.CurrentDomain.GetAssemblies() 返回应用程序捆绑包中的所有程序集),即使不需要程序集也是如此。

对于 Xamarin.Android,此值将默认设置为 True,对于 .NET 6+ 版本将设置为 False

在 Xamarin.Android 9.2 中新增。

AndroidEnableProfiledAot

此布尔属性确定是否在预先编译时使用 AOT 配置文件。

配置文件在 @(AndroidAotProfile) 项组。 此 ItemGroup 包含默认配置文件。 通过删除现有的配置文件并添加你自己的 AOT 配置文件可以进行替代。

在 Xamarin.Android 9.4 中增加了对此属性的支持。

该属性默认为 False

AndroidEnableSGenConcurrent

此布尔属性确定是否使用 Mono 的并发垃圾收集器

在 Xamarin.Android 7.2 中增加了对该属性的支持。

该属性默认为 False

AndroidErrorOnCustomJavaObject

此布尔属性确定类型能否实现 Android.Runtime.IJavaObject,而无需同时继承自 Java.Lang.ObjectJava.Lang.Throwable

class BadType : IJavaObject {
    public IntPtr Handle {
        get {return IntPtr.Zero;}
    }

    public void Dispose()
    {
    }
}

若为 True,这些类型生成 XA4212 错误;否则,生成 XA4212 警告。

Xamarin.Android 8.1 现已开始支持此属性。

该属性默认为 True

AndroidExplicitCrunch

Xamarin.Android 11.0 中不再支持。

AndroidExtraAotOptions

一个字符串属性,在对将 $(AndroidEnableProfiledAot)$(AotAssemblies) 设置为 true 的项目执行 Aot 任务期间,允许将选项传递到 Mono 编译器。 调用 Mono 交叉编译器时,此属性的字符串值会添加到响应文件。

通常情况下,此属性应保留为空,但在某些特殊场景中,它可以提供有用的灵活性。

$(AndroidExtraAotOptions) 属性不同于相关 $(AndroidAotAdditionalArguments) 属性;$(AndroidAotAdditionalArguments) 将逗号分隔的自变量置于 Mono 编译器的 --aot 选项中。 相反,$(AndroidExtraAotOptions) 将完整独立的逗号分隔的选项(如 --verbose--debug)传递到此编译器。

在 Xamarin.Android 10.2 中新增。

AndroidFastDeploymentType

:(冒号)分隔的值列表,$(EmbedAssembliesIntoApk) MSBuild 属性为 False 时可用于控制部署到目标设备上的快速部署目录的类型。 如果资源是快速部署的,则不会嵌入到生成的 .apk 中,这样做可以加快部署时间。 (部署的速度越快,.apk 需要重建的频率越低,安装过程可能会更快。)有效值包括:

  • Assemblies:部署应用程序程序集。
  • Dexes:部署 .dex 文件、本机库和类型映射。 Dexes可以在运行 Android 4.4 或更高版本 (API-19) 的设备上使用。

默认值为 Assemblies

在提交 f0d565fe 中删除了对通过该系统快速部署资源和资产的支持。 这是因为它需要使用已弃用的 API 才能工作。

“实验”。 Xamarin.Android 6.1 中添加了此属性。

AndroidFragmentType

指定生成布局绑定代码时,要用于所有 <fragment> 布局元素的默认完全限定的类型。 默认值为标准 Android Android.App.Fragment 类型。

AndroidGenerateJniMarshalMethods

一个布尔属性,用于在生成过程中生成 JNI 封送方法。 大大减少了在绑定帮助程序代码中对 System.Reflection 的使用。

默认值为 False。 如果开发人员想要使用新的 JNI 封送方法功能,则可以设置

<AndroidGenerateJniMarshalMethods>True</AndroidGenerateJniMarshalMethods>

.csproj 中进行设置。 或者通过如下设置,在命令行上提供该属性:

/p:AndroidGenerateJniMarshalMethods=True

“实验”。 在 Xamarin.Android 9.2 中新增。 默认值为 False

AndroidGenerateJniMarshalMethodsAdditionalArguments

一个字符串属性,可用于将参数添加到 jnimarshalmethod-gen.exe 调用中,并且可用于调试,因此可以使用 -v-d--keeptemp 等选项。

默认值为空字符串。 可以在 .csproj 文件中或命令行上设置。 例如:

<AndroidGenerateJniMarshalMethodsAdditionalArguments>-v -d --keeptemp</AndroidGenerateJniMarshalMethodsAdditionalArguments>

或:

/p:AndroidGenerateJniMarshalMethodsAdditionalArguments="-v -d --keeptemp"

在 Xamarin.Android 9.2 中新增。

AndroidGenerateLayoutBindings

如果设置为 true,则允许生成布局代码隐藏,如果设置为 false,则完全禁止。 默认值为 false

AndroidGenerateResourceDesigner

默认值为 true。 设置为 false 时,禁用 Resource.designer.cs 的生成。

已在 .NET 6 RC 1 中添加。 在 Xamarin.Android 中不受支持。

AndroidHttpClientHandlerType

控制 System.Net.Http.HttpClient 默认构造函数使用的默认 System.Net.Http.HttpMessageHandler 实现。 值是 HttpMessageHandler 子类的程序集限定类型名称,适用于 System.Type.GetType(string)。 此属性最常见的值为:

  • Xamarin.Android.Net.AndroidClientHandler:使用 Android Java API 执行网络请求。 当基础 Android 版本支持 TLS 1.2 时,使用 Java API 可以访问 TLS 1.2 URL。 只有 Android 5.0 及更高版本通过 Java 可靠提供 TLS 1.2 支持。

    对应于 Visual Studio 属性页中的 Android 选项,以及 Visual Studio for Mac 属性页中的 AndroidClientHandler 选项。

    当 Visual Studio 中“最低 Android 版本”配置为“Android 5.0 (Lollipop)”或更高版本,或者当 Visual Studio for Mac 中“目标平台”设置为“最新和最高版本”时,新建项目向导为新项目选择此选项

  • 取消设置/空字符串,等效于 System.Net.Http.HttpClientHandler, System.Net.Http

    对应于 Visual Studio 属性页中的 Default 选项。

    当 Visual Studio 中“最低 Android 版本”配置为“Android 4.4.87”或更低版本,或者当 Visual Studio for Mac 中“目标平台”设置为“新式开发”或“最大兼容性”时,新建项目向导为新项目选择此选项

  • System.Net.Http.HttpClientHandler, System.Net.Http:使用托管 HttpMessageHandler

    对应于 Visual Studio 属性页中的 Managed 选项。

注意

如果需要在低于 Android 5.0 的版本上具备 TLS 1.2 支持,或者 TLS 1.2 支持需要与 System.Net.WebClient 及相关 API 一起使用,则应使用 $(AndroidTlsProvider)

注意

通过设置 XA_HTTP_CLIENT_HANDLER_TYPE 环境变量,可以支持 $(AndroidHttpClientHandlerType) 属性。 在文件中找到的 $XA_HTTP_CLIENT_HANDLER_TYPE 值(生成操作为 @(AndroidEnvironment))优先级更高。

已在 Xamarin.Android 6.1 中添加。

AndroidIncludeWrapSh

一个布尔值,指示是否应将 Android 包装器脚本 (wrap.sh) 打包到 APK 中。 默认值为 false,因为包装器脚本可能会严重影响应用程序的启动和运行方式,并且应仅在必要时才包含该脚本,例如,当调试或以其他方式更改应用程序启动/运行时行为时。

使用 生成操作将该脚本添加到项目中,@(AndroidNativeLibrary) 生成操作,因为它与特定于体系结构的本机库位于同一目录中,并且必须命名为 wrap.sh

指定 wrap.sh 脚本路径的最简单方法是将其放在以目标体系结构命名的目录中。 如果每个体系结构只有一个 wrap.sh,则此方法适用:

<AndroidNativeLibrary Include="path/to/arm64-v8a/wrap.sh" />

但是,如果出于不同目的,项目的每个体系结构需要多个 wrap.sh,则此方法将不可行。 在这种情况下,可以使用 AndroidNativeLibraryLink 元数据指定名称:

<AndroidNativeLibrary Include="/path/to/my/arm64-wrap.sh">
  <Link>lib\arm64-v8a\wrap.sh</Link>
</AndroidNativeLibrary>

如果使用的是 Link 元数据,则其值中指定的路径必须是相对于 APK 根目录的有效的、本机的、特定于体系结构的库路径。 路径的格式为 lib\ARCH\wrap.sh,其中 ARCH 可以是以下内容之一:

  • arm64-v8a
  • armeabi-v7a
  • x86_64
  • x86

AndroidJavadocVerbosity

指定在绑定项目中导入 Javadoc 文档时,C#XML 文档注释的“详细”程度。

需要使用 @(JavaSourceJar) 生成操作。

$(AndroidJavadocVerbosity) 属性类似于枚举,其可能值为 fullintellisense

默认值为 intellisense

Xamarin.Android 11.3 中添加了对此属性的支持。

AndroidKeyStore

一个布尔值,指示是否应使用自定义签名信息。 默认值是 False,这意味着将使用默认的调试签名密钥来对包进行签名。

AndroidLaunchActivity

要启动的 Android 活动。

AndroidLinkMode

指定应对 Android 包中包含的程序集执行的链接的类型。 仅在 Android 应用程序项目中使用。 默认值是 SdkOnly。 有效值为:

  • None:不会尝试链接。

  • SdkOnly:仅在基类库上执行链接,而不是用户程序集。

  • Full:将在基类库和用户程序集上执行链接。

    注意

    使用“完整”这一 AndroidLinkMode 值常会导致应用损坏,尤其是使用放射时。 除非你真正知道在做什么,否则请避免。

<AndroidLinkMode>SdkOnly</AndroidLinkMode>

AndroidLinkResources

true 时,生成系统将链接所有程序集中 Resource.Designer.cs Resource 类的嵌套类型。 使用这些类型的 IL 代码将更新为直接使用值,而不是访问字段。

链接嵌套类型可能会对减少 apk 大小产生较小影响,也有助于提高启动性能。 仅链接“发布”版本。

“实验”。 仅设计用于处理代码,例如

var view = FindViewById(Resources.Ids.foo);

不支持任何其他方案(如反射)。

Xamarin.Android 11.3 中添加了对此属性的支持

AndroidLinkSkip

指定不应链接的程序集名称的列表,以分号分隔 (;),且没有文件扩展名。 仅在 Android 应用程序项目中使用。

<AndroidLinkSkip>Assembly1;Assembly2</AndroidLinkSkip>

AndroidLinkTool

枚举样式的属性,有效值为 proguardr8。 指示用于 Java 代码的代码压缩器。 默认值为空字符串,如果 $(AndroidEnableProguard)True,则为 proguard。 请参阅有关 D8 和 R8 的文档。

AndroidLintEnabled

一个布尔属性,允许开发人员在打包过程中运行 android lint 工具。

$(AndroidLintEnabled) 为 True 时,使用以下属性:

也可以使用以下生成操作:

请参阅 Lint 帮助,了解有关 Android lint 工具的详细信息。

AndroidLintEnabledIssues

一个字符串属性,是要启用的 lint 问题的逗号分隔列表。

仅在 $(AndroidLintEnabled)=True 时使用。

AndroidLintDisabledIssues

一个字符串属性,是要禁用的 lint 问题的逗号分隔列表。

仅在 $(AndroidLintEnabled)=True 时使用。

AndroidLintCheckIssues

一个字符串属性,是要检查的 lint 问题的逗号分隔列表。

仅在 $(AndroidLintEnabled)=True 时使用。

请注意:只检查这些问题。

AndroidManagedSymbols

此布尔属性控制是否生成序列点,以便可以从 Release 堆栈跟踪中提取文件名和行号信息。

已在 Xamarin.Android 6.1 中添加。

AndroidManifest

指定用于应用 AndroidManifest.xml 的模板的文件名。 在生成期间,将合并任何其他必要的值以生成实际的 AndroidManifest.xml$(AndroidManifest) 必须在 /manifest/@package 属性中包含程序包名称。

AndroidManifestMerger

指定用于合并 AndroidManifest.xml 文件的实现。 这是一个枚举样式的属性,其中 legacy 选择原始 C# 实现,manifestmerger.jar 选择 Google 的 Java 实现。

默认值当前为 legacy。 在未来版本中,此值将更改为 manifestmerger.jar,以使行为与 Android Studio 一致。

Google 的合并器启用了 xmlns:tools="http://schemas.android.com/tools" 支持,如 Android 文档中所述。

在 Xamarin.Android 10.2 中引入

AndroidManifestMergerExtraArgs

一个字符串属性,用于向 Android 文档工具提供自变量。

如果需要工具的详细输出,可以将以下内容添加到 .csproj

<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>

在 Xamarin.Android 11.x 中引入

AndroidManifestType

枚举样式的属性,有效值为 XamarinGoogleV2。 这控制 InstallAndroidDependencies 目标使用哪个存储库来确定哪些 Android 包和包版本可用并且可以安装。

XamarinVisual Studio SDK Manager 中的“批准的列表(推荐)”存储库。

GoogleV2Visual Studio SDK Manager 中的“完整列表(不支持)”存储库。

在 Xamarin.Android 13.0 中添加。 在 Xamarin.Android 13.0 中,如果未设置 $(AndroidManifestType),则使用 Xamarin

在 Xamarin.Android 13.0 之前,设置 $(AndroidManifestType) 不起作用,并且使用 GoogleV2

AndroidManifestPlaceholders

AndroidManifest.xml 的键值替换对列表,采用分号分隔,其中每个对的格式为 key=value

例如,assemblyName=$(AssemblyName) 的属性值定义一个 ${assemblyName} 占位符,随后该占位符可以出现在 AndroidManifest.xml 中

<application android:label="${assemblyName}"

这提供了一种将生成过程中的变量插入 AndroidManifest.xml 文件的方法

AndroidMultiDexClassListExtraArgs

一个字符串属性,允许开发人员在生成 multidex.keep 文件时将自变量传递给 com.android.multidex.MainDexListBuilder

具体事例:是否在 dx 编译期间发生以下错误。

com.android.dex.DexException: Too many classes in --main-dex-list, main dex capacity exceeded

如果发生此错误,可以向 .csproj 添加以下内容。

<DxExtraArguments>--force-jumbo </DxExtraArguments>
<AndroidMultiDexClassListExtraArgs>--disable-annotation-resolution-workaround</AndroidMultiDexClassListExtraArgs>

这将允许 dx 步骤成功。

在 Xamarin.Android 8.3 中新增。

AndroidPackageFormat

枚举样式的属性,有效值为 apkaab。 指示希望将 Android 应用程序打包为 APK 文件还是 Android 应用程序包。 应用程序包是一种新的格式,适用于要在 Google Play 上提交的 Release 版本。 默认值为 apk

$(AndroidPackageFormat) 设置为 aab 时,系统将设置 Android 应用程序包所必需的其他 MSBuild 属性:

.net 6 将弃用此属性。 用户应切换到较新的 AndroidPackageFormats

AndroidPackageFormats

一个分号分隔的属性,其有效值为 apkaab。 指示希望将 Android 应用程序打包为 APK 文件还是 Android 应用程序包。 应用程序包是一种新的格式,适用于要在 Google Play 上提交的 Release 版本。

生成发布版本时,可能需要生成两者和 aab 以及一个 apk,以便分发到各个商店。

AndroidPackageFormats 设置为 aab;apk 将导致生成两者。 将 AndroidPackageFormats 设置为 aabapk 将只生成一个文件。

对于 .net 6,AndroidPackageFormats 将仅对 Release 版本设置为 aab;apk。 建议继续使用 apk 进行调试。

对于旧版 Xamarin.Android,默认值为 ""。 因此,旧版 Xamarin.Android 默认情况下不会生成这两者作为发布版本的一部分。 如果用户想要生成这两个输出,则需要在其 Release 配置中定义以下内容。

<AndroidPackageFormats>aab;apk</AndroidPackageFormats>

还需要删除该配置的现有 AndroidPackageFormat(如果有)。

在 Xamarin.Android 11.5 中添加。

AndroidPackageNamingPolicy

枚举样式的属性,用于指定生成的 Java 源代码的 Java 包名称。

在 Xamarin.Android 10.2 和更高版本中,仅支持值 LowercaseCrc64

在 Xamarin.Android 10.1 中,过渡值 LowercaseMD5 曾可用于重新切换到原始 Java 包名称样式,Xamarin.Android 10.0 和更早版本中也是如此。 Xamarin.Android 10.2 删除了此选项,以便更好地与执行 FIPS 合规性的生成环境兼容。

在 Xamarin.Android 10.1 中新增。

AndroidProguardMappingFile

指定 r8-printmapping proguard 规则。 这意味着 mapping.txt 文件将在 $(OutputPath) 文件夹中生成。 将包上传到 Google Play 应用商店时,可以使用此文件。

默认情况下,使用 AndroidLinkTool=r8 时会自动生成此文件,并将生成以下文件 $(OutputPath)mapping.txt

如果不想生成此映射文件,则可以使用 AndroidCreateProguardMappingFile 属性停止创建它。 在项目中添加以下内容

<AndroidCreateProguardMappingFile>False</AndroidCreateProguardMappingFile>

或在命令行上使用 -p:AndroidCreateProguardMappingFile=False

Xamarin.Android 11.2 中添加了此属性。

AndroidR8IgnoreWarnings

指定 r8-ignorewarnings proguard 规则。 这允许 r8 继续进行 dex 编译(即使遇到特定的警告)。 默认值为 True,但可以设置为 False 以强制实施更严格的行为。 有关详细信息,请参阅 ProGuard 手册

在 Xamarin.Android 10.3 中新增。

AndroidR8JarPath

指向 r8.jar 的路径,可与 r8 dex 编译器和压缩器结合使用。 默认值是 Xamarin.Android 安装中的路径。 有关详细信息,请参阅 D8 和 R8 相关文档。

AndroidResgenExtraArgs

指定在处理 Android 资产和资源时传递给 aapt 命令的命令行选项。

AndroidResgenFile

指定要生成的资源文件的名称。 默认模板将其设置为 Resource.designer.cs

AndroidSdkBuildToolsVersion

Android SDK 生成工具包提供 aapt 和 zipalign 工具等。 可以同时安装多个不同版本的生成工具包。 若要选择用于打包的生成工具包,请检查是否有“首选”生成工具版本。如果有,请使用它;如果没有“首选”版本,请使用版本最高的已安装生成工具包。

$(AndroidSdkBuildToolsVersion) MSBuild 属性包含首选的生成工具版本。 如果(例如)已知上一 aapt 版本可用,而此时最新的 aapt 发生崩溃,则 Xamarin.Android 生成系统会在 Xamarin.Android.Common.targets 中提供默认值,并且可在项目文件中替代该默认值,选择备用的生成工具版本。

AndroidSigningKeyAlias

指定密钥存储中密钥的别名。 这是创建密钥存储时使用的 keytool -alias 值。

AndroidSigningKeyPass

指定密钥存储文件中密钥的密码。 这是在 keytool 要求“输入 $(AndroidSigningKeyAlias) 的密匙密码”时输入的值。

在 Xamarin.Android 10.0 和更早的版本中,此属性仅支持纯文本密码。

在 Xamarin.Android 10.1 和更高版本中,此属性还支持 env:file: 前缀,它们可用于指定包含密码的环境变量或文件。 这些选项提供了一种防止密码显示在生成日志中的方法。

例如,使用名称为 AndroidSigningPassword 的环境变量:

<PropertyGroup>
    <AndroidSigningKeyPass>env:AndroidSigningPassword</AndroidSigningKeyPass>
</PropertyGroup>

使用位于 C:\Users\user1\AndroidSigningPassword.txt 的文件:

<PropertyGroup>
    <AndroidSigningKeyPass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningKeyPass>
</PropertyGroup>

注意

$(AndroidPackageFormat) 设置为 aab 时,不支持 env: 前缀。

AndroidSigningKeyStore

指定由 keytool 创建的密钥存储文件的文件名。 这对应于提供给 keytool -keystore 选项的值。

AndroidSigningStorePass

指定 $(AndroidSigningKeyStore) 的密码。 这是在创建密钥存储文件并要求“输入密钥存储密码:”时为 keytool 提供的值。

在 Xamarin.Android 10.0 和更早的版本中,此属性仅支持纯文本密码。

在 Xamarin.Android 10.1 和更高版本中,此属性还支持 env:file: 前缀,它们可用于指定包含密码的环境变量或文件。 这些选项提供了一种防止密码显示在生成日志中的方法。

例如,使用名称为 AndroidSigningPassword 的环境变量:

<PropertyGroup>
    <AndroidSigningStorePass>env:AndroidSigningPassword</AndroidSigningStorePass>
</PropertyGroup>

使用位于 C:\Users\user1\AndroidSigningPassword.txt 的文件:

<PropertyGroup>
    <AndroidSigningStorePass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningStorePass>
</PropertyGroup>

注意

$(AndroidPackageFormat) 设置为 aab 时,不支持 env: 前缀。

AndroidSigningPlatformKey

指定要用于对 apk 进行签名的密钥文件。 这仅在生成 system 应用程序时使用。

Xamarin.Android 11.3 中添加了对此属性的支持。

AndroidSigningPlatformCert

指定要用于对 apk 进行签名的证书文件。 这仅在生成 system 应用程序时使用。

Xamarin.Android 11.3 中添加了对此属性的支持。

AndroidSupportedAbis

此字符串属性包含应加入 .apk 中的分号 (;) 分隔的 ABI 列表。

支持的值包括:

  • armeabi-v7a
  • x86
  • arm64-v8a:需要 Xamarin.Android 5.1 及更高版本。
  • x86_64:需要 Xamarin.Android 5.1 及更高版本。

AndroidTlsProvider

一个字符串值,指定应在应用程序中使用哪个 TLS 提供程序。 可能的值为:

  • 取消设置/空字符串:在 Xamarin.Android 7.3 及更高版本中,这相当于 btls

    在 Xamarin.Android 7.1 中,这等效于 legacy

    这对应于 Visual Studio 属性页中的“默认”设置

  • btls:使用 Boring SSLHttpWebRequest 进行 TLS 通信。

    这样,可以对所有 Android 版本使用 TLS 1.2。

    这对应于 Visual Studio 属性页中的“Native TLS 1.2+”设置

  • legacy:在 Xamarin.Android 10.1 及更早版本中,使用历史托管 SSL 实现进行网络交互。 此支持 TLS 1.2。

    这对应于 Visual Studio 属性页中的“托管 TLS 1.0”设置

    在 Xamarin.Android 10.2 和更高版本中,将忽略此值并使用 btls 设置。

  • default:此值不太可能在 Xamarin.Android 项目中使用。 建议改用的值为空列表,它对应于 Visual Studio 属性页中的“默认”设置

    Visual Studio 属性页中不提供 default 值。

    这当前等效于 legacy

已在 Xamarin.Android 7.1 中添加。

AndroidUseAapt2

一个布尔属性,使开发人员能够控制 aapt2 打包工具的使用。 默认情况下,这将为 False,并且 Xamarin.Android 将使用 aapt。 如果开发者要使用新的 aapt2 功能,则执行以下操作:

<AndroidUseAapt2>True</AndroidUseAapt2>

.csproj 中进行设置。 或者在命令行上提供该属性:

/p:AndroidUseAapt2=True

Xamarin.Android 8.3 中添加了此属性。 在 Xamarin.Android 11.2 中已弃用将 AndroidUseAapt2 设置为 false

AndroidUseApkSigner

一个布尔属性,允许开发人员使用 apksigner 工具,而不是 jarsigner

在 Xamarin.Android 8.2 中新增。

AndroidUseDefaultAotProfile

允许开发人员禁止使用默认 AOT 配置文件的布尔属性。

若要禁止使用默认 AOT 配置文件,则将此属性设置为 false

在 Xamarin.Android 10.1 中新增。

AndroidUseInterpreter

一个布尔属性,导致 .apk 包含 mono 解释器,而不是普通 JIT。

“实验”。

Xamarin.Android 11.3 中添加了对此属性的支持。

AndroidUseLegacyVersionCode

一个布尔属性,允许开发人员将 versionCode 计算还原到先前的 Xamarin.Android 8.2 旧行为。 这只能适用于在 Google Play 商店中已发布应用程序的开发人员。 强烈建议使用新 $(AndroidVersionCodePattern) 属性。

在 Xamarin.Android 8.2 中新增。

AndroidUseManagedDesignTimeResourceGenerator

一个布尔属性,将切换设计时生成以使用受管理资源分析程序,而不是 aapt

在 Xamarin.Android 8.1 中新增。

AndroidUseSharedRuntime

此布尔属性用于确定是否需要“共享运行时包”才能在目标设备上运行应用程序。 依靠共享运行时包以允许应用程序包更小,加快包创建和部署过程,从而加快生成/部署/调试周转周期。

在 Xamarin.Android 11.2 之前,对于调试版本,该属性应为 True,对于发行项目,该属性应为 False

Xamarin.Android 11.2 中已删除此属性

AndroidVersionCode

MSBuild 属性,可用作 AndroidManifest.xml 文件中 /manifest/@android:versionCode 的替代方法。 若要选择加入此功能,还必须启用 <GenerateApplicationManifest>true</GenerateApplicationManifest>。 这将是 .NET 6 中的默认设置。

如果使用 $(AndroidCreatePackagePerAbi)$(AndroidVersionCodePattern),则忽略此属性。

@android:versionCode 是必须为每个 Google Play 版本递增的整数值。 有关 /manifest/@android:versionCode 要求的详细信息,请参阅 Android 文档

Xamarin.Android 11.3 中添加了对此属性的支持。

AndroidVersionCodePattern

一个字符串属性,允许开发人员自定义清单中的 versionCode。 有关决定 versionCode 的信息,请参阅为 APK 创建版本代码

例如,如果 abiarmeabi,清单中的 versionCode123,则当 $(AndroidCreatePackagePerAbi) 为 True 时,{abi}{versionCode} 将生成 1123 的 versionCode,否则将生成值 123。 如果 abix86_64,则清单中的 versionCode44。 当 $(AndroidCreatePackagePerAbi) 为 True 时,这将生成 544,否则会生成值 44

如果我们包含左填充格式字符串 {abi}{versionCode:0000},则会生成 50044,因为我们用 0 在左边填充 versionCode。 此外,也可以使用十进制填充(例如 ),{abi}{versionCode:D4},其作用与前面的示例相同。

由于值必须是整数,因此只支持 0 和 Dx 填充格式字符串。

预定义的键项

  • abi – 插入应用的目标 abi

    • 2 – armeabi-v7a
    • 3 – x86
    • 4 – arm64-v8a
    • 5 – x86_64
  • minSDK – 插入 AndroidManifest.xml11 中支持的最小 Sdk 值(如果未定义)。

  • versionCode – 直接从 Properties\AndroidManifest.xml 使用版本代码。

你可以使用(下文中定义的)$(AndroidVersionCodeProperties) 属性定义自定义项。

默认情况下,值设置为 {abi}{versionCode:D6}。 如果开发人员要保留旧行为,可将 $(AndroidUseLegacyVersionCode) 属性设置为 true,从而替代默认值

已在 Xamarin.Android 7.2 中添加。

AndroidVersionCodeProperties

一个字符串属性,允许开发人员定义要与 $(AndroidVersionCodePattern) 配合使用的自定义项。 它们采用 key=value 对的形式。 value 中的所有项都应是整数值。 例如:screen=23;target=$(_AndroidApiLevel)。 正如你所看到的,你可以使用字符串中现有或自定义的 MSBuild 属性。

已在 Xamarin.Android 7.2 中添加。

ApplicationId

一个 MSBuild 属性,可用作 AndroidManifest.xml 文件中 /manifest/@package 的替代方法。 若要选择加入此功能,还必须启用 <GenerateApplicationManifest>true</GenerateApplicationManifest>。 这将是 .NET 6 中的默认设置。

有关 /manifest/@package 要求的详细信息,请参阅 Android 文档

Xamarin.Android 11.3 中添加了对此属性的支持。

ApplicationTitle

一个 MSBuild 属性,可用作 AndroidManifest.xml 文件中 /manifest/application/@android:label 的替代方法。 若要选择加入此功能,还必须启用 <GenerateApplicationManifest>true</GenerateApplicationManifest>。 这将是 .NET 6 中的默认设置。

有关 /manifest/application/@android:label 要求的详细信息,请参阅 Android 文档

Xamarin.Android 11.3 中添加了对此属性的支持。

ApplicationVersion

一个 MSBuild 属性,可用作 AndroidManifest.xml 文件中 /manifest/@android:versionName 的替代方法。 若要选择加入此功能,还必须启用 <GenerateApplicationManifest>true</GenerateApplicationManifest>。 这将是 .NET 6 中的默认设置。

有关 /manifest/@android:versionName 要求的详细信息,请参阅 Android 文档

Xamarin.Android 11.3 中添加了对此属性的支持。

AotAssemblies

此布尔属性确定程序集是否会被预编译为本机代码并包含在 .apk 中。

Xamarin.Android 5.1 中增加了对该属性的支持。

该属性默认为 False

AProfUtilExtraOptions

要传递给 aprofutil 的其他选项。

BeforeGenerateAndroidManifest

此属性中列出的 MSBuild 目标将在 _GenerateJavaStubs 之前直接运行。

Added in Xamarin.Android 9.4。

配置

指定要使用的生成配置,例如“调试”或“发行”。 配置属性用于确定其他属性(确定目标行为)的默认值。 其他配置可能会在 IDE 中创建。

默认情况下Debug 配置将导致 InstallSignAndroidPackage 目标创建更小的 Android 包,这需要提供其他文件和包进行操作。

默认 Release 配置将导致 InstallSignAndroidPackage 目标创建独立的 Android 包,无需安装其他任何包或文件即可使用此包。

DebugSymbols

一个布尔值,与 $(DebugType) 属性相结合,确定 Android 包是否可调试。 可调试包包含调试符号,将 //application/@android:debuggable 属性设置为 true,并自动添加 INTERNET 权限,以便调试器可以附加到该过程。 如果 DebugSymbolsTrue并且 DebugType 是空字符串或 Full,则应用程序是可调试的。

DebugType

指定要生成的调试符号的类型作为版本的一部分,它还会影响应用程序是否可调试。 可能的值包括:

  • Full:生成 Full 符号。 如果 DebugSymbols MSBuild 属性也为 True,则应用程序包是可调试的。

  • PdbOnly:生成 "PDB" 符号。 应用程序包将不可调试。

如果 DebugType 未设置或为空字符串,则 DebugSymbols 属性控制应用程序是否可调试。

EmbedAssembliesIntoApk

此布尔属性确定应用的程序集是否应嵌入到应用程序包中。

对于发行版本,该属性应为 True,对于调试版本应为 False。 如果“快速部署”不支持目标设备,则调试版本中可能必须为 True

此属性为 False 时,$(AndroidFastDeploymentType) MSBuild 属性还会控制嵌入到 .apk 中的内容,这会影响部署和重新生成时间。

EnableLLVM

此布尔属性确定在将程序集预编译为本机代码时是否使用 LLVM。

必须安装 Android NDK 才能生成启用了此属性的项目。

Xamarin.Android 5.1 中增加了对该属性的支持。

该属性默认为 False

除非 $(AotAssemblies) MSBuild 属性为 True,否则该属性将被忽略。

EnableProguard

此布尔属性确定是否在打包过程中运行 proguard 以链接 Java 代码。

Xamarin.Android 5.1 中增加了对该属性的支持。

该属性默认为 False

如果为 True,则 @(ProguardConfiguration) 文件将用于控制 proguard 的执行。

GenerateApplicationManifest

启用或禁用在最终 AndroidManifest.xml 文件中发出值的以下 MSBuild 属性:

在 .NET 6 中,默认值 $(GenerateApplicationManifest)true,在“旧版”Xamarin.Android 中为 false

Xamarin.Android 11.3 中添加了对此属性的支持。

JavaMaximumHeapSize

指定在打包过程中构建 .dex 文件时使用的 java-Xmx 参数值的值。 如果未指定,则 -Xmx 选项向 java 提供值 1G。 我们发现与其他平台相比,Windows 常常要求这样设置。

通过如下更改自定义值:

<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>

JavaOptions

指定在生成 .dex 文件时传递给 java 的命令行选项。

JarsignerTimestampAuthorityCertificateAlias

此属性允许指定时间戳颁发机构密钥存储中的别名。 有关详细信息,请参阅 Java 签名时间戳支持文档。

<PropertyGroup>
    <JarsignerTimestampAuthorityCertificateAlias>Alias</JarsignerTimestampAuthorityCertificateAlias>
</PropertyGroup>

JarsignerTimestampAuthorityUrl

此属性允许指定时间戳颁发机构服务的 URL。 这可确保 .apk 签名包含时间戳。 有关详细信息,请参阅 Java 签名时间戳支持文档。

<PropertyGroup>
    <JarsignerTimestampAuthorityUrl>http://example.tsa.url</JarsignerTimestampAuthorityUrl>
</PropertyGroup>

LinkerDumpDependencies

一个布尔属性,允许生成链接器依赖项文件。 可将此文件用作 illinkanalyzer 工具的输入。

名为 linker-dependencies.xml.gz 的依赖项文件已写入项目目录。 在 .NET5/6 上,它写在 obj/<Configuration>/android<ABI>/linked 目录中的链接程序集旁边。

默认值为 False。

MandroidI18n

指定应用程序附带的国际化支持,例如排序规则和排序表。 该值是以下一个或多个不区分大小写值的以逗号或分号分隔的列表:

  • 无:不包含其他编码。

  • 全部:包含所有可用的编码。

  • CJK:包括中文、日语和朝鲜语编码,例如日语(EUC) [enc-jp, CP51932]、日语(Shift-JIS) [iso-2022-jp, shift_jis, CP932]、日语(JIS) [CP50220]、简体中文(GB2312) [gb2312, CP936]、朝鲜语(UHC) [ks_c_5601-1987, CP949]、朝鲜语(EUC) [euc-kr, CP51949]、繁体中文(Big5) [big5, CP950] 以及简体中文(GB18030) [GB18030, CP54936]。

  • 中东:包括中东编码,例如土耳其语(Windows) [iso-8859-9, CP1254]、希伯来语(Windows) [windows-1255, CP1255]、阿拉伯语 (Windows) [windows-1256, CP1256]、阿拉伯语(ISO) [iso-8859-6, CP28596]、希伯来语(ISO) [iso-8859-8, CP28598]、拉丁语 5 (ISO) [iso-8859-9, CP28599] 以及希伯来语(Iso 备用) [iso-8859-8, CP38598]。

  • 其他:包括其他编码,例如西里尔文(Windows) [CP1251]、波罗的语(Windows) [iso-8859-4, CP1257]、越南语(Windows) [CP1258]、西里尔文(KOI8-R) [koi8-r, CP1251]、乌克兰语(KOI8-U) [koi8-u, CP1251]、波罗的语(ISO) [iso-8859-4, CP1257]、西里尔文(ISO) [iso-8859-5, CP1251]、ISCII 天城文 [x-iscii-de, CP57002]、ISCII 孟加拉语 [x-iscii-be, CP57003]、ISCII 泰米尔语 [x-iscii-ta, CP57004]、ISCII 泰卢固语 [x-iscii-te, CP57005]、ISCII 阿萨姆语 [x-iscii-as, CP57006]、ISCII 奥里雅语 [x-iscii-or, CP57007]、ISCII 卡纳达语 [x-iscii-ka, CP57008]、ISCII 马拉雅拉姆语 [x-iscii-ma, CP57009]、ISCII 古吉拉特语 [x-iscii-gu, CP57010]、ISCII 旁遮普语 [x-iscii-pa, CP57011] 以及泰语(Windows) [CP874]。

  • 稀有:包括稀有编码,例如 IBM EBCDIC(土耳其语) [CP1026]、IBM EBCDIC (开放系统拉丁语 1) [CP1047]、IBM EBCDIC (美国-加拿大-欧洲) [CP1140]、IBM EBCDIC (德国-欧洲) [CP1141]、IBM EBCDIC (丹麦/挪威-欧洲) [CP1142]、IBM EBCDIC (芬兰/瑞典-欧洲) [CP1143]、IBM EBCDIC (意大利-欧洲) [CP1144]、IBM EBCDIC (拉丁美洲/西班牙-欧洲) [CP1145]、IBM EBCDIC (英国-欧洲) [CP1146]、IBM EBCDIC (法国-欧洲) [CP1147]、IBM EBCDIC (国际-欧洲) [CP1148]、IBM EBCDIC (冰岛语-欧洲) [CP1149]、IBM EBCDIC (德语) [CP20273]、IBM EBCDIC (丹麦/挪威) [CP20277]、IBM EBCDIC (芬兰/瑞典) [CP20278]、IBM EBCDIC (意大利) [CP20280]、IBM EBCDIC (拉丁美洲/西班牙) [CP20284]、IBM EBCDIC (英国) [CP20285]、IBM EBCDIC (扩展式日文片假名) [CP20290]、IBM EBCDIC (法国) [CP20297]、IBM EBCDIC (阿拉伯语) [CP20420]、IBM EBCDIC (希伯来语) [CP20424]、IBM EBCDIC (冰岛语) [CP20871]、IBM EBCDIC (西里尔字母 - 塞尔维亚语、保加利亚语) [CP21025]、IBM EBCDIC (美国-加拿大) [CP37]、IBM EBCDIC (国际) [CP500]、阿拉伯语 (ASMO 708) [CP708]、欧洲中部 (DOS) [CP852]、西里尔字母(DOS) [CP855]、土耳其语(DOS) [CP857]、欧洲西部(DOS-欧洲) [CP858]、希伯来语(DOS) [CP862]、阿拉伯语(DOS) [CP864]、俄语(DOS) [CP866]、希腊语(DOS) [CP869]、IBM EBCDIC (拉丁语 2) [CP870] 以及 IBM EBCDIC (希腊语) [CP875]。

  • 西部:包括西部编码,例如 欧洲西部(Mac) [macintosh, CP10000]、冰岛语 (Mac) [x-mac-icelandic, CP10079]、欧洲中部(Windows) [iso-8859-2, CP1250]、欧洲西部(Windows) [iso-8859-1, CP1252]、希腊语(Windows) [iso-8859-7, CP1253]、欧洲中部(ISO) [iso-8859-2, CP28592]、拉丁语 3 (ISO) [iso-8859-3, CP28593]、希腊语(ISO) [iso-8859-7, CP28597]、拉丁语 9 (ISO) [iso-8859-15, CP28605]、OEM 美国 [CP437]、欧洲西部(DOS) [CP850]、葡萄牙语(DOS) [CP860]、冰岛语(DOS) [CP861]、法国加拿大语(DOS) [CP863] 以及日耳曼语(DOS) [CP865]。

<MandroidI18n>West</MandroidI18n>

MonoAndroidResourcePrefix

通过 AndroidResource 生成操作指定从文件名开头删除的“路径前缀”。 这是为了允许更改资源所在的位置。

默认值为 Resources。 将此项更改为 res 以获得 Java 项目结构。

MonoSymbolArchive

一个布尔属性,控制是否创建 .mSYM 项目供以后与 mono-symbolicate 一起使用,以从版本堆栈跟踪中提取“真实”文件名和行号信息。

对于已启用调试符号的“发布”应用,默认情况下为 True:$(EmbedAssembliesIntoApk) 为 True,$(DebugSymbols) 为 True,并且 $(Optimize) 为 True。

已在 Xamarin.Android 7.1 中添加。