다음을 통해 공유


빌드 속성

MSBuild 속성은 대상의 동작을 제어합니다. 프로젝트 파일(예: MyApp.csproj) 내에 MSBuild PropertyGroup 내에 지정됩니다.

AdbTarget

$(AdbTarget) 속성은 Android 패키지를 설치하거나 제거할 수 있는 Android 대상 디바이스를 지정합니다. 이 속성의 값은 adb 대상 디바이스 옵션과 동일합니다.

AfterGenerateAndroidManifest

이 속성에 나열된 MSBuild 대상은 내부 _GenerateJavaStubs 대상 바로 뒤에 실행됩니다. 여기서 AndroidManifest.xml 파일은 $(IntermediateOutputPath)에 생성됩니다. 생성된 AndroidManifest.xml 파일을 수정하려는 경우 이 확장점을 사용하여 수정할 수 있습니다.

AndroidAapt2CompileExtraArgs

Android 자산 및 리소스를 처리할 때 aapt2 컴파일 명령에 전달할 명령줄 옵션을 지정합니다.

AndroidAapt2LinkExtraArgs

Android 자산 및 리소스를 처리할 때 aapt2 링크 명령에 전달할 명령줄 옵션을 지정합니다.

AndroidAddKeepAlives

링커가 조기 개체 컬렉션을 방지하기 위해 바인딩 프로젝트 내에 GC.KeepAlive() 호출을 삽입할지를 제어하는 부울 속성입니다.

기본값은 True 릴리스 구성 빌드에 대한 것입니다.

AndroidAotAdditionalArguments

작업을 수행하는 동안 Aot $(AndroidEnableProfiledAot) $(AotAssemblies) trueMono 컴파일러에 옵션을 전달할 수 있는 문자열 속성입니다. Mono 크로스 컴파일러를 호출할 때 속성의 문자열 값이 지시 파일에 추가됩니다.

일반적으로 이 속성은 비워 두어야 하지만 일부 특수한 시나리오에서는 유용한 유연성을 제공할 수 있습니다.

속성은 관련 속성과 다릅니다. AOT 컴파일러 옵션의 --aot 일부인 쉼표로 구분된 인수를 포함하는 반면$(AndroidExtraAotOptions), AOT 컴파일러와 같이 --debug --verbose 공백으로 구분된 전체 옵션을 전달합니다. $(AndroidAotAdditionalArguments) $(AndroidExtraAotOptions) $(AndroidAotAdditionalArguments)

AndroidAotCustomProfilePath

프로파일러 데이터를 저장하기 위해 aprofutil이 만들어야 하는 파일입니다.

AndroidAotProfiles

개발자가 명령줄에서 AOT 프로필을 추가할 수 있게 하는 문자열 속성입니다. 세미콜론 또는 쉼표로 구분된 절대 경로 목록입니다.

AndroidAotProfilerPort

프로파일링 데이터를 가져올 때 aprofutil이 연결해야 하는 포트입니다.

AndroidAotEnableLazyLoad

시작 시 미리 로드하는 대신 AOT-d 어셈블리의 지연(지연) 로드를 사용하도록 설정합니다. 기본값은 True 모든 형태의 AOT를 사용하도록 설정된 릴리스 빌드에 대한 것입니다.

.NET 6에 도입되었습니다.

AndroidApkDigestAlgorithm

에 사용할 다이제스트 알고리즘을 지정하는 문자열 값입니다 jarsigner -digestalg.

기본값은 SHA-256입니다.

AndroidApkSignerAdditionalArguments

개발자가 도구에 인수를 제공할 수 있는 문자열 속성입니다 apksigner .

AndroidApkSigningAlgorithm

에 사용할 서명 알고리즘을 지정하는 문자열 값입니다 jarsigner -sigalg.

기본값은 SHA256withRSA입니다.

AndroidApplication

프로젝트가 Android 애플리케이션용(True)인지, Android 라이브러리 프로젝트용(False 또는 없음)인지를 나타내는 부울 값입니다.

Android 패키지에는 <AndroidApplication>True</AndroidApplication>인 프로젝트가 하나만 존재할 수 있습니다. (아쉽게도 이 요구 사항은 확인되지 않으므로 Android 리소스와 관련하여 미묘하고 기괴한 오류가 발생할 수 있습니다.)

AndroidApplicationJavaClass

클래스가 Android.App.Application에서 상속되는 경우 android.app.Application 대신 사용할 전체 Java 클래스 이름입니다.

속성은 $(AndroidApplicationJavaClass) 일반적으로 MSBuild 속성과 같은 다른 속성에 $(AndroidEnableMultiDex) 의해 설정됩니다.

AndroidAvoidEmitForPerformance

시작 성능을 개선하기 위해 "피"할지 여부를 System.Reflection.Emit 결정하는 부울 속성입니다. 기본적으로 이 속성은 True입니다.

사용량은 Android의 System.Reflection.Emit 시작 성능에 눈에 띄는 영향을 줍니다. 이 동작은 기본적으로 다음 기능 스위치에 대해 사용하지 않도록 설정됩니다.

  • Switch.System.Reflection.ForceInterpretedInvoke: 두 번째 호출 MethodInfo.Invoke() 후 또는 ConstructorInfo.Invoke()반복 호출의 성능을 향상시키기 위해 코드가 내보내집니다.

  • Microsoft.Extensions.DependencyInjection.DisableDynamicEngine: 종속성 주입 컨테이너에서 서비스를 검색하는 두 번째 호출 후 반복 호출의 성능을 향상시키기 위해 코드가 내보내집니다.

대부분의 Android 애플리케이션에서 이 동작을 사용하지 않도록 설정하는 것이 좋습니다.

사용 가능한 기능 스위치에 대한 자세한 내용은 기본 클래스 라이브러리 기능 스위치 설명서를 참조하세요.

.NET 8에 추가되었습니다.

AndroidBinUtilsPath

네이티브 링커 ld, 네이티브 어셈블러 as 같은 Android binutils를 포함하는 디렉터리의 경로입니다. 이러한 도구는 Android용 .NET 워크로드에 포함됩니다.

기본값은 $(MonoAndroidBinDirectory)\binutils\bin\입니다.

AndroidBoundExceptionType

Android에서 제공하는 형식용 .NET이 Java 형식과 같은 Android.Runtime.InputStreamInvoker System.IO.StreamAndroid.Runtime.JavaDictionary System.Collections.IDictionary측면에서 .NET 형식 또는 인터페이스를 구현할 때 예외를 전파하는 방법을 지정하는 문자열 값입니다.

  • Java: 원래 Java 예외 형식이 있는 그대로 전파됩니다.

    Java는 예를 들어 InputStreamInvoker API를 제대로 구현 System.IO.Stream 하지 않습니다. 그 이유는 API가 아니라 System.IO.IOExceptionthrow Stream.Read() 될 수 있기 때문 Java.IO.IOException 입니다.

  • System: 원래 Java 예외 형식이 적절한 .NET 예외 형식으로 catch되고 래핑됩니다.

    System는 예를 들어 InputStreamInvoker 제대로 구현되고 Stream.Read() 인스턴스를 System.IO.Streamthrow Java.IO.IOException 하지 않음을 의미합니다. (대신 포함하는 Java.IO.IOException 값을 값으로 throw System.IO.IOExceptionException.InnerException 수 있습니다.)

    기본값은 System입니다.

