항목 빌드

빌드 항목은 Xamarin.Android 애플리케이션 또는 라이브러리 프로젝트가 빌드되는 방식을 제어합니다.

AndroidAsset

Java Android 프로젝트의 assets 폴더에 포함되는 파일인 Android 자산을 지원합니다.

AndroidAarLibrary

.aar 파일을 직접 참조하려면 AndroidAarLibrary의 빌드 작업을 사용해야 합니다. 이 빌드 동작은 Xamarin 구성 요소에서 가장 일반적으로 사용됩니다. 즉, Google Play 및 기타 서비스를 작동하는 데 필요한 파일에 대한 참조 .aar 를 포함합니다.

이 빌드 동작을 사용하는 파일은 라이브러리 프로젝트에 있는 포함 리소스와 비슷한 방식으로 처리됩니다. .aar은 중간 디렉터리로 추출됩니다. 그런 다음, 모든 자산, 자원 및 .jar 파일이 적절한 항목 그룹에 포함됩니다.

AndroidAotProfile

프로필 기반 AOT에서 사용할 AOT 프로필을 제공하는 데 사용됩니다.

AOT 프로필을 포함하는 파일로 AndroidAotProfile 빌드 동작을 설정하여 Visual Studio에서 사용할 수도 있습니다.

AndroidAppBundleMetaDataFile

Android 앱 번들에 메타데이터로 포함될 파일을 지정합니다. 플래그 값의 형식은 <bundle-path>:<physical-file> 앱 번들의 메타데이터 디렉터리 내의 파일 위치를 나타내는 위치 bundle-path 이며 physical-file 저장할 원시 데이터를 포함하는 기존 파일입니다.

<ItemGroup>
  <AndroidAppBundleMetaDataFile
    Include="com.android.tools.build.obfuscation/proguard.map:$(OutputPath)mapping.txt"
  />
</ItemGroup>

자세한 내용은 bundletool 설명서를 참조하세요.

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

AndroidBoundLayout

AndroidGenerateLayoutBindings 속성이 false로 설정된 경우 레이아웃 파일에 대해 코드 숨김을 생성해야 함을 나타냅니다. 다른 모든 측면에서는 위에서 설명한 AndroidResource와 동일합니다. 이 작업은 레이아웃 파일에서 사용할 수 있습니다.

<AndroidBoundLayout Include="Resources\layout\Main.axml" />

AndroidEnvironment

빌드 동작이 AndroidEnvironment인 파일은 프로세스 시작 시 환경 변수 및 시스템 속성을 초기화하는 데 사용됩니다. AndroidEnvironment 빌드 동작은 여러 파일에 적용될 수 있으며, 특정 순서로 평가되지 않습니다(따라서 여러 파일에 동일한 환경 변수나 시스템 속성을 지정해서는 안 됨).

AndroidJavaLibrary

빌드 동작이 AndroidJavaLibrary 있는 파일은 최종 Android 패키지에 포함될 Java 보관 파일( .jar 파일)입니다.

AndroidJavaSource

빌드 동작이 AndroidJavaSource 있는 파일은 최종 Android 패키지에 포함될 Java 소스 코드입니다.

.NET 7부터 프로젝트 디렉터리 내의 AndroidJavaSource모든 **\*.java 파일에는 자동으로 빌드 작업이 있으며셈블리 빌드 전에 바인딩됩니다. C# 코드에서 파일 내에 있는 형식 및 멤버를 **\*.java 쉽게 사용할 수 있습니다.

이 동작을 사용하지 않도록 설정하려면 False로 설정합니다 %(AndroidJavaSource.Bind) .

AndroidLibrary

AndroidLibrary.jar.aar 파일을 프로젝트에 포함하는 방법을 간소화하기 위한 새로운 빌드 동작입니다.

모든 프로젝트에서 다음과 같이 지정할 수 있습니다.

