빌드 속성
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)
true
Mono 컴파일러에 옵션을 전달할 수 있는 문자열 속성입니다.
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.Stream
Android.Runtime.JavaDictionary
System.Collections.IDictionary
측면에서 .NET 형식 또는 인터페이스를 구현할 때 예외를 전파하는 방법을 지정하는 문자열 값입니다.
Java
: 원래 Java 예외 형식이 있는 그대로 전파됩니다.Java
는 예를 들어InputStreamInvoker
API를 제대로 구현System.IO.Stream
하지 않습니다. 그 이유는 API가 아니라System.IO.IOException
throwStream.Read()
될 수 있기 때문Java.IO.IOException
입니다.System
: 원래 Java 예외 형식이 적절한 .NET 예외 형식으로 catch되고 래핑됩니다.System
는 예를 들어InputStreamInvoker
제대로 구현되고Stream.Read()
인스턴스를System.IO.Stream
throwJava.IO.IOException
하지 않음을 의미합니다. (대신 포함하는Java.IO.IOException
값을 값으로 throwSystem.IO.IOException
할Exception.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
단일 .apk
ABI에서 모든 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
유효한 값 obsolete
과 disable
을 가진 열거형 스타일 속성입니다.
설정 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.Throwable
Java.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)
true
Mono 컴파일러에 옵션을 전달할 수 있는 문자열 속성입니다.
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
가 프로젝트에 필요한 경우에는 이 방법이 작동하지 않습니다.
대신 이런 경우에는 AndroidNativeLibrary
의 Link
메타데이터를 사용하여 이름을 지정할 수 있습니다.
<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
: XML 주석만 내보낸다:<exception/>
,<param/>
,<returns/>
.<summary/>
full
: 요소뿐만 아니라<remarks/>
지원<seealso/>
가능한 다른 모든 요소를 내보intellisense
낸다.
기본값은 intellisense
입니다.
AndroidKeyStore
사용자 지정 서명 정보를 사용해야 하는지 여부를 나타내는 부울 값입니다. 기본값은 False
이며, 이는 기본 디버그 서명 키를 사용하여 패키지에 서명한다는 의미입니다.
AndroidLaunchActivity
시작할 Android 작업입니다.
AndroidLinkMode
Android 패키지 내에 포함된 어셈블리에 대해 수행해야 하는 연결 유형을 지정합니다. Android 애플리케이션 프로젝트 내에서만 사용됩니다. 기본값은 SdkOnly입니다. 유효한 값은 다음과 같습니다.
None: 연결을 시도하지 않습니다.
SdkOnly: 연결이 기본 클래스 라이브러리에서만 수행되며, 사용자 어셈블리에서는 수행되지 않습니다.
Full: 연결이 기본 클래스 라이브러리와 사용자 어셈블리에서 수행됩니다.
참고 항목
AndroidLinkMode
에 Full 값을 사용할 경우 앱이 손상될 수 있습니다(특히 리플렉션을 사용하는 경우). 제대로 알지 않는 한 이 값을 사용하지 마세요.
<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 내의 승인된 목록(권장) 리포지토리입니다.
GoogleV2
는 Visual 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>
단계가 성공할 수 있도록 하는
AndroidPackageFormat
유효한 값이 apk
또는 aab
인 열거형 스타일 속성입니다. Android 애플리케이션 을 APK 파일 또는 Android 앱 번들로 패키지할지 여부를 나타냅니다. 앱 번들은 Google Play에서 전송용으로 사용되는 Release
빌드의 새로운 형식입니다. 기본값은 apk
입니다.
$(AndroidPackageFormat)
가 aab
로 설정되면 Android 앱 번들에 필요한 기타 MSBuild 속성이 설정됩니다.
$(AndroidUseAapt2)
은True
입니다.$(AndroidUseApkSigner)
은False
입니다.$(AndroidCreatePackagePerAbi)
은False
입니다.
이 속성은 .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 빌드 도구 패키지는 aapt 및 zipalign 등의 도구를 제공합니다. 여러 가지 버전의 빌드-도구 패키지를 동시에 설치할 수 있습니다. 패키징할 빌드-도구 패키지는 “권장” 빌드-도구 버전을 확인하고 사용하는 방식으로 선택됩니다(있는 경우). “권장” 버전이 ‘없을’ 경우 설치된 빌드-도구 패키지 중 가장 높은 버전이 사용됩니다.
$(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 속성입니다.
기본값은 false
AOT 컴파일된 메서드의 메서드 본문이 제거되지 않습니다 .
로 설정 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의 버전 코드 만들기를 참조하세요.
예를 들어 abi
가 armeabi
이고 매니페스트의 versionCode
가 123
일 경우 {abi}{versionCode}
는 $(AndroidCreatePackagePerAbi)
가 True일 때 1123
의 versionCode를 생성하고, 그렇지 않을 경우 값 123을 생성합니다.
abi
가 x86_64
이고 매니페스트의 versionCode
가 44
일 경우. $(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
- 2 –
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 내에 추가 구성을 만들 수 있습니다.
기본적으로 구성은 Install
그리고 SignAndroidPackage
는 다른 파일 및 패키지가 작동해야 하는 더 작은 Android 패키지를 만드는 것을 목표로 합니다.
기본 Release
구성은 을 발생합니다. Install
그리고 SignAndroidPackage
는 독립 실행형이며 다른 패키지 또는 파일을 설치하지 않고 사용할 수 있는 Android 패키지를 만드는 것을 대상으로 합니다.
DebugSymbols
Android 패키지를 속성과 $(DebugType)
함께 디버깅할 수 있는지 여부를 결정하는 부울 값입니다.
디버깅할 수 있는 패키지에는 디버그 기호가 포함되고, 특성을 true
//application/@android:debuggable
/>로 설정하고, 자동으로INTERNET
디버거가 프로세스에 연결할 수 있도록 권한을 부여합니다. DebugSymbols
가 True
이고 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
기본적으로 빌드에 대 한 Debug
및 True
빌드에 대 한 Release
기본값입니다.
이 MSBuild 속성은 $(AotAssemblies)
Xamarin.Android의 MSBuild 속성을 대체합니다. Blazor WASM에 사용되는 것과 동일한 속성입니다.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기