AndroidBoundInterfacesContainConstants

인터페이스의 바인딩 상수가 지원되는지 또는 클래스를 만드는 IMyInterfaceConsts 해결 방법을 사용할지 여부를 결정하는 부울 속성입니다.

기본값은 True입니다.

AndroidBoundInterfacesContainStaticAndDefaultInterfaceMethods

인터페이스의 기본 멤버와 정적 멤버를 지원하는지 또는 같은 정적 멤버 abstract class MyInterface를 포함하는 형제 클래스를 만드는 이전 해결 방법을 지원하는 부울 속성입니다.

기본값은 True .NET 6 및 False 레거시에 있습니다.

AndroidBoundInterfacesContainTypes

인터페이스에 중첩된 형식이 지원되는지 또는 중첩되지 않은 형식을 만드는 방법(예: IMyInterfaceMyNestedClass.)을 지원하는 부울 속성입니다.

기본값은 True .NET 6 및 False 레거시에 있습니다.

AndroidBuildApplicationPackage

패키지(.apk)를 만들고 서명할지 여부를 나타내는 부울 값입니다. 이 값을 설정하는 것은 다음을 True 사용하는 것과 같습니다. SignAndroidPackage 빌드 대상입니다.

기본적으로 이 속성은 False입니다.

AndroidBundleConfigurationFile

Android 앱 번들을 빌드할 때 bundletool에 대한 구성 파일로 사용할 파일 이름을 지정합니다. 이 파일은 APK를 생성하기 위해 번들이 분할되는 차원과 같이 번들에서 APK가 생성되는 방식을 제어합니다. Android용 .NET은 압축되지 않은 상태로 두는 파일 확장명 목록을 포함하여 이러한 설정 중 일부를 자동으로 구성합니다.

이 속성은 $(AndroidPackageFormat)aab로 설정된 경우에만 해당됩니다.

AndroidBundleToolExtraArgs

앱 번들을 빌드할 때 bundletool 명령에 전달할 명령줄 옵션을 지정합니다.

AndroidClassParser

파일을 구문 분석하는 방법을 .jar 제어하는 문자열 속성입니다. 가능한 값에는 다음이 있습니다.

  • class-parse: JVM의 보조 없이 class-parse.exe를 사용하여 Java 바이트코드의 구문 분석을 바로 수행합니다.

  • jar2xml: 이 값은 사용되지 않으며 더 이상 지원되지 않습니다.

AndroidCodegenTarget

코드 생성 대상 ABI를 제어하는 문자열 속성입니다. 가능한 값에는 다음이 있습니다.

  • XamarinAndroid: 이 값은 사용되지 않으며 더 이상 지원되지 않습니다.

  • XAJavaInterop1: JNI 호출용 Java.Interop을 사용합니다. XAJavaInterop1을 사용하는 바인딩 어셈블리는 Xamarin.Android 6.1 이상을 통해서만 빌드하고 실행할 수 있습니다. Xamarin.Android 6.1 이상은 이 값과 Mono.Android.dll을 바인딩합니다.

기본값은 XAJavaInterop1입니다.

AndroidCreatePackagePerAbi

단일 .apkABI에서 모든 ABI를 지원하는 대신 ABI에 지정된 $(AndroidSupportedAbis)파일 집합을 만들어야 하는지 여부를 결정하는 부울 속성입니다.

ABI 특정 APK 빌드 가이드도 참조하세요.

AndroidCreateProguardMappingFile

프로가드 매핑 파일이 빌드 프로세스의 일부로 생성되는지 여부를 제어하는 부울 속성입니다.

csproj에 다음을 추가하면 파일이 생성되고 속성을 사용하여 AndroidProguardMappingFile 최종 매핑 파일의 위치를 제어합니다.

<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>

파일을 생성할 .aab 때 매핑 파일이 패키지에 자동으로 포함됩니다. Google Play 스토어에 수동으로 업로드할 필요가 없습니다. 파일을 AndroidProguardMappingFile 사용하는 .apk 경우 수동으로 업로드해야 합니다.

기본값은 =r8을 사용하는 $(AndroidLinkTool)경우입니다True.

AndroidDebugKeyAlgorithm

debug.keystore에 사용할 기본 알고리즘을 지정합니다. 기본값은 RSA입니다.

AndroidDebugKeyValidity

debug.keystore에 사용할 기본 유효성을 지정합니다. 기본값은 10950 or 또는 30 * 365 30 years.

AndroidDebugStoreType

debug.keystore에 사용할 키 저장소 파일 형식을 지정합니다. 기본값은 pkcs12입니다.

AndroidDeviceUserId

게스트 또는 회사 계정으로 애플리케이션을 배포하고 디버깅할 수 있습니다. 값은 다음 adb 명령에서 가져오는 uid 값입니다.

adb shell pm list users

위의 명령은 다음 데이터를 반환합니다.

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

uid는 첫 번째 정수 값입니다. 위의 출력 0 에서는 다음과 같습니다 10.

AndroidDexTool

유효한 값이 dx 또는 d8인 열거형 스타일 속성입니다. Android 용 .NET 빌드 프로세스 중에 사용되는 Android 덱스 컴파일러를 나타냅니다. 기본값은 dx입니다. D8 및 R8에 대한 설명서를 참조하세요.

AndroidEnableDesugar

desugar의 활성화 여부를 결정하는 부울 속성입니다. Android는 현재 모든 Java 8 기능을 지원하지 않으며, 기본 도구 체인은 컴파일러의 javac 출력에서 호출desugar된 바이트 코드 변환을 수행하여 새 언어 기능을 구현합니다. 기본값은 사용 중이고 True 사용하는d8=$(AndroidDexTool)$(AndroidDexTool)=dx 경우입니다.False

AndroidEnableGooglePlayStoreChecks

개발자가 Google Play 스토어 검사를 사용하지 않도록 설정할 수 있는 부울 속성입니다. XA1004, XA1005 및 XA1006. 이러한 검사를 사용하지 않도록 설정하면 Google Play 스토어를 대상으로 하지 않고 해당 검사를 실행하지 않으려는 개발자에게 유용합니다.

AndroidEnableMarshalMethods