<ItemGroup>
  <AndroidLibrary Include="foo.jar" />
  <AndroidLibrary Include="bar.aar" />
</ItemGroup>

위 코드 조각의 결과는 Xamarin.Android 프로젝트 형식에 따라 달라집니다.

이러한 단순화는 어디서나 AndroidLibrary를 사용할 수 있다는 의미입니다.

이 빌드 동작은 Xamarin.Android 11.2에서 추가되었습니다.

AndroidLintConfig

빌드 작업 'AndroidLintConfig'는 속성과 함께 사용해야 합니다.$(AndroidLintEnabled) 속성 이 빌드 작업이 포함된 파일은 함께 병합되어 Android lint 도구에 전달됩니다. 사용하거나 사용하지 않도록 설정하려면 테스트에 대한 정보가 포함된 XML 파일이어야 합니다.

자세한 내용은 lint 설명서를 참조하세요.

AndroidManifestOverlay

AndroidManifestOverlay 빌드 작업을 사용하여 매니페스트 병합기 도구에 파일을 제공할 AndroidManifest.xml 수 있습니다. 이 빌드 작업이 있는 파일은 참조의 기본 AndroidManifest.xml 파일 및 매니페스트 파일과 함께 매니페스트 병합에 전달됩니다. 그런 다음 최종 매니페스트에 병합됩니다.

이 빌드 작업을 사용하여 빌드 구성에 따라 앱에 변경 내용 및 설정을 제공할 수 있습니다. 예를 들어 디버깅 중에만 특정 권한이 필요한 경우 디버깅할 때 오버레이를 사용하여 해당 권한을 주입할 수 있습니다. 다음과 같은 오버레이 파일 내용을 예로 들어 보겠습니다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-permission android:name="android.permission.CAMERA" />
</manifest>

다음을 사용하여 디버그 빌드에 대한 매니페스트 오버레이를 추가할 수 있습니다.

<ItemGroup>
  <AndroidManifestOverlay Include="DebugPermissions.xml" Condition=" '$(Configuration)' == 'Debug' " />
</ItemGroup>

이 빌드 동작은 Xamarin.Android 11.2에서 도입되었습니다.

AndroidInstallModules

앱 번들을 설치할 때 bundletool 명령으로 설치되는 모듈을 지정합니다.

이 빌드 작업은 Xamarin.Android 11.3에서 도입되었습니다.

AndroidNativeLibrary

네이티브 라이브러리AndroidNativeLibrary에 빌드 동작을 설정하여 빌드에 추가됩니다.

Android는 여러 ABI(애플리케이션 이진 인터페이스)를 지원하기 때문에 빌드 시스템은 네이티브 라이브러리가 빌드된 ABI를 알고 있어야 합니다. ABI를 지정할 수 있는 방법에는 두 가지가 있습니다.

  1. 경로 "검색".
  2. %(Abi) 항목 메타데이터 사용

경로 검색을 사용하면 네이티브 라이브러리의 부모 디렉터리 이름을 사용하여 라이브러리가 대상으로 하는 ABI를 지정할 수 있습니다. 따라서 빌드에 lib/armeabi-v7a/libfoo.so를 추가하면 ABI가 armeabi-v7a로 "검색"됩니다.

항목 특성 이름

Abi – 네이티브 라이브러리의 ABI를 지정합니다.

<ItemGroup>
  <AndroidNativeLibrary Include="path/to/libfoo.so">
    <Abi>armeabi-v7a</Abi>
  </AndroidNativeLibrary>
</ItemGroup>

AndroidResource

빌드 동작이 AndroidResource인 모든 파일은 빌드 프로세스 중에 Android 리소스에 컴파일되며, $(AndroidResgenFile)을 통해 액세스할 수 있게 됩니다.

<ItemGroup>
  <AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>

