生成属性

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 编译命令的命令行选项。

在 Xamarin.Android 9.1 中新增。

AndroidAapt2LinkExtraArgs

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

在 Xamarin.Android 9.1 中新增。

AndroidAddKeepAlives

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

默认值适用于 True 发布配置版本。

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

AndroidAotAdditionalArguments

一个字符串属性,该属性允许在任务期间Aot将选项传递给 Mono 编译器,这些项目具有或$(AndroidEnableProfiledAot)设置为 true< a0/$(AotAssemblies)>。 调用 Mono 交叉编译器时,此属性的字符串值会添加到响应文件。

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

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

AndroidAotCustomProfilePath

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

AndroidAotProfiles

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

AndroidAotProfilerPort

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

AndroidAotEnableLazyLoad

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

.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这意味着,例如,无法正确实现 System.IO.Stream API,InputStreamInvoker因为Java.IO.IOException可能会从而不是System.IO.IOException引发 Stream.Read() API。

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

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

    System这意味着,例如InputStreamInvoker,正确实现System.IO.Stream,并且Stream.Read()不会引发Java.IO.IOException实例。 (它可能会引发System.IO.IOException包含值的值Java.IO.IOExceptionException.InnerException

    System 是 .NET 6.0 中的默认值。

在 Xamarin.Android 10.2 中新增。

AndroidBoundInterfacesContainConstants

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

默认值在 True .NET 6 和 False 旧版中。

AndroidBoundInterfacesContainStaticAndDefaultInterfaceMethods

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

默认值在 True .NET 6 和 False 旧版中。

AndroidBoundInterfacesContainTypes

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

默认值在 True .NET 6 和 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 中添加。

默认值位于 jar2xml “legacy”Xamarin.Android 和 class-parse .NET 6 及更高版本。

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

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

一个布尔属性,用于确定是否应创建一 文件(每个 ABI 一 $(AndroidSupportedAbis)个 -)而不是对单个 .apkABI 中的所有 ABI 提供支持。

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

AndroidCreateProguardMappingFile

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

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

<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>

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

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

在 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

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

AndroidDexTool

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

AndroidEnableDesugar

此布尔属性确定是否启用了 desugar。 Android 目前不支持所有 Java 8 功能,默认工具链通过在编译器的javac输出上执行字节代码转换desugar来实现新的语言功能。 默认值为 False using $(AndroidDexTool)=dxTrue using=$(AndroidDexTool)d8

AndroidEnableGooglePlayStoreChecks

一个布尔属性,允许开发人员禁用以下 Google Play Store 检查:XA1004、XA1005 和 XA1006。 禁用这些检查对于不面向 Google Play Store 且不希望运行这些检查的开发人员非常有用。

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()返回应用程序捆绑包中的所有程序集),即使不需要程序集也是如此。

默认情况下,此值将设置为 True Xamarin.Android,并将设置为 False .NET 6+ 内部版本。

在 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

一个字符串属性,该属性允许在任务期间Aot将选项传递给 Mono 编译器,这些项目具有或$(AndroidEnableProfiledAot)设置为 true< a0/$(AotAssemblies)>。 调用 Mono 交叉编译器时,此属性的字符串值会添加到响应文件。

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

$(AndroidExtraAotOptions) 属性不同于相关 $(AndroidAotAdditionalArguments) 属性; $(AndroidAotAdditionalArguments) 将逗号分隔的参数置于 --aot Mono 编译器的选项中。 相反,$(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 属性页中的“默认 ”选项。

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

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

    对应于 Visual Studio 属性页中的“托管 ”选项。

注意

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

注意

通过$(AndroidHttpClientHandlerType)设置环境变量来支持XA_HTTP_CLIENT_HANDLER_TYPE该属性。 $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 代码的代码压缩器。 默认值为空字符串,如果proguard$(AndroidEnableProguard)True。 请参阅有关 D8 和 R8 的文档

AndroidLintEnabled

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

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

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

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

AndroidLintEnabledIssues

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

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

AndroidLintDisabledIssues

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

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

AndroidLintCheckIssues

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

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

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

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 包和包版本可用,并且可以安装。

Xamarin是 Visual Studio SDK 管理器中的“已批准列表”(推荐)存储库。

GoogleV2是 Visual Studio SDK 管理器的完整列表(不支持)存储库。

在 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 版本。

生成发布版本时,可能需要生成和aabapk分发到各种存储。

aab;apk设置为AndroidPackageFormats这两个设置将导致生成这两个项。 设置为 AndroidPackageFormats 任一 aab 文件或 apk 只生成一个文件。

对于 .net 6 AndroidPackageFormats ,将仅 aab;apk 设置为内部 Release 版本。 建议继续使用调试 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

可用作文件中替代 /manifest/@android:versionCode 项的 AndroidManifest.xml MSBuild 属性。 若要选择加入此功能,还必须启用 <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 – 从中插入支持的最小 Sdk 值,或者11如果未定义任何 SDK 值AndroidManifest.xml

  • 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

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

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

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

ApplicationTitle

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

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

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

ApplicationVersion

可用作文件中替代 /manifest/@android:versionName 项的 AndroidManifest.xml MSBuild 属性。 若要选择加入此功能,还必须启用 <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

一个布尔值,该值确定 Android 包是否可调试,并结合$(DebugType)该属性。 可调试包包含调试符号、将 //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 属性:

默认值 $(GenerateApplicationManifest)true .NET 6 和 false “legacy”Xamarin.Android 中。

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

JavaMaximumHeapSize

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

通过如下更改自定义值:

<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>

JavaOptions

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

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]。

  • MidEast:包括中东编码,如 土耳其 (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 Davenagari [x-iscii-de, CP57002], ISCII Bengali [x-iscii-be, CP57003], ISCII 泰米尔语[x-iscii-ta, CP57004], ISCII Telugu [x-iscii-te, CP57005], ISCII Assamese [x-iscii-as, CP57006], ISCII Oriya [x-iscii-or, CP57007]、ISCII Kannada [x-iscii-ka, CP57008]、 ISCII 马拉雅拉姆 [x-iscii-ma, CP57009], ISCII Gujarati [x-iscii-gu, CP57010], ISCII 旁遮普语 [x-iscii-pa, CP57011] 和泰国 (Windows) [CP874]。

  • 罕见:包括罕见编码,如 IBM EBCDIC (土耳其) [CP1026], IBM EBCDIC (Open Systems Latin 1) [CP1047], IBM EBCDIC (US-Canada with Euro) [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 (US-加拿大) [CP37], IBM EBCDIC (国际) [CP500], 阿拉伯语 (ASMO 708) [CP708], 中欧 (DOS) [CP852], 西里尔文 (DOS) [CP855],土耳其语 (DOS) [CP857], 西欧 (DOS with Euro) [CP858], 希伯来语 (DOS) [CP862], 阿拉伯语 (DOS) [CP864], 俄语 (DOS) [CP866], 希腊语 (DOS) [CP869], IBM EBCDIC (拉丁 2) [CP870] 和 IBM EBCDIC (希腊) [CP875]。

  • 西部:包括西欧(Mac)[macintosh, CP10000], 冰岛 (Mac) [x-mac-冰岛语, 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,以便从发布堆栈跟踪中提取“real”文件名和行号信息。

对于已启用调试符号的“Release”应用,默认为 True: $(EmbedAssembliesIntoApk) 为 True,$(DebugSymbols) 为 True,且 $(Optimize) 为 True。

已在 Xamarin.Android 7.1 中添加。