LLVM 마샬링 메서드를 사용할 수 있는지 여부를 결정하는 부울 속성입니다. LLVM 마샬링 메서드는 Java native 메서드 등록에 네이티브 진입점을 사용하는 앱 시작 최적화입니다.

이 속성은 기본적으로 False입니다.

.NET 8에 추가되었습니다.

AndroidEnableMultiDex

최종 .apk에서 Multi-Dex 지원이 사용되는지 여부를 결정하는 부울 속성입니다.

기본적으로 이 속성은 False입니다.

AndroidEnableObsoleteOverrideInheritance

바인딩된 메서드가 재정의하는 메서드에서 특성을 자동으로 상속 [Obsolete] 하는지 여부를 결정하는 부울 속성입니다.

이 속성에 대한 지원이 .NET 8에 추가되었습니다.

기본적으로 이 속성은 True입니다.

AndroidEnablePreloadAssemblies

애플리케이션 패키지 내에 번들로 제공되는 모든 관리되는 어셈블리가 프로세스 시작 중에 로드되는지 여부를 제어하는 부울 속성입니다.

True로 설정하며 애플리케이션 패키지 내에 번들로 포함된 모든 어셈블리가 프로세스 시작 중에, 애플리케이션 코드가 호출되기 전에 로드됩니다.

False로 설정하면 어셈블리는 필요에 따라서만 로드됩니다. 필요에 따라 어셈블리를 로드하면 애플리케이션이 더 빠르게 시작할 수 있으며 데스크톱 .NET 의미 체계와도 더 일치합니다. 시간 절감 효과를 확인하려면 timing을 포함하도록 debug.mono.log 시스템 속성을 설정하고 adb logcat 내에서 Finished loading assemblies: preloaded 메시지를 찾으세요.

종속성 주입을 사용하는 애플리케이션 또는 라이브러리는 어셈블리가 필요하지 않더라도 애플리케이션 번들 내의 모든 어셈블리를 반환하도록 요구하는 AppDomain.CurrentDomain.GetAssemblies() 경우 이 속성 True 이 필요할 수 있습니다.

기본적으로 이 값은 False입니다.

AndroidEnableProfiledAot

AOT(Ahead-Of-Time) 컴파일 중에 AOT 프로필을 사용할지 여부를 결정하는 부울 속성입니다.

프로필은 항목 그룹에@(AndroidAotProfile) 항목 그룹입니다. 이 ItemGroup에는 기본 프로필이 포함되어 있습니다. 이 프로필은 기존 항목을 제거하고 고유한 AOT 프로필을 추가하여 재정의할 수 있습니다.

기본적으로 이 속성은 False입니다.

AndroidEnableRestrictToAttributes

유효한 값 obsoletedisable을 가진 열거형 스타일 속성입니다.

설정 obsolete하면 Java 주석 androidx.annotation.RestrictTo 으로 표시되거나 내보내지 않은 Java 패키지에 있는 형식 및 멤버가 C# 바인딩의 특성으로 [Obsolete] 표시됩니다.

[Obsolete] 특성에는 Java 패키지 소유자가 API를 "내부"로 간주하고 해당 사용에 대해 경고한다는 설명 메시지가 있습니다.

또한 이 특성에는 "일반" 사용되지 않는 API와 독립적으로 표시하지 않도록 사용자 지정 경고 코드 XAOBS001 가 있습니다.

disable설정하면 추가 특성 없이 API가 정상적으로 생성됩니다. (.NET 8 이전과 동일한 동작입니다.)

API를 자동으로 제거하는 대신 특성을 추가하여 [Obsolete] 기존 패키지와의 API 호환성을 유지했습니다. 주석이 있거나 @RestrictTo 내보내지 않은 Java 패키지에 있는 멤버를 제거하려는 경우 이 속성 외에도 Transform 파일을 사용하여 이러한 형식이 바인딩되지 않도록 할 수 있습니다.

<remove-node path="//*[@annotated-visibility]" />

이 속성에 대한 지원이 .NET 8에 추가되었습니다.

이 속성은 기본적으로 설정됩니다 obsolete .

AndroidEnableSGenConcurrent

Mono의 동시 GC 수집기를 사용할지 여부를 결정하는 부울 속성입니다.

기본적으로 이 속성은 False입니다.

AndroidErrorOnCustomJavaObject

형식을 상속 Java.Lang.ThrowableJava.Lang.Object 하거나 상속하지 않고 구현Android.Runtime.IJavaObject할 수 있는지 여부를 결정하는 부울 속성입니다.

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

    public void Dispose()
    {
    }
}

True이면 XA4212 오류가 생성되고, 그렇지 않으면 XA4212 경고가 생성됩니다.

기본적으로 이 속성은 True입니다.

AndroidExplicitCrunch

이 속성은 더 이상 지원되지 않습니다.

AndroidExtraAotOptions

작업을 수행하는 동안 Aot $(AndroidEnableProfiledAot) $(AotAssemblies) trueMono 컴파일러에 옵션을 전달할 수 있는 문자열 속성입니다. Mono 크로스 컴파일러를 호출할 때 속성의 문자열 값이 지시 파일에 추가됩니다.

일반적으로 이 속성은 비워 두어야 하지만 일부 특수한 시나리오에서는 유용한 유연성을 제공할 수 있습니다.

속성은 $(AndroidExtraAotOptions) 관련 $(AndroidAotAdditionalArguments) 속성 $(AndroidAotAdditionalArguments) 과 다릅니다. Mono 컴파일러의 옵션에 쉼표로 --aot 구분된 인수를 배치합니다. $(AndroidExtraAotOptions)--verbose 또는 --debug 같은 공백으로 구분된 완전 독립 실행형 옵션을 컴파일러에 대신 전달합니다.

AndroidFastDeploymentType

$(EmbedAssembliesIntoApk) MSBuild 속성이 False일 경우 대상 디바이스에서 빠른 배포 디렉터리에 배포할 수 있는 형식을 제어하는 값의 콜론(:)으로 구분된 목록입니다. 리소스가 빠르게 배포될 경우 생성된 .apk에 포함되지 않아 배포 시간을 줄일 수 있습니다. (더 빨리 배포될수록 다시 빌드해야 하는 빈 .apk 도가 줄어들고 설치 프로세스가 더 빨라질 수 있습니다.) 유효한 값은 다음과 같습니다.

  • Assemblies: 애플리케이션 어셈블리를 배포합니다.
  • Dexes: .dex 파일, 네이티브 라이브러리, typemaps를 배포합니다. 이 값은 Dexes Android 4.4 이상(API-19)을 실행하는 디바이스에서만 사용할 수 있습니다.

기본값은 Assemblies입니다.

해당 시스템을 통한 리소스 및 자산의 빠른 배포에 대한 지원이 커밋 f0d565fe에서 제거되었습니다. 이 기능이 작동하려면 사용되지 않는 API를 사용해야 하기 때문입니다.