고급 사용자는 동일한 유효 경로를 사용하여 여러 구성에서 여러 리소스를 사용하기를 원할 수 있습니다. 이를 위해서는 여러 리소스 디렉터리가 있고 이러한 여러 디렉터리에 동일한 상대 경로를 가진 파일이 있어야 하며, 여러 구성의 여러 파일을 조건부로 포함하는 MSBuild 조건을 사용해야 합니다. 예시:

<ItemGroup Condition="'$(Configuration)'!='Debug'">
  <AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>
<ItemGroup  Condition="'$(Configuration)'=='Debug'">
  <AndroidResource Include="Resources-Debug\values\strings.xml"/>
</ItemGroup>
<PropertyGroup>
  <MonoAndroidResourcePrefix>Resources;Resources-Debug</MonoAndroidResourcePrefix>
</PropertyGroup>

LogicalName – 리소스 경로를 명시적으로 지정합니다. 파일을 여러 개의 고유 리소스 이름으로 사용할 수 있도록 "별칭 지정" 파일을 허용합니다.

<ItemGroup Condition="'$(Configuration)'!='Debug'">
  <AndroidResource Include="Resources/values/strings.xml"/>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Debug'">
  <AndroidResource Include="Resources-Debug/values/strings.xml">
    <LogicalName>values/strings.xml</LogicalName>
  </AndroidResource>
</ItemGroup>

AndroidResourceAnalysisConfig

빌드 작업 AndroidResourceAnalysisConfig는 파일을 Xamarin Android Designer 레이아웃 진단 도구에 대한 심각도 수준 구성 파일로 표시합니다. 이는 현재 레이아웃 편집기에서만 사용되며 빌드 메시지에는 사용되지 않습니다.

자세한 내용은 Android 리소스 분석 설명서를 참조하세요.

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

콘텐츠

일반적인 Content 빌드 동작이 지원되지 않습니다(비용이 많이 드는 최초 실행 단계 없이 지원하는 방법을 파악하지 못했기 때문).

Xamarin.Android 5.1부터 @(Content) 빌드 작업을 사용하려고 하면 XA0101 경고가 표시됩니다.

EmbeddedJar

Xamarin.Android 바인딩 프로젝트에서 EmbeddedJar 빌드 동작은 Java/Kotlin 라이브러리를 바인딩하고 .jar 파일을 라이브러리에 포함합니다. Xamarin.Android 애플리케이션 프로젝트에서 라이브러리를 사용하는 경우 최종 Android 애플리케이션에 Java/Kotlin 코드를 포함할 뿐만 아니라 C#에서 Java/Kotlin API에 액세스할 수 있습니다.

Xamarin.Android 11.2부터 다음과 같은 대체 방법으로 AndroidLibrary 빌드 동작을 사용할 수 있습니다.

<Project>
  <ItemGroup>
    <AndroidLibrary Include="Library.jar" />
  </ItemGroup>
</Project>

EmbeddedNativeLibrary

Xamarin.Android 클래스 라이브러리 또는 Java 바인딩 프로젝트에서 EmbeddedNativeLibrary 빌드 동작은 lib/armeabi-v7a/libfoo.so 같은 네이티브 라이브러리를 라이브러리로 함께 묶습니다. Xamarin.Android 애플리케이션에서 라이브러리를 사용하는 경우 libfoo.so 파일이 최종 Android 애플리케이션에 포함됩니다.

Xamarin.Android 11.2부터 대체 방법으로 AndroidNativeLibrary 빌드 동작을 사용할 수 있습니다.

EmbeddedReferenceJar

Xamarin.Android 바인딩 프로젝트에서 EmbeddedReferenceJar 빌드 동작은 .jar 파일을 라이브러리에 포함하지만 EmbeddedJar처럼 C# 바인딩을 만들지 않습니다. Xamarin.Android 애플리케이션 프로젝트에서 라이브러리를 사용하는 경우 Java/Kotlin 코드가 최종 Android 애플리케이션에 포함됩니다.

