다음을 통해 공유


빌드 속성

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

AdbTarget

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

AfterGenerateAndroidManifest

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

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 $(AndroidEnableProfiledAot) $(AotAssemblies) trueMono 컴파일러에 옵션을 전달할 수 있는 문자열 속성입니다. Mono 크로스 컴파일러를 호출할 때 속성의 문자열 값이 지시 파일에 추가됩니다.

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

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

AndroidAotCustomProfilePath

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

AndroidAotProfiles

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

AndroidAotProfilerPort

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

AndroidAotEnableLazyLoad

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

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

AndroidApkDigestAlgorithm

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

기본값은 SHA-256입니다. Xamarin.Android 10.0 및 이전 버전에서는 기본값이 SHA1이었습니다.

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

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

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

Xamarin.Android 6.1에 추가되었습니다.

AndroidBinUtilsPath

네이티브 링커 ld, 네이티브 어셈블러 as 같은 Android binutils를 포함하는 디렉터리의 경로입니다. 이러한 도구는 Xamarin.Android 설치에 포함되어 있습니다.

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

Xamarin.Android 10.0에 추가되었습니다.

AndroidBoundExceptionType

Xamarin.Android 제공 형식이 Java 형식(예: Android.Runtime.InputStreamInvokerSystem.IO.Stream, 또는 Android.Runtime.JavaDictionarySystem.Collections.IDictionary)을 기준으로 .NET 형식 또는 인터페이스를 구현하는 경우 예외를 전파하는 방법을 지정하는 문자열 값입니다.

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

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

    Java 는 Xamarin.Android 13.0을 포함하여 Xamarin.Android의 모든 릴리스에서 예외 전파 동작입니다.

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

    System는 예를 들어 InputStreamInvoker 제대로 구현되고 Stream.Read() 인스턴스를 System.IO.Streamthrow Java.IO.IOException 하지 않음을 의미합니다. (대신 포함하는 Java.IO.IOException 값을 값으로 throw System.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: JVM의 보조 없이 class-parse.exe를 사용하여 Java 바이트코드의 구문 분석을 바로 수행합니다.

  • jar2xml: jar2xml.jar을 통해 Java 리플렉션을 사용하여 .jar 파일에서 형식과 멤버를 추출합니다.

jar2xml보다 class-parse가 더 나은 점은 다음과 같습니다.

  • class-parse는 디버그 기호(로 컴파일된 javac -g바이트코드)를 포함하는 Java 바이트코드에서 매개 변수 이름을 추출할 수 있습니다.

  • class-parse 는 복구할 수 없는 형식의 멤버에서 상속되거나 포함된 클래스를 "건너뛰지"않습니다.

Xamarin.Android 6.0에 추가되었습니다.

기본값은 jar2xml "레거시" Xamarin.Android 및 class-parse .NET 6 이상에 있습니다.

jar2xml 지원은 사용되지 않으며 jar2xml .NET 6에서 제거됩니다.

AndroidCodegenTarget

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

  • XamarinAndroid: Android 1.0용 Mono 이후의 JNI 바인딩 API를 사용합니다. Xamarin.Android 5.0 이상을 사용하여 빌드된 바인딩 어셈블리는 Xamarin.Android 5.0 이상(API/ABI 추가)에서만 실행할 수 있지만 소스는 이전 제품 버전과 호환됩니다.

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

XAJavaInterop1의 이점은 다음과 같습니다.

  • 더 작은 어셈블리.

  • base 메서드 호출을 위한 jmethodID 캐싱(상속 계층 구조의 다른 모든 바인딩 형식이 XAJavaInterop1 이상으로 빌드된 경우에 한함).

  • 관리형 서브클래스를 위한 Java 호출 가능 래퍼 생성자 jmethodID 캐싱.

기본값은 XAJavaInterop1입니다.

XamarinAndroid 지원은 사용되지 않으며 XamarinAndroid 지원은 .NET 6에서 제거될 것입니다.

AndroidCreatePackagePerAbi

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

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

AndroidCreateProguardMappingFile

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

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

<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>

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

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

Xamarin.Android 12.3에 추가되었습니다.

AndroidDebugKeyAlgorithm

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

AndroidDebugKeyValidity

debug.keystore에 사용할 기본 유효성을 지정합니다. 기본값은 10950 or 또는 30 * 365 30 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는 첫 번째 정수 값입니다. 위의 출력 0 에서는 다음과 같습니다 10.

이 속성은 $(AndroidDeviceUserId) Xamarin.Android 11.2에 추가되었습니다.

AndroidDexTool

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

AndroidEnableDesugar

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

AndroidEnableGooglePlayStoreChecks

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

Xamarin.Android 9.4에 추가되었습니다.

AndroidEnableMultiDex

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

이 속성에 대한 지원은 Xamarin.Android 5.1에 추가되었습니다.

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

AndroidEnablePreloadAssemblies

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

True로 설정하며 애플리케이션 패키지 내에 번들로 포함된 모든 어셈블리가 프로세스 시작 중에, 애플리케이션 코드가 호출되기 전에 로드됩니다. 어셈블리를 미리 로드하는 것은 Xamarin.Android에서 수행하는 일입니다.

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

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

기본적으로 이 값은 Xamarin.Android에 대해 설정 True 되며 .NET 6 이상 빌드에 False 대해 설정됩니다.

Xamarin.Android 9.2에 추가되었습니다.

AndroidEnableProfiledAot

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

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

이 속성에 대한 지원은 Xamarin.Android 9.4에 추가되었습니다.

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

AndroidEnableSGenConcurrent

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

이 속성에 대한 지원은 Xamarin.Android 7.2에 추가되었습니다.

기본적으로 이 속성은 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 경고가 생성됩니다.

이 속성에 대한 지원은 Xamarin.Android 8.1에 추가되었습니다.

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

AndroidExplicitCrunch

Xamarin.Android 11.0에서는 더 이상 지원되지 않습니다.

AndroidExtraAotOptions

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

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

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

Xamarin.Android 10.2에 추가되었습니다.

AndroidFastDeploymentType

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

  • Assemblies: 애플리케이션 어셈블리를 배포합니다.
  • Dexes: .dex 파일, 네이티브 라이브러리, typemaps를 배포합니다. 이 값은 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 를 추가하는 데 사용할 수 있고 디버깅에 유용하므로 , -d또는 --keeptemp 사용할 수 있는 옵션을 -v사용할 수 있는 문자열 속성입니다.

기본값은 빈 문자열입니다. .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 구현을 제어합니다. 값은 System.Type.GetType(string)과 함께 사용하기에 적합한 HttpMessageHandler 서브클래스의 정규화된 어셈블리 형식 이름입니다. 이 속성의 가장 일반적인 값은 다음과 같습니다.

  • Xamarin.Android.Net.AndroidClientHandler: Android Java API를 사용하여 네트워크 요청을 수행합니다. Java API를 사용하면 기본 Android 버전이 TLS 1.2를 지원하는 경우 TLS 1.2 URL에 액세스할 수 있습니다. Android 5.0 이상에서만 Java를 통해 TLS 1.2 지원을 안정적으로 제공할 수 있습니다.

    Visual Studio 속성 페이지의 Android 옵션과 Mac용 Visual Studio 속성 페이지의 AndroidClientHandler 옵션에 해당합니다.

    새 프로젝트 마법사는 Visual Studio에서 최소 Android 버전Android 5.0(Lollipop) 이상으로 구성되거나 Mac용 Visual Studio에서 대상 플랫폼가장 유용한 최신으로 설정된 경우 새 프로젝트에 대해 이 옵션을 선택합니다.

  • 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 속성 페이지의 관리되는 옵션에 해당합니다.

참고 항목

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) 열거형과 유사하며 가능한 값은 full intellisense다음과 같습니다.