실험적.

AndroidFragmentType

레이아웃 바인딩 코드를 생성할 때 모든 <fragment> 레이아웃 요소에 사용할 기본 정규화된 형식을 지정합니다. 기본값은 표준 Android Android.App.Fragment 형식입니다.

AndroidGenerateJniMarshalMethods

빌드 프로세스의 일부로 JNI 마샬링 메서드를 생성할 수 있도록 하는 부울 속성입니다. 이는 바인딩 도우미 코드의 System.Reflection 사용량을 크게 줄입니다.

기본값은 False입니다. 개발자가 새 JNI 마샬링 메서드 기능을 사용하려는 경우 설정할 수 있습니다.

<AndroidGenerateJniMarshalMethods>True</AndroidGenerateJniMarshalMethods>

해당 .csproj에서 설정할 수 있습니다. 또는 다음을 통해 명령줄에 속성을 제공합니다.

-p:AndroidGenerateJniMarshalMethods=True

실험적. 기본값은 False입니다.

AndroidGenerateJniMarshalMethodsAdditionalArguments

호출에 매개 변수 jnimarshalmethod-gen.exe 를 추가하는 데 사용할 수 있고 디버깅에 유용하므로 , -d또는 --keeptemp 사용할 수 있는 옵션을 -v사용할 수 있는 문자열 속성입니다.

기본값은 빈 문자열입니다. .csproj 파일 또는 명령줄에서 설정할 수 있습니다. 예시:

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

또는:

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

AndroidGenerateLayoutBindings

true로 설정된 경우 레이아웃 코드 숨김의 생성을 사용하거나, false로 설정된 경우 완전히 사용하지 않습니다.

기본값은 false입니다.

AndroidGenerateResourceDesigner

기본값은 true입니다. 로 false설정하면 .의 Resource.designer.cs생성을 사용하지 않도록 설정합니다.

AndroidHttpClientHandlerType

System.Net.Http.HttpClient 기본 생성자에서 사용할 기본 System.Net.Http.HttpMessageHandler 구현을 제어합니다. 값은 System.Type.GetType(string)과 함께 사용하기에 적합한 HttpMessageHandler 서브클래스의 정규화된 어셈블리 형식 이름입니다.

.NET 6 이상에서 이 속성은 함께 사용할 $(UseNativeHttpHandler)=true때만 적용됩니다. 이 속성의 가장 일반적인 값은 다음과 같습니다.

  • Xamarin.Android.Net.AndroidMessageHandler: Android Java API를 사용하여 HTTP 요청을 수행합니다. 몇 가지 개선 사항이 있는 레거시 Xamarin.Android.Net.AndroidClientHandler 와 유사합니다. HTTP 1.1 및 TLS 1.2를 지원합니다. 기본 HTTP 메시지 처리기입니다.

  • System.Net.Http.SocketsHttpHandler, System.Net.Http: .NET의 기본 메시지 처리기입니다. HTTP/2, TLS 1.2를 지원하며 Grpc.Net.Client와 함께 사용하는 것이 권장되는 HTTP 메시지 처리기입니다. 이 값은 .에 해당합니다 $(UseNativeHttpHandler)=false.

  • unset/empty 문자열(에 해당) System.Net.Http.HttpClientHandler, System.Net.Http

    Visual Studio 속성 페이지의 기본 옵션에 해당합니다.

    새 프로젝트 마법사는 Visual Studio에서 최소 Android 버전Android 4.4.87 이하로 구성되거나 Mac용 Visual Studio에서 대상 플랫폼최신 개발 또는 최대 호환성으로 설정된 경우 새 프로젝트에 대해 이 옵션을 선택합니다.

  • System.Net.Http.HttpClientHandler, System.Net.Http: 관리 HttpMessageHandler되는 .

    Visual Studio 속성 페이지의 관리되는 옵션에 해당합니다.

참고 항목

.NET 6에서 지정하는 형식은 이러한 클래스 중 하나에서 상속되거나 상속되어서 Xamarin.Android.Net.AndroidClientHandler System.Net.Http.HttpClientHandler 는 안 됩니다. "클래식" Xamarin.Android에서 마이그레이션하는 경우 사용자 지정 처리기를 대신 사용 AndroidMessageHandler 하거나 파생합니다.

참고 항목

속성에 대한 지원은 $(AndroidHttpClientHandlerType) 환경 변수를 설정하여 XA_HTTP_CLIENT_HANDLER_TYPE 작동합니다. $XA_HTTP_CLIENT_HANDLER_TYPE 빌드 작업이 있는 파일에서 찾은 값@(AndroidEnvironment) 가 우선적으로 적용됩니다.

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

AndroidIncludeAssetPacksInPackage

이 속성은 자산 팩 빌드가 자동으로 최종 .aab 파일에 포함되는지를 제어합니다. 기본값은 .입니다 true.

경우에 따라 사용자는 중간 릴리스를 릴리스하려고 할 수 있습니다. 이러한 경우 사용자는 자산 팩을 업데이트할 필요가 없습니다. 특히 자산 팩의 내용이 변경되지 않은 경우 이 속성을 사용하면 필요하지 않은 경우 사용자가 자산 팩을 건너뛸 수 있습니다.

.NET 9에 추가됨

AndroidInstallJavaDependencies

기본값은 true 명령줄 빌드에 대한 것입니다. 로 true설정하면 대상을 실행할 때 Java SDK를 설치할 <InstallAndroidDependencies/> 수 있습니다.

이 속성에 대한 지원이 .NET 9에 추가되었습니다.

AndroidJavadocVerbosity

바인딩 프로젝트 내에서 Javadoc 설명서를 가져올 때 C# XML 설명서 주석을 "자세한 정보 표시"로 지정합니다.

을 사용해야 합니다. @(JavaSourceJar) 빌드 작업입니다.

속성은 $(AndroidJavadocVerbosity) 열거형과 유사하며 가능한 값은 full intellisense다음과 같습니다.

기본값은 intellisense입니다.

AndroidKeyStore

사용자 지정 서명 정보를 사용해야 하는지 여부를 나타내는 부울 값입니다. 기본값은 False이며, 이는 기본 디버그 서명 키를 사용하여 패키지에 서명한다는 의미입니다.

AndroidLaunchActivity

시작할 Android 작업입니다.

AndroidLinkMode

Android 패키지 내에 포함된 어셈블리에 대해 수행해야 하는 연결 유형을 지정합니다. Android 애플리케이션 프로젝트 내에서만 사용됩니다. 기본값은 SdkOnly입니다. 유효한 값은 다음과 같습니다.

  • None: 연결을 시도하지 않습니다.

  • SdkOnly: 연결이 기본 클래스 라이브러리에서만 수행되며, 사용자 어셈블리에서는 수행되지 않습니다.

  • Full: 연결이 기본 클래스 라이브러리와 사용자 어셈블리에서 수행됩니다.

    참고 항목

    AndroidLinkModeFull 값을 사용할 경우 앱이 손상될 수 있습니다(특히 리플렉션을 사용하는 경우). 제대로 알지 않는 한 이 값을 사용하지 마세요.

