MSBuild 속성은 대상의 동작을 제어합니다.
프로젝트 파일 내에서는 예를 들어 MyApp.csproj와 같은 경우, MSBuild PropertyGroup에서 지정됩니다.
참고
Android용 .NET에서는 기술적으로 애플리케이션과 바인딩 프로젝트를 구분하지 않으므로 속성이 둘 다에서 작동합니다. 실제로는 별도의 애플리케이션 및 바인딩 프로젝트를 만드는 것이 좋습니다. 바인딩 프로젝트에 주로 사용되는 속성은 MSBuild 바인딩 프로젝트 속성 참조 가이드에 설명되어 있습니다.
런타임 범위
일반 Android 애플리케이션은 .NET 11 이상에서 CoreCLR을 대상으로 합니다. .NET 10 이하를 대상으로 하는 Android 애플리케이션은 기본적으로 Mono를 사용합니다.
$(UseMonoRuntime)을(를) true(으)로 설정하면 지원되는 게시 또는 최적화 빌드에 대해 NativeAOT 런타임이 선택되며, $(PublishAot)보다 우선 적용됩니다.
$(UseMonoRuntime)=true는 .NET 11 이스케이프 해치가 아닙니다. .NET 11 SDK는 NETSDK1242 사용하여 거부합니다.
Mono가 지원되는 프레임워크를 대상으로 하는 경우에만 .NET 10 및 이전 Mono 지침을 사용합니다.
.NET 11개 Android 애플리케이션에는 Android API 수준 24 이상이 필요합니다.
$(SupportedOSPlatformVersion) 는 애플리케이션의 배포 최소값을 //uses-sdk/@android:minSdkVersion 설정하고 Android 매니페스트에 매핑합니다. 대상 SDK를 선택하거나 Google Play 정책을 나타내지 않습니다.
.NET 11 CoreCLR 런타임 팩은 다음 .NET RID(런타임 식별자) 및 해당 Android API(애플리케이션 이진 인터페이스)를 지원합니다.
-
android-arm:armeabi-v7a -
android-arm64:arm64-v8a -
android-x64:x86_64
Android NativeAOT는 실험적이며 동일한 세 개의 RID를 지원합니다. RID는 Android ABI 이름 및 에뮬레이터 시스템 이미지 아키텍처와 다릅니다.
AdbTarget
$(AdbTarget) 속성은 Android 패키지를 설치하거나 제거할 수 있는 Android 대상 디바이스를 지정합니다.
이 속성의 값은 adb 대상 디바이스 옵션과 동일합니다.
AfterGenerateAndroidManifest (안드로이드 매니페스트 생성 후)
이 속성에 나열된 MSBuild 대상은 내부 _GenerateJavaStubs 대상 바로 뒤에 실행됩니다. 여기서 AndroidManifest.xml 파일은 $(IntermediateOutputPath)에 생성됩니다. 생성된 AndroidManifest.xml 파일을 수정하려는 경우 이 확장점을 사용하여 수정할 수 있습니다.
AndroidAapt2CompileExtraArgs
Android 자산 및 리소스를 처리할 때 aapt2 컴파일 명령에 전달할 명령줄 옵션을 지정합니다.
AndroidAapt2LinkExtraArgs
Android 자산 및 리소스를 처리할 때 aapt2 링크 명령에 전달할 명령줄 옵션을 지정합니다.
AndroidAddKeepAlives
링커가 조기 개체 컬렉션을 방지하기 위해 바인딩 프로젝트 내에 GC.KeepAlive() 호출을 삽입할지를 제어하는 부울 속성입니다.
기본값은 True 릴리스 구성 빌드에 대한 것입니다.
GC.KeepAlive() 형식 맵을 사용하는 트리밍되지 않은 빌드의 경우, trimmable 호출은 다음 경우에만 삽입됩니다.
$(AndroidEnableLegacyCompatibilityAssemblyFixups)도 True입니다.
trimmable 형식 맵을 사용하는 트리밍된 빌드는 이러한 호출을 삽입하지 않습니다.
AndroidAotAdditionalArguments
Mono를 사용하는 지원되는 .NET 10 및 이전 버전 프로젝트에서 Mono AOT 컴파일러의 --aot=... 인수에 쉼표로 구분된 추가 옵션을 전달할 수 있도록 하는 문자열 속성입니다. 이 속성은 Mono AOT 컴파일을 사용하는 경우에만 사용됩니다.
일반적으로 이 속성은 비워 두어야 하지만 일부 특수한 시나리오에서는 유용한 유연성을 제공할 수 있습니다.
$(AndroidAotAdditionalArguments) 속성은 관련된 $(AndroidExtraAotOptions) 속성과 다릅니다. $(AndroidAotAdditionalArguments)는 $(AndroidExtraAotOptions) 옵션에 포함되지만, --aot는 독립 실행형 인수를 Mono AOT 컴파일러 프로세스에 직접 전달합니다.
AndroidAotCustomProfilePath
Mono AOT 프로파일러 데이터를 저장하기 위해 만들어야 하는 aprofutil 파일입니다.
기본값은 custom.aprof입니다.
이 속성은 Mono를 사용하는 지원되는 .NET 10 이전 프로젝트의 레거시 AOT 프로파일링 대상에 적용됩니다.
AndroidAotProfilerPort
Mono AOT 프로파일링 데이터를 가져올 때 연결해야 하는 포트 aprofutil 입니다. 기본값은 9999입니다.
이 속성은 Mono를 사용하는 지원되는 .NET 10 이전 프로젝트의 레거시 AOT 프로파일링 대상에 적용됩니다.
AndroidAotEnableLazyLoad
시작 시 미리 로드하는 대신 AOT 컴파일된 Mono 어셈블리를 지연 로드하도록 설정합니다.
이 속성은 Mono를 사용하는 지원되는 .NET 10 이전 프로젝트에 적용됩니다. 기본값은 True Mono AOT를 사용하도록 설정하고 디버그 기호가 포함되지 않은 경우입니다. CoreCLR 또는 NativeAOT를 구성하지 않습니다.
.NET 6에 도입되었습니다.
AndroidApkDigestAlgorithm
에 사용할 다이제스트 알고리즘을 지정하는 문자열 값입니다 jarsigner -digestalg.
기본값은 SHA-256입니다.
AndroidApkSignerAdditionalArguments
개발자가 도구에 인수를 제공할 수 있는 문자열 속성입니다 apksigner .
AndroidApkSigningAlgorithm
에 사용할 서명 알고리즘을 지정하는 문자열 값입니다 jarsigner -sigalg.
기본값은 SHA256withRSA입니다.
AndroidApplication
프로젝트가 Android 애플리케이션용(True)인지, Android 라이브러리 프로젝트용(False 또는 없음)인지를 나타내는 부울 값입니다.
Android 패키지에는 <AndroidApplication>True</AndroidApplication>인 프로젝트가 하나만 존재할 수 있습니다. (아쉽게도 이 요구 사항은 확인되지 않으므로 Android 리소스와 관련하여 미묘하고 기괴한 오류가 발생할 수 있습니다.)
Android 애플리케이션 자바 클래스 (AndroidApplicationJavaClass)
클래스가 android.app.Application을 상속할 때 를 대신하여 사용할 전체 Java 클래스 이름입니다.
속성은 일반적으로 $(AndroidApplicationJavaClass) 속성에 의해 설정되며, 예를 들어 MSBuild 속성과 같습니다.
AndroidAvoidEmitForPerformance
시작 성능을 개선하기 위해 System.Reflection.Emit을(를) "회피할지" 여부를 결정하는 논리형 속성입니다. 기본적으로 이 속성은 True입니다.
System.Reflection.Emit의 사용은 Android의 시작 성능에 눈에 띄게 영향을 미칩니다. 이 동작은 기본적으로 다음 기능 스위치에 대해 사용하지 않도록 설정됩니다.
Switch.System.Reflection.ForceInterpretedInvoke: 두 번째MethodInfo.Invoke()또는ConstructorInfo.Invoke()호출 이후에, 반복 호출의 성능을 개선하기 위해 코드가 실행됩니다.Microsoft.Extensions.DependencyInjection.DisableDynamicEngine: 종속성 주입 컨테이너에서 서비스를 검색하는 두 번째 호출 후 반복 호출의 성능을 향상시키기 위해 코드가 내보내집니다.
대부분의 Android 애플리케이션에서 이 동작을 사용하지 않도록 설정하는 것이 좋습니다.
사용 가능한 기능 스위치에 대한 자세한 내용은 기본 클래스 라이브러리 기능 스위치 설명서를 참조하세요.
.NET 8에 추가되었습니다.
AndroidBinUtilsPath
Android binutils, 네이티브 링커 ld, 네이티브 어셈블러 as와 같은 도구가 포함된 디렉터리의 경로입니다. 이러한 도구는 Android용 .NET 워크로드에 포함됩니다.
기본값은 $(MonoAndroidBinDirectory)\binutils\bin\입니다.
AndroidBoundExceptionType
Android에서 제공하는 형식용 .NET이 Java 형식과 같은 Android.Runtime.InputStreamInvokerSystem.IO.StreamAndroid.Runtime.JavaDictionarySystem.Collections.IDictionary측면에서 .NET 형식 또는 인터페이스를 구현할 때 예외를 전파하는 방법을 지정하는 문자열 값입니다.
Java: 원래 Java 예외 형식이 있는 그대로 전파됩니다.Java는 예를 들어InputStreamInvoker가System.IO.StreamAPI를 제대로 구현하지 않는다는 것을 의미합니다. 그 이유는Java.IO.IOException가Stream.Read()대신System.IO.IOException에서 throw될 수 있기 때문입니다.System: 원래 Java 예외 형식은 적절한 .NET 예외 형식으로 포착하여 래핑됩니다.System는 예를 들어InputStreamInvoker이(가)System.IO.Stream을(를) 제대로 구현하고,Stream.Read()이(가) 인스턴스를 생성하지 않음을 의미합니다. 대신System.IO.IOException을(를) 포함하는Java.IO.IOException을(를)Exception.InnerException값으로 던질 수 있습니다.기본값은
System입니다.
안드로이드 바운드 인터페이스는 상수를 포함합니다
인터페이스에 대한 바인딩 상수 지원 여부 또는 IMyInterfaceConsts 클래스를 생성하는 해결 방법 사용 여부를 결정하는 부울 속성입니다.
기본값은 True입니다.
안드로이드 바운드 인터페이스에 정적 및 기본 인터페이스 메서드 포함 (AndroidBoundInterfacesContainStaticAndDefaultInterfaceMethods)
인터페이스의 기본 멤버와 정적 멤버를 지원할지, 아니면 abstract class MyInterface와 같은 정적 멤버를 포함하는 별도 클래스를 생성하는 기존 해결 방법을 사용할지를 지정하는 불리언 속성입니다.
기본값은 True .NET 6 및 False 레거시에 있습니다.
Android 바운드 인터페이스 포함 타입 (AndroidBoundInterfacesContainTypes)
인터페이스 내에 중첩된 형식을 지원할지 여부 또는 IMyInterfaceMyNestedClass과 같은 비중첩 형식을 생성하는 방법을 결정하는 부울 속성입니다.
기본값은 True .NET 6 및 False 레거시에 있습니다.
AndroidBuildApplicationPackage
패키지(.apk)를 만들고 서명할지 여부를 나타내는 부울 값입니다. 이 값을 True으로 설정하는 것은 사용하는 것과 같습니다.
SignAndroidPackage 빌드 대상
기본적으로 이 속성은 False입니다.
AndroidBundleConfigurationFile
Android 앱 번들을 빌드할 때 에 대한 구성 파일로 사용할 파일 이름을 지정합니다. 이 파일은 번들에서 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을 바인딩합니다.JavaInterop1: 실험적 값으로, 현재 NativeAOT 런타임의 기본값입니다.
기본값은 XAJavaInterop1입니다.
AndroidCreatePackagePerAbi
선택한 모든 ABI를 지원하는 단일 .apk만 만드는 대신, 선택한 각 Android ABI(예: arm64-v8a)마다 .apk를 하나씩 만들지 여부를 결정하는 부울 속성입니다.
$(RuntimeIdentifiers)의 RID는 해당 ABI를 선택합니다. APK는 RID별이 아니라 ABI별로 생성됩니다.
ABI 특정 APK 빌드 가이드도 참조하세요.
AndroidCreateProguardMappingFile
프로가드 매핑 파일이 빌드 프로세스의 일부로 생성되는지 여부를 제어하는 부울 속성입니다.
csproj에 다음을 추가하면 파일이 생성되고 속성을 사용하여 AndroidProguardMappingFile 최종 매핑 파일의 위치를 제어합니다.
<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>
.aab 파일을 생성할 때, 매핑 파일이 패키지에 자동으로 포함됩니다. Google Play 스토어에 수동으로 업로드할 필요가 없습니다.
.apk 파일을 사용할 때 AndroidProguardMappingFile는 수동으로 업로드해야 합니다.
기본값은 True$(AndroidLinkTool)=r8을 사용할 때입니다.
AndroidDebugKeyAlgorithm
debug.keystore에 사용할 기본 알고리즘을 지정합니다. 기본값은 RSA입니다.
AndroidDebugKeyValidity
debug.keystore에 사용할 기본 유효성을 지정합니다. 기본값은 10950 or 또는 30 * 36530 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
유효한 값 d8이 있는 열거형 스타일 속성입니다.
이전에는 Xamarin.Android에서 값 dx 이 지원되었습니다.
.NET for Android 빌드 프로세스 중 사용되는 안드로이드 덱스 컴파일러를 나타냅니다.
기본값은 d8입니다. D8 및 R8에 대한 설명서를 참조하세요.
AndroidEnableDesugar
desugar의 활성화 여부를 결정하는 부울 속성입니다. Android는 현재 모든 Java 8 기능을 지원하지 않으며, 기본 도구 체인은 컴파일러의 desugar 출력에서 호출javac된 바이트 코드 변환을 수행하여 새 언어 기능을 구현합니다. 기본값은 False을 사용할 때는 $(AndroidDexTool)=dx이고, True$(AndroidDexTool)=를 사용할 때는 d8입니다.
AndroidEnableFastDeployment
빠른 배포를 사용할 수 있는지 여부를 결정하는 부울 속성입니다. 빠른 배포는 애플리케이션 패키지 외부에 어셈블리를 설치하여 배포 및 다시 빌드 시간을 줄일 수 있습니다.
기본값은 True 디버그 빌드 및 False 릴리스 빌드에 대한 것입니다.
이 속성을 설정하는 것은 역값 $(EmbedAssembliesIntoApk)을 설정하는 것과 같습니다. 두 속성이 모두 설정된 $(EmbedAssembliesIntoApk) 경우 우선합니다.
AndroidEnableGooglePlayStoreChecks
개발자가 XA1004, XA1005 및 XA1006 Google Play 스토어 검사를 비활성화할 수 있는 부울 속성입니다. 이러한 검사를 사용하지 않도록 설정하면 Google Play 스토어를 대상으로 하지 않고 해당 검사를 실행하지 않으려는 개발자에게 유용합니다.
AndroidEnableLegacyCompatibilityAssemblyFixups
트리밍되지 않은 빌드가 레거시 바인딩 및 리소스 디자이너 동작을 지원하도록 참조된 어셈블리를 수정할지 여부를 제어하는 부울 속성입니다. 이러한 수정에는 누락된 추상 인터페이스 메서드 추가, 레거시 리소스 디자이너 참조 업데이트, 그리고 이전 Xamarin.Android 바인딩 어셈블리에 GC.KeepAlive() 호출 삽입이 포함됩니다. 형식 맵을 사용하여 trimmable 트리밍된 빌드는 이러한 호환성 수정을 실행하지 않으며, 이 속성을 설정해 True 도 트리밍된 빌드에 사용할 수 없습니다.
기본값은 trimmable가 True인 경우 False이며, 그렇지 않으면 $(AndroidTypeMapImplementation)입니다.
AndroidEnableMarshalMethods
LLVM 마샬링 메서드를 사용할 수 있는지 여부를 결정하는 부울 속성입니다.
LLVM 마샬링 메서드는 Java native 메서드 등록에 네이티브 진입점을 사용하는 앱 시작 최적화입니다.
이 속성은 기본적으로 False입니다.
$(PublishReadyToRun)이(가) true일 때 이 속성은 true(으)로 설정할 수 없습니다.
XA1049를 사용하여 빌드를 중지하도록 true 두 속성을 모두 설정합니다.
.NET 8에 추가되었습니다.
AndroidEnableMultiDex
최종 .apk에서 멀티덱스 지원이 사용될지 여부를 결정하는 boolean 속성입니다.
기본적으로 이 속성은 False입니다.
AndroidEnableProfiler (안드로이드 프로파일러 활성화)
Mono 애플리케이션의 경우 이는 $(EnableDiagnostics) 속성과 같은 의미입니다.
libmono-component-diagnostics_tracing.so인 경우 Mono 진단 구성 요소인 true가 애플리케이션에 포함됩니다.
.NET 11 이상에서 CoreCLR 애플리케이션의 경우 이 속성은 같은 dotnet-tracedotnet-gcdump도구에서 사용하는 CoreCLR 진단 포트 구성을 사용하도록 설정하고 Mono 진단 구성 요소를 추가하지 않습니다. NativeAOT는 선택한 $(PublishAot) 별도의 런타임이며 이 속성은 지원되는 Android 패키징 및 구성 동작만 문서화합니다.
기본적으로 이 속성은 False입니다.
AndroidEnableObsoleteOverrideInheritance
바인딩된 메서드가 재정의하는 메서드에서 [Obsolete] 특성을 자동으로 상속 여부를 결정하는 부울 속성입니다.
이 속성에 대한 지원이 .NET 8에 추가되었습니다.
기본적으로 이 속성은 True입니다.
AndroidEnablePreloadAssemblies
애플리케이션 패키지 내에 번들로 제공되는 모든 관리되는 어셈블리가 프로세스 시작 중에 로드되는지 여부를 제어하는 부울 속성입니다.
True로 설정하며 애플리케이션 패키지 내에 번들로 포함된 모든 어셈블리가 프로세스 시작 중에, 애플리케이션 코드가 호출되기 전에 로드됩니다.
False로 설정하면 어셈블리는 필요에 따라서만 로드됩니다.
필요에 따라 어셈블리를 로드하면 애플리케이션이 더 빠르게 시작할 수 있으며 데스크톱 .NET 의미 체계와도 더 일치합니다.
시간 절감 효과를 확인하려면 debug.mono.log을 포함하도록 timing 시스템 속성을 설정하고 Finished loading assemblies: preloaded 내에서 adb logcat 메시지를 찾으세요.
종속성 주입을 사용하는 애플리케이션 또는 라이브러리가 애플리케이션 번들 내의 모든 어셈블리를 반환하도록 요구하는 경우, 이 속성이 필요할 수 있습니다, 특히 어셈블리가 그렇지 않으면 필요하지 않을 때라도.
기본적으로 이 값은 False입니다.
AndroidEnableProfiledAot
미리 컴파일하는 동안 Mono AOT 프로필이 사용되는지 여부를 결정하는 부울 속성입니다. Mono를 사용하고 ReadyToRun, MIBC 프로필, 동적 PGO 또는 NativeAOT를 구성하지 않는 지원되는 .NET 10 이전 프로젝트에 적용됩니다.
프로필은 목록에 나열됩니다
@(AndroidAotProfile) 항목 그룹입니다. 프로파일된 AOT를 사용하도록 설정하면 $(AndroidUseDefaultAotProfile)가 false인 경우를 제외하고 기본 프로필이 포함됩니다. 사용자 지정 프로필은 .를 사용하여 @(AndroidAotProfile)추가할 수 있습니다.
true이(가) $(RunAOTCompilation)이고 이 속성이 설정되지 않은 경우 기본값은 true입니다. 따라서 Mono를 사용하는 해당 릴리스 빌드에서는 기본적으로 true가 사용됩니다.
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 수집기를 사용할지 여부를 결정하는 부울 속성입니다.
기본적으로 이 속성은 True입니다. Mono를 사용하고 CoreCLR 또는 NativeAOT 가비지 수집기를 구성하지 않는 지원되는 .NET 10 이전 프로젝트에 적용됩니다.
AndroidErrorOnCustomJavaObject
형식이 상속하지 않고 Android.Runtime.IJavaObject를 구현하거나 Java.Lang.Object 또는 Java.Lang.Throwable에서 상속할 수 있는지 여부를 결정하는 부울 속성입니다.
class BadType : IJavaObject {
public IntPtr Handle {
get {return IntPtr.Zero;}
}
public void Dispose()
{
}
}
True이면 XA4212 오류가 생성되고, 그렇지 않으면 XA4212 경고가 생성됩니다.
기본적으로 이 속성은 True입니다.
AndroidExplicitCrunch
이 속성은 더 이상 지원되지 않습니다.
AndroidExtraAotOptions
Mono를 사용하여 세미콜론으로 구분된 독립 실행형 인수를 Mono AOT 컴파일러 프로세스에 직접 전달하는 지원되는 .NET 10 이전 프로젝트를 허용하는 문자열 속성입니다. 이 속성은 Mono AOT 컴파일을 사용하는 경우에만 사용됩니다.
일반적으로 이 속성은 비워 두어야 하지만 일부 특수한 시나리오에서는 유용한 유연성을 제공할 수 있습니다.
속성 $(AndroidExtraAotOptions) 은 관련 $(AndroidAotAdditionalArguments) 속성 $(AndroidExtraAotOptions) 과 다르며 독립 실행형 프로세스 인수를 전달하지만 $(AndroidAotAdditionalArguments) 쉼표로 구분된 옵션 내에 포함됩니다 --aot=... .
Android 빠른 배포 유형
이 속성은 .NET 9에서 제거되었으며 아무런 효과가 없습니다.
AndroidFragmentType
레이아웃 바인딩 코드를 생성할 때 모든 <fragment> 레이아웃 요소에 사용할 기본 정규화된 형식을 지정합니다. 기본값은 표준 Android Android.App.Fragment 형식입니다.
AndroidGenerateJniMarshalMethods
이 실험적 기능은 .NET 11에서 제거되었습니다. 속성을 설정해도 아무 효과가 없습니다.
AndroidGenerateJniMarshalMethodsAdditionalArguments
이 실험적 기능은 .NET 11에서 제거되었습니다. 속성을 설정해도 아무 효과가 없습니다.
AndroidGenerateLayoutBindings
로 설정된 경우 레이아웃 코드 비하인드 생성을 활성화하며, false로 설정된 경우 이를 완전히 비활성화합니다.
기본값은 false입니다.
AndroidGenerateResourceDesigner
기본값은 true입니다. 설정을 false로 하면 Resource.designer.cs 생성을 비활성화합니다.
AndroidHttpClientHandlerType
참고
이 속성은 .NET 11에서 지원되지 않습니다. 프로젝트 파일에서 제거하고 대신 사용합니다 UseNativeHttpHandler .
AndroidIgnoreAllJniPreload
참/거짓 값을 나타내는 boolean 값이 true로 설정되면 애플리케이션 시작 시 모든 네이티브 JNI 라이브러리를 미리 로드하지 않습니다. 기본적으로 이러한 모든 라이브러리는 적절한 초기화를 보장하기 위해 애플리케이션 시작 초기에 런타임에 의해 로드됩니다. 그러나 경우에 따라 원하는 동작이 아닐 수 있으며 이 속성을 사용하면 이를 효과적으로 사용하지 않도록 설정할 수 있습니다.
애플리케이션 시작 시 로드해야 하는 일부 프레임워크 라이브러리는 이 속성의 영향을 받지 않습니다.
또한 미리 로드 메커니즘에서 라이브러리를 제외하는 보다 세분화된 방법도 @(AndroidNativeLibraryNoJniPreload) 참조하세요.
(따로 적을 부분이 없기에 그대로 둡니다, 필요 시 설명 추가) AndroidIncludeWrapSh
Android 래퍼 스크립트(wrap.sh)를 APK에 패키지할지 여부를 나타내는 부울 값입니다. 기본값은 래퍼 스크립트가 false 애플리케이션 시작 및 작동 방식에 큰 영향을 줄 수 있으므로 필요한 경우에만 스크립트를 포함해야 합니다(예: 애플리케이션 시작/런타임 동작을 디버깅하거나 변경하는 경우).
스크립트는 프로젝트에 추가됩니다.
@(AndroidNativeLibrary) 빌드 작업은 아키텍처별 네이티브 라이브러리와 동일한 디렉터리에 배치되고 이름을 지정 wrap.sh해야 하기 때문입니다.
wrap.sh 스크립트 경로를 지정하는 가장 간단한 방법은 대상 아키텍처에 따라 이름이 지정된 디렉터리에 배치하는 것입니다. 이 방법은 아키텍처당 하나의 wrap.sh만 있는 경우에 작동합니다.
<AndroidNativeLibrary Include="path/to/arm64-v8a/wrap.sh" />
그러나 아키텍처당 둘 이상의 wrap.sh가 프로젝트에 필요한 경우에는 이 방법이 작동하지 않습니다.
대신 이런 경우에는 Link의 AndroidNativeLibrary 메타데이터를 사용하여 이름을 지정할 수 있습니다.
<AndroidNativeLibrary Include="/path/to/my/arm64-wrap.sh">
<Link>lib\arm64-v8a\wrap.sh</Link>
</AndroidNativeLibrary>
Link 메타데이터를 사용하면 해당 값에 지정된 경로가 APK 루트 디렉터리에 상대적인 유효한 네이티브 아키텍처 관련 라이브러리 경로여야 합니다. 경로의 형식은 lib\ARCH\wrap.sh이며 ARCH는 다음 중 하나일 수 있습니다.
arm64-v8aarmeabi-v7ax86_64x86
AndroidIncludeAssetPacksInPackage
이 속성은 자산 팩 빌드가 자동으로 최종 .aab 파일에 포함되는지를 제어합니다. 기본값은 true입니다.
경우에 따라 사용자는 중간 릴리스를 릴리스하려고 할 수 있습니다. 이러한 경우 사용자는 자산 팩을 업데이트할 필요가 없습니다. 특히 자산 팩의 내용이 변경되지 않은 경우 이 속성을 사용하면 필요하지 않은 경우 사용자가 자산 팩을 건너뛸 수 있습니다.
.NET 9에 추가됨
안드로이드 자바 종속성 설치
기본값은 true 명령줄 빌드에 대한 것입니다. 설정이 true이면 <InstallAndroidDependencies/> 대상을 실행할 때 Java SDK가 설치됩니다.
이 속성에 대한 지원이 .NET 9에 추가되었습니다.
안드로이드 인스트루멘테이션
를 통해 애플리케이션을 시작할 때 사용할 Android dotnet run 실행기 클래스 이름을 지정하는 문자열 속성입니다.
이 속성이 설정되지 않으면 dotnet run는 중간 출력에 생성된 AndroidManifest.xml에서 시작할 대상을 확인합니다.
-
true이(가)$(AndroidUseInstrumentation)인 경우 첫 번째<instrumentation/>요소가 사용됩니다. - 그렇지 않으면 시작 가능
<activity/>항목이 기본 설정되며 앱이 시작 가능한 활동을 선언하지 않을 때 첫 번째<instrumentation/>요소가 사용됩니다. 이렇게 하면 유일한 진입점이 하위 클래스인 앱(예:dotnet run호스트)을Android.App.Instrumentation할 수 있습니다.
앱이 둘 다 선언하지 않으면 XA1043으로 빌드가 실패합니다.
$(AndroidUseInstrumentation)가 <instrumentation/>이지만 앱이 를 선언하지 않으면 빌드가 true 오류와 함께 실패합니다.
계측이 실행되면 dotnet run이(가) Instrumentation.Finish()을(를) 실행하고, 계측이 비정상 종료되거나 adb shell am instrument -w -r와 함께 Result.Canceled를 호출하면 0이 아닌 종료 코드로 종료됩니다.
-w을(를) false로 설정하면 $(WaitForExit)이(가) 삭제되므로, 계측이 시작되자마자 dotnet run가 반환되고 결과는 보고되지 않습니다.
이후 -- 의 모든 인수는 계측에 엑스트라로 am instrument 전달됩니다.
KEY=VALUE 형식의 인수는 -e KEY VALUE이 되고, 나머지 모든 인수는 하나의 -e args "..." 추가 인수로 결합됩니다.
dotnet run -- --filter *MyBenchmark*
는 Instrumentation.OnCreate(Bundle?)에 arguments.GetString("args")(으)로 전달됩니다.
.NET 11에 도입되었습니다.
AndroidJavadocVerbosity
바인딩 프로젝트 내에서 Javadoc 문서를 가져올 때 C# XML 문서 주석의 "상세 수준"을 설정하는 방법을 지정합니다.
을 사용해야 합니다.
@(JavaSourceJar) 빌드 작업입니다.
속성은 $(AndroidJavadocVerbosity) 열거형과 유사하며 가능한 값은 fullintellisense다음과 같습니다.
-
intellisense: XML 주석만 내보낸다:<exception/>,<param/>,<returns/>.<summary/> -
full:intellisense요소뿐만 아니라<remarks/>,<seealso/>, 그리고 지원 가능한 다른 모든 것을 내보낸다.
기본값은 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일 때 사용되는 속성은 다음과 같습니다.
다음 빌드 작업을 사용할 수도 있습니다.
Lint 도움말에서 Android 도구에 대한 자세한 사항을 확인하세요.
AndroidLintEnabledIssues
활성화할 린트 문제의 쉼표로 구분된 목록을 포함하는 문자열 속성입니다.
=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의 합병은 xmlns:tools="http://schemas.android.com/tools"에서 설명한 대로 Android 문서를 지원 가능하게 합니다.
AndroidManifestMergerExtraArgs
Android 설명서 도구에 인수를 제공하는 문자열 속성입니다.
도구에서 자세한 출력을 원하는 경우 다음 .csproj을 추가할 수 있습니다.
<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>
AndroidManifestType
유효한 값이 Xamarin 또는 GoogleV2인 열거형 스타일 속성입니다.
이 컨트롤은 다음에서 사용되는 리포지토리를 제어합니다.
InstallAndroidDependencies 대상을 지정하여 사용할 수 있고 설치할 수 있는 Android 패키지 및 패키지 버전을 결정합니다.
Xamarin
는 Visual Studio SDK Manager 내의 승인된 목록(권장) 리포지토리입니다.
GoogleV2는 Visual Studio SDK Manager 내의 전체 목록(지원되지 않는) 리포지토리입니다.
설정 $(AndroidManifestType) 되지 않은 경우 Xamarin 사용됩니다.
AndroidManifestSource
에서 사용하는 리포지토리 매니페스트에 대한 절대 URI 또는 기존 로컬 파일 경로를 지정하는 문자열 속성입니다.
InstallAndroidDependencies 대상입니다. 이 속성을 설정하지 않으면 선택한 $(AndroidManifestType) 기본 리포지토리 매니페스트가 사용됩니다.
예시:
<AndroidManifestSource>https://example.com/AndroidManifestFeed.xml</AndroidManifestSource>
AndroidManifestPlaceholders
AndroidManifest.xml의 키-값 대체 쌍의 세미콜론으로 구분된 목록입니다. 여기서 각 쌍은 key=value 형식입니다.
예를 들어, assemblyName=$(AssemblyName)의 속성 값은 ${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가 성공할 수 있게 해줍니다.
AndroidNdkDirectory
이 속성은 $(AndroidNdkDirectory) 사용자 지정 Android NDK 설치 디렉터리를 지정합니다. 경로는 프로젝트 파일 또는 명령줄에서 설정할 수 있습니다.
dotnet build -p:AndroidNdkDirectory=/path/to/android-ndk
이 속성이 설정되지 않은 경우 Android용 .NET 구성된 Android 개발 환경에서 NDK를 찾습니다.
안드로이드 패키지 포맷
유효한 값이 apk 또는 aab인 열거형 스타일 속성입니다. Android 애플리케이션 을 APK 파일 또는 Android 앱 번들로 패키지할지 여부를 나타냅니다. 앱 번들은 Google Play에서 전송용으로 사용되는 Release 빌드의 새로운 형식입니다. 기본값은 apk입니다.
$(AndroidPackageFormat)가 aab로 설정되면 Android 앱 번들에 필요한 기타 MSBuild 속성이 설정됩니다.
-
$(AndroidUseApkSigner)은False입니다. -
$(AndroidCreatePackagePerAbi)은False입니다.
이 속성은 .net 6에서 더 이상 사용되지 않습니다. 사용자는 최신 AndroidPackageFormats으로 전환해야 합니다.
안드로이드패키지포맷
유효한 값이 apk와 aab인 세미콜론으로 구분된 속성입니다.
Android 애플리케이션 을 APK 파일 또는 Android 앱 번들로 패키지할지 여부를 나타냅니다. 앱 번들은 Google Play에서 전송용으로 사용되는 Release 빌드의 새로운 형식입니다.
릴리스 빌드를 빌드할 때 다양한 저장소에 배포하기 위해 둘 다 aabapk 생성할 수 있습니다.
AndroidPackageFormats을 aab;apk로 설정하면 둘 다 생성됩니다.
AndroidPackageFormats를 aab 또는 apk로 설정하면 하나의 파일만 생성됩니다.
기본값은 aab;apk는 Release 빌드 전용입니다.
디버깅에 사용하는 apk 것이 더 빠르지만 aab 필요한 경우(예: 자산 팩 테스트 시) 빠른 배포에서도 지원됩니다.
AndroidPackageNamingPolicy
생성된 Java 소스 코드의 Java 패키지 이름을 지정하는 열거형 스타일 속성입니다.
LowercaseCrc64 값만 지원됩니다.
AndroidPrepareForBuildDependsOn
Android 빌드 프로세스를 확장하는 데 사용할 수 있는 세미콜론으로 구분된 속성입니다. 이 속성에 추가된 MSBuild 대상은 애플리케이션 및 라이브러리 프로젝트 형식 모두에 대해 빌드 초기에 실행됩니다. 이 속성은 기본적으로 비어 있습니다.
예시:
<PropertyGroup>
<AndroidPrepareForBuildDependsOn>MyCustomTarget</AndroidPrepareForBuildDependsOn>
</PropertyGroup>
<Target Name="MyCustomTarget" >
<Message Text="Running target: 'MyCustomTarget'" Importance="high" />
</Target>
안드로이드프로가드매핑파일
-printmapping에 대한 r8 proguard 규칙을 지정합니다. 즉, mapping.txt 파일이 $(OutputPath) 폴더에 생성된다는 의미입니다. 이 파일은 Google Play 스토어에 패키지를 업로드할 때 사용할 수 있습니다.
기본적으로 이 파일은 사용할 AndroidLinkTool=r8 때 자동으로 생성되며 다음 파일을 $(OutputPath)mapping.txt생성합니다.
이 매핑 파일을 생성하지 않으려면 속성을 사용하여 만들기를 AndroidCreateProguardMappingFile 중지할 수 있습니다.
프로젝트에 다음 추가
<AndroidCreateProguardMappingFile>False</AndroidCreateProguardMappingFile>
또는 명령줄에서 -p:AndroidCreateProguardMappingFile=False 옵션을 사용하십시오.
AndroidD8IgnoreWarnings
--map-diagnostics warning info에 전달할 d8를 지정합니다. 기본값은 True더 엄격한 동작을 적용하도록 False 설정할 수 있습니다.
자세한 내용은 D8 및 R8 소스 코드를 참조하세요.
.NET 8에 추가되었습니다.
AndroidR8IgnoreWarnings
-ignorewarnings에 대한 r8 proguard 규칙을 지정합니다. 이렇게 하면 특정 경고가 발생한 경우에도 r8에서 dex 컴파일을 계속할 수 있습니다. 기본값은 True더 엄격한 동작을 적용하도록 False 설정할 수 있습니다. 자세한 내용은 ProGuard 설명서를 참조하세요.
.NET 8부터 --map-diagnostics warning info를 지정합니다.
자세한 내용은 D8 및 R8 소스 코드를 참조하세요.
AndroidR8JarPath
r8 dex 컴파일러 및 shrinker와 함께 사용할 r8.jar의 경로입니다. 기본값은 Android용 .NET 워크로드 설치 경로입니다. 자세한 내용은 D8 및 R8에 대한 설명서를 참조하세요.
AndroidR8ObfuscationMode
r8이 r8일 때 $(AndroidLinkTool)가 Java 이름을 난독화하는 방식을 지정하는 열거형 스타일 속성입니다. 지원되는 값은 다음과 같습니다.
-
private-members는 Java 클래스 및 인터페이스 이름과 공용 또는 보호된 멤버 이름을 유지합니다. 프라이빗 및 패키지-프라이빗 멤버를 난독 제거하고 R8 최적화를 사용하도록 설정합니다. -
disabled난독화를 사용하지 않도록 설정하고, 모든 Java 이름을 유지하며, 최적화하지 않는 Android R8 기본값을 사용합니다.
이 속성은 R8 코드 축소를 사용하지 않도록 설정하지 않습니다.
이 속성은 .NET 10 서비스 릴리스에서 도입되었습니다. .NET 10에서는 disabled가 기본값이고, .NET 11 이상에서는 private-members가 기본값입니다.
AndroidResgenExtraArgs
Android 자산 및 리소스를 처리할 때 aapt 명령에 전달할 명령줄 옵션을 지정합니다.
AndroidResgenFile
생성할 리소스 파일 이름을 지정합니다. 기본 템플릿은 이를 Resource.designer.cs로 설정합니다.
AndroidResourceDesignerClassModifier
생성되는 중간 Resource 클래스의 클래스 한정자를 지정합니다. 유효한 값은 public 및 internal입니다.
기본적으로 이 설정은 public입니다.
.NET 9에 추가되었습니다.
AndroidSdkBuildToolsVersion
Android SDK 빌드 도구 패키지는 aapt 및 zipalign 등의 도구를 제공합니다. 여러 가지 버전의 빌드-도구 패키지를 동시에 설치할 수 있습니다. 패키징할 빌드-도구 패키지는 “권장” 빌드-도구 버전을 확인하고 사용하는 방식으로 선택됩니다(있는 경우). “권장” 버전이 ‘없을’ 경우 설치된 빌드-도구 패키지 중 가장 높은 버전이 사용됩니다.
$(AndroidSdkBuildToolsVersion) MSBuild 속성에는 기본 설정 빌드 도구 버전이 포함되어 있습니다. Android용 .NET 빌드 시스템은 기본값 Xamarin.Android.Common.targets을 제공하며, 최신 버전의 aapt가 충돌하고 이전 버전의 aapt가 정상작동하는 경우, 프로젝트 파일 내에서 이 기본값을 재정의하여 다른 빌드 도구 버전을 선택할 수 있습니다.
Android 서명 키 별칭
키 저장소의 키 별칭을 지정합니다. 이는 키 저장소를 만들 때 사용되는 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>
참고
env:이 $(AndroidPackageFormat)로 설정된 경우에는 aab 접두사가 지원되지 않습니다.
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>
참고
env:이 $(AndroidPackageFormat)로 설정된 경우에는 aab 접두사가 지원되지 않습니다.
AndroidSigningPlatformKey(안드로이드 서명 플랫폼 키)
apk에 서명하는 데 사용할 키 파일을 지정합니다.
애플리케이션 system을 빌드할 때에만 사용됩니다.
AndroidSigningPlatformCert
apk에 서명하는 데 사용할 인증서 파일을 지정합니다.
애플리케이션 system을 빌드할 때에만 사용됩니다.
AndroidStripILAfterAOT
AOT 컴파일된 메서드의 메서드 본문을 제거할지 여부를 지정하는 bool 속성입니다.
기본값은 false이며, AOT로 컴파일된 메서드의 본문은 제거되지 않습니다.
설정이 true로 되어 있으면 $(AndroidEnableProfiledAot)가 기본적으로 false로 설정됩니다. 즉, 지원되는 .NET 8 및 .NET 9 Mono 릴리스 빌드에서 기본적으로 모든 항목에 $(RunAOTCompilation)true 대해 Mono AOT를 사용하도록 설정됩니다.
이로 인해 앱 크기가 증가할 수 있습니다. 이 동작은 프로젝트 파일 내에서 $(AndroidEnableProfiledAot)을(를) true으로 명시적으로 설정하여 재정의할 수 있습니다.
이 속성에 대한 실험적 지원은 .NET 8에 추가되었으며 .NET 10에서 제거되었습니다.
AndroidStripNativeLibraries
네이티브 공유 라이브러리(.so 파일)에서 디버그 기호를 제거하도록 패키징 프로세스에 지시하는 bool 속성입니다.
기본값은 false 디버그 기호(있는 경우)가 패키징할 때 유지됩니다.
AndroidSupportedAbis
이 속성은 .NET 6 이상에서 더 이상 지원되지 않습니다. 이를 제거하고 Android ABI 이름 대신 $(RuntimeIdentifiers) 또는 $(RuntimeIdentifier)와 함께 .NET RID를 사용하세요.
예를 들어 다음 .NET 11 설정에는 지원되는 모든 CoreCLR 아키텍처가 포함됩니다.
<PropertyGroup>
<RuntimeIdentifiers>android-arm;android-arm64;android-x64</RuntimeIdentifiers>
</PropertyGroup>
AndroidTlsProvider
이 속성은 사용되지 않으므로 사용하면 안 됩니다.
AndroidTypeMapImplementation
타입 맵 구현을 선택하는 열거형 방식의 속성입니다.
유효한 값은 llvm-ir 및 trimmable입니다.
true이 llvm-ir이면 기본값은 trimmable이고, 그렇지 않으면 $(PublishAot)입니다.
AndroidUseApkSigner
개발자가 apksigner 도구를 jarsigner 대신 사용할 수 있도록 하는 bool 속성입니다.
Android 기본 AOT 프로필 사용
개발자가 기본 Mono AOT 프로필의 사용을 억제할 수 있는 부울 속성입니다.
이 속성이 true로 설정되지 않은 한, false가 $(AndroidEnableProfiledAot)이면 기본 프로필이 사용됩니다.
이 속성은 Mono를 사용하는 지원되는 .NET 10 이전 프로젝트에 적용됩니다. MIBC 프로필 또는 CoreCLR에 대한 동적 PGO를 선택하지 않습니다.
안드로이드유즈디자이너어셈블리
빌드 시스템이 _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에 추가되었습니다.
AndroidUseInstrumentation
애플리케이션이 테스트 또는 <instrumentation/> 호스트와 같은 <activity/>가 아니라 자체 요소를 통해 시작되었음을 나타내는 부울 속성입니다.
dotnet run
true이 생성된 AndroidManifest.xml에서 adb shell am instrument를 확인한 후 $(AndroidInstrumentation)로 실행할 때, 앱이 실행 가능한 액티비티도 선언한 경우에도.
기본값은 true가 false인 경우 true이며, 그렇지 않으면 $(EnableMSTestRunner)입니다.
실행 가능한 <activity/>가 없는 앱은 이 속성과 관계없이 해당 <instrumentation/>를 통해 실행됩니다.
.NET 11에 도입되었습니다.
AndroidUseInterpreter
MonoVM .apk 에 일반 JIT가 아닌 Mono 인터프리터가 포함되도록 하는 부울 속성입니다. Mono를 사용하는 디버그 빌드의 경우 기본값은 True이며, 그렇지 않은 경우 False입니다.
이 속성은 Mono를 사용하는 지원되는 .NET 10 이전 프로젝트에 적용됩니다. CoreCLR 설정이 아니며 Android에는 .NET 11 이상에 인터프리터가 없습니다.
실험적.
AndroidUseLegacyVersionCode
개발자가 versionCode 계산을 Xamarin.Android 8.2 이전의 동작으로 되돌릴 수 있는 부울 속성을 제공합니다. 이러한 방법은 Google Play 스토어에서 기존 애플리케이션을 사용하는 개발자만 사용해야 합니다. 새 $(AndroidVersionCodePattern) 속성을 사용하는 것이 좋습니다.
AndroidUseManagedDesignTimeResourceGenerator
디자인 타임 빌드를 전환하여 aapt 대신 관리 리소스 파서를 사용하도록 하는 부울 속성입니다.
AndroidUseNegotiateAuthentication
NTLMv2/Negotiate 인증을 지원할 수 있도록 하는 논리적 속성 AndroidMessageHandler입니다. 기본값은 False입니다.
.NET 7에 추가되었습니다.
AndroidUseSharedRuntime
이 속성은 사용되지 않으므로 사용하면 안 됩니다.
Android 버전 코드
파일 내의 /manifest/@android:versionCode의 대안으로 사용할 수 있는 MSBuild 속성입니다. 해당 기능에 참여하려면 <GenerateApplicationManifest>true</GenerateApplicationManifest> 도 활성화해야 합니다.
이는 .NET 6의 기본값입니다.
이 속성은 사용 되는 경우 $(AndroidCreatePackagePerAbi)$(AndroidVersionCodePattern) 무시됩니다.
@android:versionCode 는 각 Google Play 릴리스에 대해 증가해야 하는 정수 값입니다.
에 대한 요구 사항에 대한 자세한 내용은 Android 설명서를 참조하세요/manifest/@android:versionCode.
AndroidVersionCodePattern
개발자가 매니페스트에서 versionCode을 사용자 지정할 수 있는 문자열 속성입니다.
APK의 버전 코드를 생성하는 방법에 대한 정보를 원하시면 Creating the Version Code for the APK를 참조하세요. versionCode를 결정하는 데 도움이 되는 상세한 내용을 확인하세요.
예를 들어 abi가 armeabi이고 매니페스트의 versionCode가 123일 경우 {abi}{versionCode}는 1123가 True일 때 $(AndroidCreatePackagePerAbi)의 versionCode를 생성하고, 그렇지 않을 경우 값 123을 생성합니다.
abi가 x86_64이고 매니페스트의 versionCode가 44일 경우.
544가 True일 때 $(AndroidCreatePackagePerAbi)를 생성하고, 그렇지 않을 경우 값 44를 생성합니다.
왼쪽 패딩 형식 문자열 {abi}{versionCode:0000}을 포함하면 50044에 versionCode을(를) 왼쪽 패딩하므로 0이(가) 생성됩니다. 또는 와 같은 10진수 패딩을 사용할 수 있습니다.
{abi}{versionCode:D4} 이전 예제와 동일한 작업을 수행합니다.
값이 정수여야 하므로 ‘0’ 및 ‘Dx’ 같은 안쪽 여백 형식만 지원됩니다.
미리 정의된 주요 항목
abi – 앱의 대상 abi를 삽입합니다.
- 2 –
armeabi-v7a - 3 –
x86 - 4 –
arm64-v8a - 5 –
x86_64
- 2 –
minSDK – 지원되는 최소 Sdk 값을 정의되지 않은 경우 삽입
AndroidManifest.xml11합니다.versionCode – 에서 직접
Properties\AndroidManifest.xml버전 코드를 사용합니다.
$(AndroidVersionCodeProperties) 속성(다음에 정의됨)을 사용하여 사용자 지정 항목을 정의할 수 있습니다.
기본적으로 값은 {abi}{versionCode:D6}으로 설정됩니다. 개발자가 이전 동작을 유지하려는 경우 $(AndroidUseLegacyVersionCode) 속성을 true로 설정하여 기본값을 재정의할 수 있습니다.
AndroidVersionCodeProperties
개발자가 .와 함께 사용할 사용자 지정 항목을 정의할 수 있는 문자열 속성입니다 $(AndroidVersionCodePattern).
key=value 쌍 형식입니다.
value의 모든 항목은 정수 값이어야 합니다. 예: screen=23;target=$(_AndroidApiLevel) 보시다시피 문자열에 기존 또는 사용자 지정 MSBuild 속성을 활용할 수 있습니다.
ApplicationId
파일 내의 /manifest/@package의 대안으로 사용할 수 있는 MSBuild 속성입니다. 해당 기능에 참여하려면 <GenerateApplicationManifest>true</GenerateApplicationManifest> 도 활성화해야 합니다.
이는 .NET 6의 기본값입니다.
에 대한 요구 사항에 대한 자세한 내용은 Android 설명서를 참조하세요/manifest/@package.
애플리케이션 제목
파일 내의 /manifest/application/@android:label의 대안으로 사용할 수 있는 MSBuild 속성입니다. 해당 기능에 참여하려면 <GenerateApplicationManifest>true</GenerateApplicationManifest> 도 활성화해야 합니다.
이는 .NET 6의 기본값입니다.
에 대한 요구 사항에 대한 자세한 내용은 Android 설명서를 참조하세요/manifest/application/@android:label.
응용 프로그램 버전
파일 내의 /manifest/@android:versionName의 대안으로 사용할 수 있는 MSBuild 속성입니다. 해당 기능에 참여하려면 <GenerateApplicationManifest>true</GenerateApplicationManifest> 도 활성화해야 합니다.
이는 .NET 6의 기본값입니다.
에 대한 요구 사항에 대한 자세한 내용은 Android 설명서를 참조하세요/manifest/@android:versionName.
Aot 어셈블리
어셈블리를 Mono가 AOT(Ahead-of-Time) 방식으로 네이티브 코드로 컴파일하여 애플리케이션에 포함할지 여부를 결정하는 부울 속성입니다.
지정되지 않은 경우 해당 유효 값은 디버그 빌드 및 True 지원되는 .NET 10 이전 대상 프레임워크에서 Mono를 사용하는 릴리스 빌드의 경우 다음과 같습니다.$(RunAOTCompilation)False
.NET 7에서는 사용되지 않습니다. Mono를 사용하는 지원되는 .NET 10 이전 프로젝트의 경우 대신 MSBuild 속성으로 $(RunAOTCompilation) 마이그레이션합니다.
$(AotAssemblies)를 지정하면(false로 설정하는 경우 포함) XA1029 경고가 발생합니다.
CoreCLR 또는 NativeAOT에 대해 이를 true로 설정하면, 기본값 지정 논리가 $(RunAOTCompilation)을 true로 전달하므로 $(RunAOTCompilation)가 설정되지 않았거나(또는 달리 $(AotAssemblies)로 평가되는 경우) 빌드를 중단시키는 XA1044 오류가 발생합니다.
.NET 11 CoreCLR 프로젝트의 경우 $(AotAssemblies)을 추가하지 말고 $(RunAOTCompilation)을 제거하세요. CoreCLR은 Mono AOT 파이프라인을 사용하지 않습니다.
AProfUtilExtraOptions
지원되는 .NET 10 이하 프로젝트에서 레거시 Mono AOT 프로파일링 대상을 사용할 때 aprofutil에 전달할 추가 옵션입니다.
BeforeBuildAndroidAssetPacks
이 속성에 나열된 MSBuild 대상은 AssetPack 항목이 빌드되기 바로 전에 실행됩니다.
.NET 9에 추가됨
BeforeGenerateAndroidManifest
이 속성에 나열된 MSBuild 대상은 _GenerateJavaStubs 바로 앞에 실행됩니다.
구성
사용할 빌드 구성(예: “디버그” 또는 “릴리스”)을 지정합니다. Configuration 속성은 대상 동작을 결정하는 다른 속성에 대한 기본값을 결정하는 데 사용됩니다. IDE 내에 추가 구성을 만들 수 있습니다.
기본적으로, 해당 Debug 구성이 결과를 초래합니다.
Install 그리고
SignAndroidPackage 는 다른 파일 및 패키지가 작동해야 하는 더 작은 Android 패키지를 만드는 것을 목표로 합니다.
기본 Release 구성으로 인해 결과가 발생합니다.
Install 그리고
SignAndroidPackage는 독립 실행형이며 다른 패키지 또는 파일을 설치하지 않고 사용할 수 있는 Android 패키지를 만드는 것을 대상으로 합니다.
디버그 심볼
Android 패키지가 디버깅 가능한지를 결정하는 부울 값으로, $(DebugType) 속성과 함께 사용됩니다.
디버그 가능한 패키지에는 디버그 기호가 포함되고, //application/@android:debuggable 특성을 true로 설정하며, 자동으로
INTERNET 디버거가 프로세스에 연결할 수 있도록 권한을 부여합니다.
DebugSymbols가 True이고 이 빈 문자열이거나 DebugType이면 애플리케이션을 디버그할 수 있습니다.Full
DebugType
빌드의 일부로 생성할 디버그 기호의 유형을 지정하며, 애플리케이션의 디버그 가능 여부에도 영향을 줍니다. 가능한 값에는 다음이 있습니다.
Full: 전체 기호가 생성됩니다. 만약
DebugSymbolsMSBuild 속성이True인 경우, 애플리케이션 패키지가 디버그 가능하게 됩니다.PdbOnly: "PDB" 기호가 생성됩니다. 애플리케이션 패키지를 디버그할 수 없습니다.
DebugType이 설정되지 않았거나 빈 문자열이면 DebugSymbols 속성에서 애플리케이션의 디버그 가능 여부를 제어합니다.
Device
사용 dotnet run --device <Device> 시 대상으로 지정할 Android 디바이스 또는 에뮬레이터 또는 디바이스와 상호 작용하는 MSBuild 대상(예: Run, Install또는 Uninstall)을 지정합니다.
값은 반환된 전체 디바이스 일련 번호 또는 식별자 adb devices여야 합니다. 예를 들어, 디바이스 직렬이 emulator-5554라면, -p:Device=emulator-5554을 사용해야 합니다.
설정할 때 이 속성은 AdbTarget 값을 -s "<Device>" 속성을 초기화하는 데 사용됩니다.
디바이스 선택에 대한 자세한 내용은 .NET SDK 디바이스 선택 사양을 참조하세요.
진단주소
dotnet-dsrouter 및 127.0.0.1에서 제공된 값, $(DiagnosticConfiguration)의 IP 주소 구성 요소 또는 DOTNET_DiagnosticPorts와 같은 값입니다.
이 속성이 비어 있지 않고 $(AndroidEnableProfiler)이(가) false로 명시적으로 설정되지 않은 경우 Android 진단이 암시적으로 활성화됩니다.
CoreCLR의 경우 결과 TCP 엔드포인트는 일반적으로 루프백으로 유지되며 dotnet-dsrouter에서 사용됩니다. Android 에뮬레이터의 경우 개발 머신에 접속하려면 dotnet-dsrouter server-server --tcp-server 127.0.0.1:9000 --forward-port Android를 사용합니다. 실제 기기의 경우 127.0.0.1로 Android 포트 포워딩을 활성화한 상태에서 10.0.2.2를 사용합니다.
기본값은 127.0.0.1입니다.
진단 구성
dotnet-dsrouter가 DOTNET_DiagnosticPorts에 대해 다음과 같이 제공한 값:
127.0.0.1:9000,connect,suspend127.0.0.1:9000,connect,nosuspend
명시적 구성 없이 진단을 사용하도록 설정하면 파생된 기본값은 주소127.0.0.1, 포트 9000DiagnosticSuspend=false및 DiagnosticListenMode=connect.
명령줄에서 , 문자를 %2c에 전달할 경우 dotnet build로 이스케이프해야 합니다.
dotnet build -c Release -p:DiagnosticConfiguration=127.0.0.1:9000%2cconnect%2csuspend
그러면 애플리케이션 내에 패키지된 환경 변수가 자동으로 설정 DOTNET_DiagnosticPorts 됩니다.
connect 모드에서는 Android 런타임이 구성된 TCP 엔드포인트에 연결하고 dotnet-dsrouter 그 연결을 로컬 진단 도구로 중계합니다. 엔드포인트는 인증되지 않고 암호화되지 않으므로 로컬 개발 인터페이스에 유지합니다.
이 속성 또는 아래의 구성 요소 속성 중 하나를 설정하면 $(AndroidEnableProfiler)가 명시적으로 false로 설정되지 않은 경우 Android 진단이 암시적으로 사용 설정됩니다.
DiagnosticListenMode
제공된 값은 dotnet-dsrouter, connect과 같은 $(DiagnosticConfiguration) 또는 DOTNET_DiagnosticPorts의 수신 모드 구성 요소입니다.
이 속성이 비어 있지 않고 $(AndroidEnableProfiler)이(가) false로 명시적으로 설정되지 않은 경우 Android 진단이 암시적으로 활성화됩니다.
기본값은 connect입니다.
DiagnosticPort
dotnet-dsrouter에서 제공되는 값, 예를 들어 9000, $(DiagnosticConfiguration)의 포트 구성 요소 또는 DOTNET_DiagnosticPorts.
이 속성이 비어 있지 않고 $(AndroidEnableProfiler)이(가) false로 명시적으로 설정되지 않은 경우 Android 진단이 암시적으로 활성화됩니다.
기본값은 9000입니다.
DiagnosticSuspend
dotnet-dsrouter에서 제공하는 부울 값으로, true/suspend 또는 false/nosuspend의 구성 요소인 $(DiagnosticConfiguration) 또는 DOTNET_DiagnosticPorts와 같은 값입니다.
이 속성이 비어 있지 않고 $(AndroidEnableProfiler)이(가) false로 명시적으로 설정되지 않은 경우 Android 진단이 암시적으로 활성화됩니다.
기본값은 false입니다.
EmbedAssembliesIntoApk
앱의 어셈블리를 애플리케이션 패키지에 포함해야 하는지 여부를 결정하는 부울 속성입니다.
이 속성은 의 역입니다 $(AndroidEnableFastDeployment). 새 프로젝트는 빠른 배포를 제어하는 데 사용해야 $(AndroidEnableFastDeployment) 합니다. 두 속성이 모두 설정된 $(EmbedAssembliesIntoApk) 경우 우선합니다.
이 속성은 릴리스 빌드의 경우 True, 디버그 빌드의 경우 False여야 합니다. 디바이스가 빠른 배포를 지원하지 않는 경우, 디버그 빌드에 포함되어야 할 수도 있습니다 True.
충돌 보고서 사용
CoreCLR 또는 NativeAOT 런타임을 사용할 때 환경 변수 DOTNET_EnableCrashReport을(를) 1(으)로 설정하는 부울 속성입니다. 이렇게 하면 애플리케이션 시작 시 크래시 보고서 생성이 가능합니다.
이 속성의 기본값은 False이며, $(UseMonoRuntime)이 True인 경우 무시됩니다.
진단 활성화
선택한 런타임에 대한 진단을 사용하도록 설정하는 Android SDK/MSBuild 속성입니다. Mono 애플리케이션의 동의어 $(AndroidEnableProfiler) 입니다.
CoreCLR의 경우 dotnet-trace 및 dotnet-gcdump에서 사용하는 진단 포트 구성을 사용하도록 설정합니다.
$(EnableDiagnostics) 가 CoreCLR 런타임 환경 변수 DOTNET_EnableDiagnostics와 동일하지 않습니다. 전자는 Android SDK/MSBuild 대상에 의해 평가됩니다. 후자는 환경 변수로 제공된 경우 런타임에서 읽습니다.
기본적으로 이 속성은 False입니다.
LLVM 활성화
어셈블리를 네이티브 코드로 미리 컴파일할 때 Mono AOT 컴파일러에서 LLVM을 사용할지 여부를 결정하는 부울 속성입니다.
이 속성을 사용하는 프로젝트를 빌드하려면 Android NDK를 설치해야 합니다.
기본적으로 이 속성은 False입니다.
이 속성은 Mono를 사용하는 지원되는 .NET 10 및 이전 버전 프로젝트에 적용되며, $(RunAOTCompilation)가 True인 경우에만 컴파일에 영향을 줍니다.
CoreCLR 또는 NativeAOT의 경우 이 속성을 true로 설정하면 해당 속성이 로 다시 설정되고 false 오류와 함께 빌드가 중지됩니다.
EnableMSTestRunner
Android 테스트 프로젝트에 MSTest Runner 를 사용하도록 설정하는 부울 속성입니다.
true로 설정하면 dotnet run는 am instrument 대신 am start를 통해 애플리케이션을 실행하여 Android의 계측 프로토콜을 통해 테스트 결과를 보고할 수 있습니다.
기본적으로 이 속성은 False입니다.
.NET 11에 도입되었습니다.
EnableProguard
Java 코드를 연결하기 위해 패키징 프로세스의 일부로 proguard를 실행할지 여부를 결정하는 부울 속성입니다.
기본적으로 이 속성은 False입니다.
True일 경우 @(ProguardConfiguration) 파일을 사용하여 proguard 실행을 제어합니다.
이벤트 소스 지원
false로 설정하면 .NET의 EventSource 지원이 잘려진 Android 애플리케이션에서 비활성화됩니다. 이 기능을 사용하지 않도록 설정하면 .NET 진단 도구(예: dotnet-counters 작동)가 작동하지 않지만 애플리케이션 크기가 줄어듭니다.
기본적으로 false 모드에서 Release로 설정됩니다, 단 $(EnableDiagnostics) 또는 $(AndroidEnableProfiler)가 활성화되지 않는 한.
애플리케이션 매니페스트 생성
최종 AndroidManifest.xml 파일에서 값을 내보내는 다음 MSBuild 속성을 사용하거나 사용하지 않도록 설정합니다.
기본값 $(GenerateApplicationManifest) 은 .입니다 true.
JavaMaximumHeapSize
패키징 프로세스의 일부로 파일을 빌드할 때 사용할 -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
이 MSBuild 속성은 사용되지 않으며 더 이상 지원되지 않습니다.
MauiEnableFullReadyToRun
CoreCLR을 사용하고 ReadyToRun이 사용하도록 설정된 Release 구성으로 빌드되는 .NET MAUI Android 애플리케이션용 부울 속성입니다.
이 속성이 설정되지 않았거나 false인 경우, MAUI는 기본 MIBC 프로필과 함께 부분 ReadyToRun을 사용합니다. 전체 ReadyToRun을 사용하도록 설정하려면 true 이 속성을 설정합니다. 이 속성은 다음과 같은 경우에는 $(PublishReadyToRun)false영향을 주지 않습니다.
전체 ReadyToRun은 애플리케이션 및 다운로드 크기를 늘리지만 더 많은 메서드가 미리 컴파일되어 있으므로 런타임 성능을 향상시킬 수 있습니다.
.NET MAUI CoreCLR 및 ReadyToRun에 대한 자세한 내용은 .NET MAUI 런타임 및 컴파일을 참조하세요.
MetricsSupport
false로 설정하면 잘려진 Android 애플리케이션에서 .NET의 메트릭 지원이 비활성화됩니다. 이 기능을 비활성화하면 System.Diagnostics.Metrics와 같은 API들이 작동하지 않지만, 애플리케이션 크기는 줄어듭니다.
기본적으로 false 모드에서 Release로 설정됩니다, 단 $(EnableDiagnostics) 또는 $(AndroidEnableProfiler)가 활성화되지 않는 한.
MonoAndroidAssetPrefix
파일 이름의 시작 부분에서 제거되는 경로 접두사를 지정하는 빌드 작업을 위한 AndroidAsset. 리소스가 있는 위치를 변경하도록 하기 위함입니다.
기본값은 Assets입니다. Java 프로젝트 구조체의 경우 이를 assets로 변경합니다.
MonoAndroidResourcePrefix
파일 이름의 시작 부분에서 제거되는 경로 접두사를 지정하는 빌드 작업을 위한 AndroidResource. 리소스가 있는 위치를 변경하도록 하기 위함입니다.
기본값은 Resources입니다. Java 프로젝트 구조체의 경우 이를 res로 변경합니다.
MonoSymbolArchive
참고
Xamarin.Android의 레거시 MSBuild 속성입니다. .NET 6 이상에서는 사용할 수 없습니다.
릴리스 스택 추적에서 "실제" 파일 이름 및 줄 번호 정보를 추출할 수 있도록, 나중에 사용할 .mSYM 아티팩트를 생성할지를 mono-symbolicate로 제어하는 불리언 속성입니다.
$(EmbedAssembliesIntoApk) "릴리스" 앱의 경우, 디버깅 기호가 사용하도록 설정되어 있으면 기본적으로 True입니다.
$(DebugSymbols) 가 True이고,
$(Optimize) 은 True입니다.
PublishReadyToRun
CoreCLR을 사용할 때 어셈블리가 ReadyToRun 형식으로 컴파일되는지 여부를 제어하는 부울 속성입니다. ReadyToRun 어셈블리는 MSIL 및 네이티브 코드를 모두 포함합니다. 이렇게 하면 JIT 호환성을 유지하면서 애플리케이션 시작 시간을 향상시킬 수 있지만 애플리케이션 및 다운로드 크기가 증가합니다.
CoreCLR을 사용하는 Android 애플리케이션의 경우, 이 속성의 기본값은 Release 구성에서 true이며, Debug 구성에서는 기본적으로 활성화되지 않습니다. Mono 또는 NativeAOT를 사용할 때는 ReadyToRun이 적용되지 않습니다.
ReadyToRun에는 트리밍이 필요합니다.
true이(가) $(PublishTrimmed)이(가) 아니면, Android용 .NET은(는) PublishReadyToRun 및 $(PublishReadyToRunComposite)을(를) 비활성화하고 XA0119 경고를 출력합니다.
ReadyToRun 컴파일은 기본적으로 복합입니다.
$(PublishReadyToRunComposite)을(를) 참조하세요.
.NET MAUI도 기본 MIBC 프로필을 사용한 부분 ReadyToRun 방식을 사용합니다. 전체 ReadyToRun에 옵트인하려면 참조 $(MauiEnableFullReadyToRun) 하세요.
자세한 내용은 .NET MAUI 런타임 및 컴파일을 참조하세요.
PublishReadyToRunComposite
ReadyToRun 컴파일이 애플리케이션 어셈블리를 복합 이미지로 결합하는지 여부를 제어하는 부울 속성입니다. 복합 ReadyToRun은 어셈블리 간 최적화를 지원하지만 빌드 시간을 늘릴 수 있습니다.
CoreCLR을 사용하는 Android 애플리케이션의 경우 $(PublishReadyToRun)이(가) true이면 이 속성의 기본값은 true입니다.
복합 ReadyToRun을 포함한 ReadyToRun은 $(PublishTrimmed)이(가) true이어야 합니다.
RunAOTCompilation
어셈블리가 Mono AOT 컴파일러를 사용하여 미리 컴파일되고 Mono 런타임을 사용하는 애플리케이션에 포함되는지 여부를 결정하는 부울 속성입니다. 이 속성은 Debug 빌드에서는 기본적으로 False이고, 지원되는 .NET 10 이하 대상 프레임워크에서 Mono를 사용하는 Release 빌드에서는 기본적으로 True입니다.
이 MSBuild 속성은 $(AotAssemblies) Xamarin.Android의 MSBuild 속성을 대체합니다. Blazor WASM에 사용되는 것과 동일한 속성입니다.
이 속성은 ReadyToRun 또는 NativeAOT를 사용하도록 설정하지 않습니다. 이를 CoreCLR 또는 NativeAOT에 대해 true로 설정하면 로 재설정되고 false 오류와 함께 빌드가 중지됩니다.
또한 CoreCLR로 false 설정하면 속성을 자동으로 무시하는 대신 XA1044 오류와 함께 빌드가 중지됩니다. .NET 11부터 ReadyToRun(R2R) AOT 컴파일을 비활성화하려면 $(PublishReadyToRun)를 제거하고 false을 $(RunAOTCompilation)로 설정합니다.
NativeAOT에 대해 false을 $(RunAOTCompilation)로 설정하는 것은 계속 허용됩니다.
UseMonoRuntime
Android 애플리케이션이 지원되는 .NET 10 이전 대상에 CoreCLR 대신 Mono 런타임을 사용하는지 여부를 제어하는 부울 속성입니다.
Mono를 true 사용하거나 false 해당 대상에서 CoreCLR을 사용하도록 이 속성을 설정합니다.
$(PublishAot)는 우선 적용되며, true로 설정된 경우 지원되는 게시 또는 최적화 빌드에 대해 NativeAOT를 선택합니다.
이 속성은 true 기본적으로 .NET 10 이전 버전이므로 Android 애플리케이션은 Mono를 사용합니다. .NET 11 이상에서는 기본값false으로 설정되므로 Android 애플리케이션은 CoreCLR을 사용하고 명시적 true 값은 NETSDK1242 함께 거부됩니다.
자세한 내용은 .NET MAUI 런타임 및 컴파일을 참조하세요.
WaitForExit
Android 애플리케이션을 시작할 때의 dotnet run 동작을 제어하는 부울 속성입니다.
**
$(WaitForExit)가 기본값인 false이 아닐 때, dotnet run는 다음을 수행합니다.
- Android 애플리케이션 시작
- 애플리케이션 프로세스로 필터링된 스트림
logcat출력 - 애플리케이션이 종료되거나 사용자가 Ctrl+C를 누를 때까지 기다립니다.
- Ctrl+C를 누를 때 애플리케이션 강제 중지
$(WaitForExit)이 false일 때 dotnet run는 애플리케이션을 시작한 후, 애플리케이션이 종료되기를 기다리거나 출력을 스트리밍하지 않고 즉시 반환됩니다.
또한 이 속성은 애플리케이션이 -w를 통해 시작될 때 adb shell am instrument에 $(AndroidInstrumentation)이 전달되는지 여부도 제어합니다:
$(WaitForExit) |
시작 <activity/> |
시작 <instrumentation/> |
|---|---|---|
true(기본값) |
adb shell am start -S -W |
adb shell am instrument -w -r |
false |
adb shell am start -S |
adb shell am instrument -r |
adb shell am instrument는 계측이 완료된 후에만 결과를 보고하므로, 계측 출력이나 의미 있는 종료 코드가 필요한 경우 $(WaitForExit)false 상태여서는 안 됩니다. 이는 테스트 실행 또는 BenchmarkDotNet 호스트와 같은 시나리오에서 중요하므로 dotnet test 항상 기본값을 사용합니다.
.NET 11에 도입되었습니다.