기본값은 intellisense입니다.

이 속성에 대한 지원이 Xamarin.Android 11.3에 추가되었습니다.

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);

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

이 속성에 대한 지원이 Xamarin.Android 11.3에 추가되었습니다.

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

Xamarin.Android 6.1에 추가되었습니다.

AndroidManifest

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

AndroidManifestMerger

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

기본값은 현재 legacy입니다. 이후 릴리스에서는 Android Studio에 맞게 동작을 조정하기 위해 manifestmerger.jar로 변경됩니다.

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

Xamarin.Android 10.2에 추가되었습니다.

AndroidManifestMergerExtraArgs

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

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

<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>

Xamarin.Android 11.x에 도입됨

AndroidManifestType

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

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

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

Xamarin.Android 13.0에 추가되었습니다. Xamarin.Android 13.0에서 설정 Xamarin 되지 않은 경우 $(AndroidManifestType) 사용됩니다.

Xamarin.Android 13.0 이전에는 설정 $(AndroidManifestType) 이 적용되지 않으며 GoogleV2 사용됩니다.

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 >입니다.

Xamarin.Android 8.3에 추가되었습니다.

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.

.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 값을 사용하여 Xamarin.Android 10.0 및 이전 버전에서 사용되는 원래 Java 패키지 이름 스타일로 다시 전환할 수 있었습니다. 이 옵션은 FIPS 준수가 적용된 빌드 환경과의 호환성을 향상시키기 위해 Xamarin.Android 10.2에서 제거되었습니다.

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 dex 컴파일러 및 shrinker와 함께 사용할 r8.jar의 경로입니다. 기본값은 Xamarin.Android 설치의 경로입니다. 자세한 내용은 D8 및 R8에 대한 설명서를 참조하세요.