<AndroidLinkMode>SdkOnly</AndroidLinkMode>

AndroidLinkResources

이 경우 true빌드 시스템은 모든 어셈블리에서 Resource.Designer.cs Resource 클래스의 중첩 형식을 연결합니다. 이러한 형식을 사용하는 IL 코드는 필드에 액세스하는 대신 값을 직접 사용하도록 업데이트됩니다.

중첩된 형식을 연결하면 apk 크기를 줄이는 데 작은 영향을 줄 수 있으며 시작 성능에도 도움이 될 수 있습니다. "릴리스" 빌드만 연결됩니다.

실험적. 와 같은 코드로만 작동하도록 설계되었습니다.

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

다른 시나리오(예: 리플렉션)는 지원되지 않습니다.

AndroidLinkSkip

연결해서는 안 되는 어셈블리의 어셈블리 이름 목록을 파일 확장명 없이 세미콜론(;)으로 구분하여 지정합니다. Android 애플리케이션 프로젝트 내에서만 사용됩니다.

<AndroidLinkSkip>Assembly1;Assembly2</AndroidLinkSkip>

AndroidLinkTool

유효한 값이 proguard 또는 r8인 열거형 스타일 속성입니다. Java 코드에 사용되는 코드 축소기를 나타냅니다. 기본값은 빈 문자열이거나 proguard , 아니면 $(AndroidEnableProguard) .입니다 True. D8 및 R8에 대한 설명서를 참조하세요.

AndroidLintEnabled

개발자가 패키징 프로세스의 일부로 Android lint 도구를 실행할 수 있도록 하는 bool 속성입니다.

$(AndroidLintEnabled)=True일 때 사용되는 속성은 다음과 같습니다.

다음 빌드 작업을 사용할 수도 있습니다.

Android lint 도구에 대한 자세한 내용은 Lint 도움말을 참조하세요.

AndroidLintEnabledIssues

사용하도록 설정할 lint 문제의 쉼표로 구분된 목록인 문자열 속성입니다.

=True일 때만 $(AndroidLintEnabled)사용됩니다.

AndroidLintDisabledIssues

사용하지 않도록 설정할 lint 문제의 쉼표로 구분된 목록인 문자열 속성입니다.

=True일 때만 $(AndroidLintEnabled)사용됩니다.

AndroidLintCheckIssues

확인할 lint 문제의 쉼표로 구분된 목록인 문자열 속성입니다.

=True일 때만 $(AndroidLintEnabled)사용됩니다.

참고: 이러한 문제만 확인됩니다.

AndroidManagedSymbols

Release 스택 추적에서 파일 이름과 줄 번호 정보를 추출할 수 있도록 시퀀스 위치를 생성할지 여부를 제어하는 부울 속성입니다.

AndroidManifest

AndroidManifest.xml의 템플릿으로 사용할 파일 이름을 지정합니다. 빌드 중에 필요한 다른 모든 값이 병합되어 실제 AndroidManifest.xml이 생성됩니다. $(AndroidManifest)/manifest/@package 특성에 패키지 이름을 포함해야 합니다.

AndroidManifestMerger

AndroidManifest.xml 파일을 병합하는 구현을 지정합니다. 이 속성은 legacy가 원래 C# 구현을 선택하고 manifestmerger.jar가 Google의 Java 구현을 선택하는 열거형 스타일 속성입니다.

기본값은 현재 manifestmerger.jar입니다. 이전 버전을 사용하려면 csproj에 다음을 추가합니다.

<AndroidManifestMerger>legacy</AndroidManifestMerger>

Google의 병합기는 Android 설명서에 설명된 대로 xmlns:tools="http://schemas.android.com/tools"를 지원합니다.

AndroidManifestMergerExtraArgs

Android 설명서 도구에 인수를 제공하는 문자열 속성입니다.

도구에서 자세한 출력을 원하는 경우 다음 .csproj을 추가할 수 있습니다.

<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>

AndroidManifestType

유효한 값이 Xamarin 또는 GoogleV2인 열거형 스타일 속성입니다. 이 컨트롤은 다음에서 사용되는 리포지토리를 제어합니다. InstallAndroidDependencies 대상을 지정하여 사용할 수 있고 설치할 수 있는 Android 패키지 및 패키지 버전을 결정합니다.

Xamarin는 Visual Studio SDK Manager 내의 승인된 목록(권장) 리포지토리입니다.

GoogleV2Visual Studio SDK Manager 내의 전체 목록(지원되지 않는) 리포지토리입니다.

설정 Xamarin 되지 않은 경우 $(AndroidManifestType) 사용됩니다.

AndroidManifestPlaceholders

AndroidManifest.xml의 키-값 대체 쌍의 세미콜론으로 구분된 목록입니다. 여기서 각 쌍은 key=value 형식입니다.

예를 들어 assemblyName=$(AssemblyName)의 속성 값은 AndroidManifest.xml에 나타날 수 있는 ${assemblyName} 자리 표시자를 정의합니다.

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

이를 통해 빌드 프로세스의 변수를 AndroidManifest.xml 파일에 삽입할 수 있습니다.

AndroidMultiDexClassListExtraArgs

개발자가 파일을 생성할 때 인수를 com.android.multidex.MainDexListBuilder 전달할 수 있는 문자열 속성입니다 multidex.keep .

한 가지 특별한 사례는 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 >입니다.

AndroidPackageFormat

유효한 값이 apk 또는 aab인 열거형 스타일 속성입니다. Android 애플리케이션 을 APK 파일 또는 Android 앱 번들로 패키지할지 여부를 나타냅니다. 앱 번들은 Google Play에서 전송용으로 사용되는 Release 빌드의 새로운 형식입니다. 기본값은 apk입니다.

$(AndroidPackageFormat)aab로 설정되면 Android 앱 번들에 필요한 기타 MSBuild 속성이 설정됩니다.

이 속성은 .net 6에서 더 이상 사용되지 않습니다. 사용자는 최신 AndroidPackageFormats으로 전환해야 합니다.

AndroidPackageFormats

유효한 값 apk 이 있는 세미콜론으로 구분된 속성입니다 aab. Android 애플리케이션 을 APK 파일 또는 Android 앱 번들로 패키지할지 여부를 나타냅니다. 앱 번들은 Google Play에서 전송용으로 사용되는 Release 빌드의 새로운 형식입니다.

릴리스 빌드를 빌드할 때 다양한 저장소에 배포하기 위해 둘 다 aab apk 생성할 수 있습니다.