Xamarin.Android 11.2부터 <AndroidLibrary Include="..." Bind="false" /> 같은 대체 방법으로 AndroidLibrary 빌드 동작을 사용할 수 있습니다.

<Project>
  <ItemGroup>
    <!-- A .jar file to bind & embed -->
    <AndroidLibrary Include="Library.jar" />
    <!-- A .jar file to only embed -->
    <AndroidLibrary Include="Dependency.jar" Bind="false" />
  </ItemGroup>
</Project>

JavaDocJar

Xamarin.Android 바인딩 프로젝트에서 JavaDocJar 빌드 작업은 Javadoc HTML을 포함하는 파일에서 .jar 사용됩니다. Javadoc HTML은 매개 변수 이름을 추출하기 위해 구문 분석됩니다.

다음을 포함하여 특정 “Javadoc HTML 언어”만 지원됩니다.

  • JDK 1.7 javadoc 출력.
  • JDK 1.8 javadoc 출력.
  • Droiddoc 출력.

이 빌드 동작은 Xamarin.Android 11.3에서 사용되지 않으며 .NET 6에서 지원되지 않습니다. @(JavaSourceJar) 빌드 동작을 사용하는 것이 좋습니다.

JavaSourceJar

Xamarin.Android 바인딩 프로젝트에서 JavaSourceJar 빌드 작업은 Javadoc 설명서 주석이 포함된 Java 소스 코드를 포함하는 파일에 사용됩니다.jar.

Xamarin.Android 11.3 이전에는 Javadoc가 빌드 시 javadoc 유틸리티를 통해 HTML로 변환되었다가 나중에 XML 문서로 전환되었습니다.

Xamarin.Android 11.3부터 Javadoc는 생성된 바인딩 소스 코드 내에서 C# XML 문서 주석으로 변환됩니다.

$(AndroidJavadocVerbosity)는 가져온 Javadoc가 얼마나 “자세한지” 또는 “완전한지”를 제어합니다.

Xamarin.Android 11.3부터 다음 MSBuild 메타데이터가 지원됩니다.

  • %(CopyrightFile): 모든 가져온 문서에 추가될, Javadoc 콘텐츠에 대한 저작권 정보를 포함하는 파일의 경로입니다.

  • %(UrlPrefix): 가져온 문서 내 온라인 문서에 대한 연결을 지원하는 URL 접두사입니다.

  • %(UrlStyle): 온라인 문서에 연결할 때 생성할 URL의 “스타일”입니다. 현재 developer.android.com/reference@2020-Nov 스타일 하나만 지원됩니다.

Xamarin.Android 12.3부터 다음 MSBuild 메타데이터가 지원됩니다.

  • %(DocRootUrl): 가져온 설명서의 모든 {@docroot} 인스턴스 대신 사용할 URL 접두사입니다.

LibraryProjectZip

Xamarin.Android 바인딩 프로젝트에서 LibraryProjectZip 빌드 동작은 Java/Kotlin 라이브러리를 바인딩하고 .zip 또는 .aar 파일을 라이브러리에 포함합니다. Xamarin.Android 애플리케이션 프로젝트에서 라이브러리를 사용하는 경우 최종 Android 애플리케이션에 Java/Kotlin 코드를 포함할 뿐만 아니라 C#에서 Java/Kotlin API에 액세스할 수 있습니다.

참고 항목

Xamarin.Android 바인딩 프로젝트에는 단일 LibraryProjectZip만 포함할 수 있습니다. 이 제한은 .NET 6에서 제거됩니다.

LinkDescription

빌드 동작이 LinkDescription인 파일은 링커 동작을 제어하는 데 사용됩니다.

ProguardConfiguration

빌드 동작이 ProguardConfiguration인 파일에는 proguard 동작을 제어하는 데 사용되는 옵션이 포함됩니다. 이 빌드 동작에 대한 자세한 내용은 ProGuard를 참조하세요.

이 파일은 $(EnableProguard) MSBuild 속성은 True.