AndroidResgenExtraArgs

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

AndroidResgenFile

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

AndroidSdkBuildToolsVersion

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

$(AndroidSdkBuildToolsVersion) MSBuild 속성에는 기본 설정 빌드 도구 버전이 포함되어 있습니다. Xamarin.Android 빌드 시스템에서 Xamarin.Android.Common.targets에 기본값을 제공하고, 최신 aapt가 충돌하고 있지만 이전 버전의 aapt가 작동하는 것으로 알려져 있는 경우와 같이 다른 빌드 도구 버전을 선택하기 위해 프로젝트 파일 내에서 기본값을 재정의할 수 있습니다.

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 속성 페이지의 Default 설정에 해당합니다.

  • btls: HttpWebRequest와의 TLS 통신을 위해 Boring SSL을 사용합니다.

    이렇게 하면 모든 Android 버전에서 TLS 1.2를 사용할 수 있습니다.

    Visual Studio 속성 페이지의 Native TLS 1.2+ 설정에 해당합니다.

  • legacy: Xamarin.Android 10.1 이전 버전에서 네트워크 상호 작용을 위해 기록 관리되는 SSL 구현을 사용합니다. TLS 1.2는 지원하지 않습니다 .

    Visual Studio 속성 페이지의 Managed TLS 1.0 설정에 해당합니다.

    Xamarin.Android 10.2 이상에서는 이 값이 무시되고 btls 설정이 사용됩니다.

  • default: 이 값은 Xamarin.Android 프로젝트에서 사용되지 않을 수 있습니다. 이 값은 Visual Studio 속성 페이지의 Default 설정에 해당하는 빈 문자열을 대신 사용하는 것이 좋습니다.

    default 값은 Visual Studio 속성 페이지에서 제공되지 않습니다.

    현재 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에서는 AndroidUseAapt2false로 설정할 수 없습니다.

AndroidUseApkSigner

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

Xamarin.Android 8.2에 추가되었습니다.

AndroidUseDefaultAotProfile

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

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

Xamarin.Android 10.1에 추가되었습니다.

AndroidUseInterpreter

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

실험적.

이 속성에 대한 지원이 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 릴리스에 대해 증가해야 하는 정수 값입니다. 에 대한 요구 사항에 대한 자세한 내용은 Android 설명서를 참조하세요/manifest/@android:versionCode.

이 속성에 대한 지원이 Xamarin.Android 11.3에 추가되었습니다.

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로 설정하여 기본값을 재정의할 수 있습니다.

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의 기본값입니다.

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

이 속성에 대한 지원이 Xamarin.Android 11.3에 추가되었습니다.

ApplicationTitle

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

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

이 속성에 대한 지원이 Xamarin.Android 11.3에 추가되었습니다.

ApplicationVersion

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

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

이 속성에 대한 지원이 Xamarin.Android 11.3에 추가되었습니다.

AotAssemblies

어셈블리를 네이티브 코드에 Ahead-of-Time 컴파일하고 .apk에 포함할지 여부를 결정하는 부울 속성입니다.

이 속성에 대한 지원은 Xamarin.Android 5.1에 추가되었습니다.

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

AProfUtilExtraOptions

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

BeforeGenerateAndroidManifest

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

Xamarin.Android 9.4에 추가되었습니다.

구성

사용할 빌드 구성(예: “디버그” 또는 “릴리스”)을 지정합니다. 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를 설치해야 합니다.

이 속성에 대한 지원은 Xamarin.Android 5.1에 추가되었습니다.

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

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

EnableProguard

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

이 속성에 대한 지원은 Xamarin.Android 5.1에 추가되었습니다.

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

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

GenerateApplicationManifest

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

기본값 $(GenerateApplicationManifest)true .NET 6 및 false "레거시" 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

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

  • 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입니다.

Xamarin.Android 7.1에 추가되었습니다.