설정 AndroidPackageFormats 하면 aab;apk 둘 다 생성됩니다. 파일을 하나만 생성하거나 apk 하나만 생성하도록 aab 설정합니다AndroidPackageFormats.

기본값은 aab;apk 빌드 전용 Release 입니다. 디버깅에만 계속 사용하는 apk 것이 좋습니다.

AndroidPackageNamingPolicy

생성된 Java 소스 코드의 Java 패키지 이름을 지정하는 열거형 스타일 속성입니다.

LowercaseCrc64 값만 지원됩니다.

AndroidProguardMappingFile

r8에 대한 -printmapping proguard 규칙을 지정합니다. 즉, mapping.txt 파일이 $(OutputPath) 폴더에 생성된다는 의미입니다. 이 파일은 Google Play 스토어에 패키지를 업로드할 때 사용할 수 있습니다.

기본적으로 이 파일은 사용할 AndroidLinkTool=r8 때 자동으로 생성되며 다음 파일을 $(OutputPath)mapping.txt생성합니다.

이 매핑 파일을 생성하지 않으려면 속성을 사용하여 만들기를 AndroidCreateProguardMappingFile 중지할 수 있습니다. 프로젝트에 다음 추가

<AndroidCreateProguardMappingFile>False</AndroidCreateProguardMappingFile>

또는 명령줄에서 사용합니다 -p:AndroidCreateProguardMappingFile=False .

AndroidD8IgnoreWarnings

에 전달할 d8지정합니다--map-diagnostics warning info. 기본값은 True더 엄격한 동작을 적용하도록 False 설정할 수 있습니다. 자세한 내용은 D8 및 R8 소스 코드를 참조하세요.

.NET 8에 추가되었습니다.

AndroidR8IgnoreWarnings

r8에 대한 -ignorewarnings proguard 규칙을 지정합니다. 이렇게 하면 특정 경고가 발생한 경우에도 r8에서 dex 컴파일을 계속할 수 있습니다. 기본값은 True더 엄격한 동작을 적용하도록 False 설정할 수 있습니다. 자세한 내용은 ProGuard 설명서를 참조하세요.

.NET 8부터 .NET 8을 지정합니다 --map-diagnostics warning info. 자세한 내용은 D8 및 R8 소스 코드를 참조하세요.

AndroidR8JarPath

r8 dex 컴파일러 및 shrinker와 함께 사용할 r8.jar의 경로입니다. 기본값은 Android용 .NET 워크로드 설치 경로입니다. 자세한 내용은 D8 및 R8에 대한 설명서를 참조하세요.

AndroidResgenExtraArgs

Android 자산 및 리소스를 처리할 때 aapt 명령에 전달할 명령줄 옵션을 지정합니다.

AndroidResgenFile

생성할 리소스 파일 이름을 지정합니다. 기본 템플릿은 이를 Resource.designer.cs로 설정합니다.

AndroidSdkBuildToolsVersion

Android SDK 빌드 도구 패키지는 aaptzipalign 등의 도구를 제공합니다. 여러 가지 버전의 빌드-도구 패키지를 동시에 설치할 수 있습니다. 패키징할 빌드-도구 패키지는 “권장” 빌드-도구 버전을 확인하고 사용하는 방식으로 선택됩니다(있는 경우). “권장” 버전이 ‘없을’ 경우 설치된 빌드-도구 패키지 중 가장 높은 버전이 사용됩니다.

$(AndroidSdkBuildToolsVersion) MSBuild 속성에는 기본 설정 빌드 도구 버전이 포함되어 있습니다. Android용 .NET 빌드 시스템은 기본값 Xamarin.Android.Common.targets을 제공하며, 이전 aapt 버전이 작동하는 것으로 알려진 동안 최신 aapt가 충돌하는 경우 프로젝트 파일 내에서 기본값을 재정의하여 대체 빌드 도구 버전을 선택할 수 있습니다.

AndroidSigningKeyAlias

키 저장소의 키 별칭을 지정합니다. 이는 키 저장소를 만들 때 사용되는 keytool -alias 값입니다.

AndroidSigningKeyPass

키 저장소 파일 내에서 키의 암호를 지정합니다. 이는 keytool$(AndroidSigningKeyAlias)에 대한 키 암호 입력을 요청하는 경우에 입력하는 값입니다.

또한 이 속성은 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에 제공되고 키 저장소 암호 입력:을 요청하는 값입니다.

또한 이 속성은 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 할 때만 사용됩니다.

AndroidSigningPlatformCert

apk에 서명하는 데 사용할 인증서 파일을 지정합니다. 애플리케이션을 빌드 system 할 때만 사용됩니다.

AndroidStripILAfterAOT

AOT 컴파일된 메서드의 메서드 본문을 제거할지 여부를 지정하는 bool 속성입니다.

기본값은 falseAOT 컴파일된 메서드의 메서드 본문이 제거되지 않습니다 .

로 설정 true$(AndroidEnableProfiledAot) 하면 기본적으로 설정됩니다false. 즉, 기본적으로 릴리스 구성 빌드에서 $(RunAOTCompilation) AOT는 true 모든 항목에 대해 사용하도록 설정됩니다. 이로 인해 앱 크기가 증가할 수 있습니다. 이 동작은 프로젝트 파일 내에서 명시적으로 설정 $(AndroidEnableProfiledAot) 하여 재정의할 true 수 있습니다.

이 속성에 대한 지원이 .NET 8에 추가되었습니다.

AndroidSupportedAbis

.apk에 포함되어야 하는 ABI의 세미콜론(;)으로 구분된 목록을 포함하는 문자열 속성입니다.

지원되는 값은 다음과 같습니다.

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

AndroidTlsProvider

이 속성은 사용되지 않으므로 사용하면 안 됩니다.

AndroidUseAapt2

개발자가 도구의 aapt2 패키징 사용을 제어할 수 있는 부울 속성입니다. 기본적으로 True입니다.

이 속성을 false로 설정할 수 없습니다.

AndroidUseApkSigner

개발자가 도구 대신 jarsigner사용할 apksigner 수 있는 bool 속성입니다.

AndroidUseDefaultAotProfile

개발자가 기본 AOT 프로필의 사용을 억제할 수 있는 부울 속성입니다.

기본 AOT 프로필을 표시하지 않으려면 이 속성을 false로 설정합니다.

AndroidUseDesignerAssembly

빌드 시스템이 파일에 apposed로 생성 _Microsoft.Android.Resource.Designer.dll 되는지를 제어하는 부울 속성입니다 Resource.Designer.cs . 이점은 더 작은 애플리케이션과 더 빠른 시작 시간입니다.

기본값은 .NET 8입니다 true .

Nuget 작성자로서 이전 버전과의 호환성을 유지하려면 세 가지 버전의 어셈블리를 제공하는 것이 좋습니다. 하나는 MonoAndroid용이고, 하나는 net6.0-android용이고, 하나는 net8.0-android용입니다. Xamarin.Legacy.Sdk를 사용하여 이 작업을 수행할 수 있습니다. 이는 Nuget 라이브러리 프로젝트에서 프로젝트 또는 종속성을 통해 항목을 사용하는 AndroidResource 경우에만 필요합니다.

<TargetFrameworks>monoandroid90;net6.0-android;net8.0-android</TargetFrameworks>

또는 클래식 및 net7.0-android가 모두 사용되지 않는 시간까지 이 설정을 해제합니다.

이 설정을 해제하도록 선택한 .NET 8 프로젝트는 이 설정을 사용하는 참조를 사용할 수 없습니다. 이 기능을 사용하지 않는 XA1034 프로젝트에서 사용하도록 설정된 어셈블리를 사용하려고 하면 빌드 오류가 발생합니다.

.NET 8에 추가되었습니다.

AndroidUseInterpreter

일반 JIT가 아닌 mono 인터프리터를 포함하도록 하는 .apk 부울 속성입니다.

실험적.

AndroidUseLegacyVersionCode

개발자가 versionCode 계산을 이전 Xamarin.Android 8.2 동작으로 되돌릴 수 있는 부울 속성입니다. 이러한 방법은 Google Play 스토어에서 기존 애플리케이션을 사용하는 개발자만 사용해야 합니다. 새 $(AndroidVersionCodePattern) 속성을 사용하는 것이 좋습니다.

AndroidUseManagedDesignTimeResourceGenerator

디자인 타임 빌드를 전환하여 관리되는 리소스 파서 대신 aapt사용하도록 전환하는 부울 속성입니다.

AndroidUseNegotiateAuthentication

에서 NTLMv2/Negotiate 인증을 지원할 수 있는 AndroidMessageHandler부울 속성입니다. 기본값은 False입니다.

.NET 7에 추가되었습니다.

AndroidUseSharedRuntime

이 속성은 사용되지 않으므로 사용하면 안 됩니다.

AndroidVersionCode

파일의 대안 /manifest/@android:versionCode 으로 사용할 수 있는 AndroidManifest.xml MSBuild 속성입니다. 이 기능을 옵트인하려면 사용하도록 설정 <GenerateApplicationManifest>true</GenerateApplicationManifest>해야 합니다. 이는 .NET 6의 기본값입니다.

이 속성은 사용 되는 경우 $(AndroidCreatePackagePerAbi) $(AndroidVersionCodePattern) 무시됩니다.

@android:versionCode 는 각 Google Play 릴리스에 대해 증가해야 하는 정수 값입니다. 에 대한 요구 사항에 대한 자세한 내용은 Android 설명서를 참조하세요/manifest/@android:versionCode.

AndroidVersionCodePattern

개발자가 매니페스트에서 사용자 지정할 versionCode 수 있는 문자열 속성입니다. versionCode를 확인하는 방법에 대한 자세한 내용은 APK의 버전 코드 만들기를 참조하세요.

예를 들어 abiarmeabi이고 매니페스트의 versionCode123일 경우 {abi}{versionCode}$(AndroidCreatePackagePerAbi)가 True일 때 1123의 versionCode를 생성하고, 그렇지 않을 경우 값 123을 생성합니다. abix86_64이고 매니페스트의 versionCode44일 경우. $(AndroidCreatePackagePerAbi)가 True일 때 544를 생성하고, 그렇지 않을 경우 값 44를 생성합니다.

왼쪽 안쪽 여백 문자열 {abi}{versionCode:0000}을 포함할 경우 versionCode의 왼쪽 안쪽 여백이 0이므로 50044가 생성됩니다. 또는 와 같은 10진수 패딩을 사용할 수 있습니다.{abi}{versionCode:D4} 이전 예제와 동일한 작업을 수행합니다.

값이 정수여야 하므로 ‘0’ 및 ‘Dx’ 같은 안쪽 여백 형식만 지원됩니다.

미리 정의된 주요 항목

  • abi – 앱의 대상 abi를 삽입합니다.

    • 2 – armeabi-v7a
    • 3 – x86
    • 4 – arm64-v8a
    • 5 – x86_64
  • minSDK – 지원되는 최소 Sdk 값을 정의되지 않은 경우 삽입 11 AndroidManifest.xml 합니다.

  • versionCode – 에서 직접 Properties\AndroidManifest.xml버전 코드를 사용합니다.

$(AndroidVersionCodeProperties) 속성(다음에 정의됨)을 사용하여 사용자 지정 항목을 정의할 수 있습니다.

기본적으로 값은 {abi}{versionCode:D6}으로 설정됩니다. 개발자가 이전 동작을 유지하려는 경우 $(AndroidUseLegacyVersionCode) 속성을 true로 설정하여 기본값을 재정의할 수 있습니다.

AndroidVersionCodeProperties

개발자가 .와 함께 사용할 사용자 지정 항목을 정의할 수 있는 문자열 속성입니다 $(AndroidVersionCodePattern). key=value 쌍 형식입니다. value의 모든 항목은 정수 값이어야 합니다. 예: screen=23;target=$(_AndroidApiLevel) 보시다시피 문자열에 기존 또는 사용자 지정 MSBuild 속성을 활용할 수 있습니다.

ApplicationId

파일의 대안 /manifest/@package 으로 사용할 수 있는 AndroidManifest.xml MSBuild 속성입니다. 이 기능을 옵트인하려면 사용하도록 설정 <GenerateApplicationManifest>true</GenerateApplicationManifest>해야 합니다. 이는 .NET 6의 기본값입니다.

에 대한 요구 사항에 대한 자세한 내용은 Android 설명서를 참조하세요/manifest/@package.

ApplicationTitle

파일의 대안 /manifest/application/@android:label 으로 사용할 수 있는 AndroidManifest.xml MSBuild 속성입니다. 이 기능을 옵트인하려면 사용하도록 설정 <GenerateApplicationManifest>true</GenerateApplicationManifest>해야 합니다. 이는 .NET 6의 기본값입니다.

에 대한 요구 사항에 대한 자세한 내용은 Android 설명서를 참조하세요/manifest/application/@android:label.

ApplicationVersion

파일의 대안 /manifest/@android:versionName 으로 사용할 수 있는 AndroidManifest.xml MSBuild 속성입니다. 이 기능을 옵트인하려면 사용하도록 설정 <GenerateApplicationManifest>true</GenerateApplicationManifest>해야 합니다. 이는 .NET 6의 기본값입니다.

에 대한 요구 사항에 대한 자세한 내용은 Android 설명서를 참조하세요/manifest/@android:versionName.

AotAssemblies

어셈블리가 네이티브 코드로 컴파일되어 애플리케이션에 포함되는지 여부를 결정하는 부울 속성입니다. 기본적으로 이 속성은 False입니다.

.NET 7에서는 사용되지 않습니다. 대신 새 $(RunAOTCompilation) MSBuild 속성으로 마이그레이션합니다. 지원 $(AotAssemblies) 은 향후 릴리스에서 제거될 예정입니다.

AProfUtilExtraOptions

aprofutil에 전달할 추가 옵션입니다.

BeforeBuildAndroidAssetPacks

이 속성에 나열된 MSBuild 대상은 항목이 빌드되기 바로 전에 AssetPack 실행됩니다.

.NET 9에 추가됨

BeforeGenerateAndroidManifest

이 속성에 나열된 MSBuild 대상은 _GenerateJavaStubs 바로 앞에 실행됩니다.

구성

사용할 빌드 구성(예: “디버그” 또는 “릴리스”)을 지정합니다. Configuration 속성은 대상 동작을 결정하는 다른 속성에 대한 기본값을 결정하는 데 사용됩니다. IDE 내에 추가 구성을 만들 수 있습니다.

기본적으로 구성은 Debug />을 발생합니다. Install 그리고 SignAndroidPackage 는 다른 파일 및 패키지가 작동해야 하는 더 작은 Android 패키지를 만드는 것을 목표로 합니다.

기본 Release 구성은 을 발생합니다. Install 그리고 SignAndroidPackage는 독립 실행형이며 다른 패키지 또는 파일을 설치하지 않고 사용할 수 있는 Android 패키지를 만드는 것을 대상으로 합니다.

DebugSymbols

Android 패키지를 속성과 $(DebugType) 함께 디버깅할 수 있는지 여부를 결정하는 부울 값입니다. 디버깅할 수 있는 패키지에는 디버그 기호가 포함되고, 특성을 true//application/@android:debuggable/>로 설정하고, 자동으로INTERNET 디버거가 프로세스에 연결할 수 있도록 권한을 부여합니다. DebugSymbolsTrue이고 DebugType이 빈 문자열이거나 Full이면 애플리케이션을 디버그할 수 있습니다.

DebugType

빌드의 일부로 생성할 디버그 기호의 유형을 지정하며, 애플리케이션의 디버그 가능 여부에도 영향을 줍니다. 가능한 값에는 다음이 있습니다.

  • Full: 전체 기호가 생성됩니다. DebugSymbols MSBuild 속성도 True애플리케이션 패키지를 디버깅할 수 있습니다.

  • PdbOnly: "PDB" 기호가 생성됩니다. 애플리케이션 패키지를 디버그할 수 없습니다.

DebugType이 설정되지 않았거나 빈 문자열이면 DebugSymbols 속성에서 애플리케이션의 디버그 가능 여부를 제어합니다.

EmbedAssembliesIntoApk

앱의 어셈블리를 애플리케이션 패키지에 포함해야 하는지 여부를 결정하는 부울 속성입니다.

이 속성은 릴리스 빌드의 경우 True, 디버그 빌드의 경우 False여야 합니다. 빠른 배포에서 대상 디바이스를 지원하지 않는 경우 디버그 빌드에서 True가 되어야 할 수 있습니다.

이 속성이 있으면 False$(AndroidFastDeploymentType) MSBuild 속성은 배포 및 다시 빌드 시간에 영향을 줄 수 있는 포함할 .apk항목도 제어합니다.

EnableLLVM

Ahead-of-Time에서 어셈블리를 네이티브 코드로 컴파일할 때 LLVM을 사용할지 여부를 결정하는 부울 속성입니다.

이 속성을 사용하는 프로젝트를 빌드하려면 Android NDK를 설치해야 합니다.

기본적으로 이 속성은 False입니다.

$(AotAssemblies) MSBuild 속성이 True가 아닐 경우 이 속성이 무시됩니다.

EnableProguard

Java 코드를 연결하기 위해 패키징 프로세스의 일부로 proguard를 실행할지 여부를 결정하는 부울 속성입니다.

기본적으로 이 속성은 False입니다.

True일 경우 @(ProguardConfiguration) 파일을 사용하여 proguard 실행을 제어합니다.

GenerateApplicationManifest

최종 AndroidManifest.xml 파일에서 값을 내보내는 다음 MSBuild 속성을 사용하거나 사용하지 않도록 설정합니다.

기본값 $(GenerateApplicationManifest) 은 .입니다 true.

JavaMaximumHeapSize

패키징 프로세스의 일부로 .dex 파일을 빌드할 때 사용할 java-Xmx 매개 변수 값을 지정합니다. 지정하지 않으면 -Xmx 옵션은 java에 값을 1G로 제공합니다. 이는 다른 플랫폼에 비해 Windows에서 일반적으로 필요하다는 것을 알수 있었습니다.

_CompileDex 대상이 java.lang.OutOfMemoryError를 throw할 경우 이 속성을 지정해야 합니다.

다음을 변경하여 값을 사용자 지정합니다.

<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

애플리케이션에 포함할 국제화 지원(예: 데이터 정렬, 정렬 테이블)을 지정합니다. 값은 다음과 같은 대/소문자 구분 값이 하나 이상 포함된 쉼표 또는 세미콜론으로 구분된 목록입니다.

  • None: 추가 인코딩을 포함하지 않습니다.

  • All: 사용 가능한 모든 인코딩을 포함합니다.

  • 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 Alternative) [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 Tamil [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 구자라트 [x-iscii-gu, CP57010], ISCII Punjabi [x-iscii-pa, CP57011], 태국어 (Windows) [CP874].

  • 희귀: IBM EBCDIC(터키어) [CP1026], IBM EBCDIC(Open Systems Latin 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 with Euro) [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입니다. Java 프로젝트 구조체의 경우 이를 res로 변경합니다.

MonoSymbolArchive

릴리스 스택 추적에서 "실제" 파일 이름 및 줄 번호 정보를 추출하기 위해 나중에 사용할 mono-symbolicate아티팩트를 만들지 여부를 .mSYM 제어하는 부울 속성입니다.

디버깅 기호가 사용하도록 설정된 $(EmbedAssembliesIntoApk) "릴리스" 앱의 경우 기본적으로 True입니다. True입니다. $(DebugSymbols) 가 True이고, $(Optimize) 은 True입니다.

RunAOTCompilation

어셈블리가 네이티브 코드로 컴파일되어 애플리케이션에 포함되는지 여부를 결정하는 부울 속성입니다. 이 속성은 False 기본적으로 빌드에 대 한 DebugTrue 빌드에 대 한 Release 기본값입니다.

이 MSBuild 속성은 $(AotAssemblies) Xamarin.Android의 MSBuild 속성을 대체합니다. Blazor WASM사용되는 것과 동일한 속성입니다.