다음을 통해 공유


항목 빌드

빌드 항목은 Android용 .NET 애플리케이션 또는 라이브러리 프로젝트를 빌드하는 방법을 제어합니다.

AndroidAdditionalJavaManifest

<AndroidAdditionalJavaManifest>는 Java 종속성 확인과 함께 사용됩니다.

종속성을 확인하는 데 필요한 추가 POM 파일을 지정하는 데 사용됩니다. 이러한 파일은 종종 Java 라이브러리의 POM 파일에서 참조하는 부모 또는 가져온 POM 파일입니다.

<ItemGroup>
  <AndroidAdditionalJavaManifest Include="mylib-parent.pom" JavaArtifact="com.example:mylib-parent" JavaVersion="1.0.0" />
</ItemGroup>

다음 MSBuild 메타데이터가 필요합니다.

  • %(JavaArtifact): 형식 {GroupId}:{ArtifactId}의 지정된 POM 파일과 일치하는 Java 라이브러리의 그룹 및 아티팩트 ID입니다.
  • %(JavaVersion): 지정된 POM 파일과 일치하는 Java 라이브러리의 버전입니다.

자세한 내용은 Java 종속성 확인 설명서를 참조하세요.

이 빌드 작업은 .NET 9에서 도입되었습니다.

AndroidAsset

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

.NET 9 @(AndroidAsset) 부터 빌드 작업은 자산 팩을 생성하기 위한 추가 메타데이터도 지원합니다. 메타데이터를 %(AndroidAsset.AssetPack) 사용하여 해당 이름의 자산 팩을 자동으로 생성할 수 있습니다. 이 기능은 로 설정된 .aab경우에만 지원 $(AndroidPackageFormat) 됩니다. 다음 예제에서는 별도의 자산 팩에 배치 movie2.mp4 movie3.mp4 합니다.

<ItemGroup>
   <AndroidAsset Update="Asset/movie.mp4" />
   <AndroidAsset Update="Asset/movie2.mp4" AssetPack="assets1" />
   <AndroidAsset Update="Asset/movie3.mp4" AssetPack="assets2" />
</ItemGroup>

이 기능은 일반적으로 Google Play의 최대 패키지 크기 제한을 초과하는 큰 파일을 애플리케이션에 포함하는 데 사용할 수 있습니다.

자산 수가 많은 경우 자산 팩을 사용하는 base 것이 더 효율적일 수 있습니다. 이 시나리오에서는 모든 자산을 단일 자산 팩에 포함하도록 업데이트한 다음 메타데이터를 사용하여 AssetPack="base" 기본 aab 파일에 있는 특정 자산을 선언합니다. 이를 통해 와일드카드를 사용하여 대부분의 자산을 자산 팩으로 이동할 수 있습니다.

<ItemGroup>
   <AndroidAsset Update="Assets/*" AssetPack="assets1" />
   <AndroidAsset Update="Assets/movie.mp4" AssetPack="base" />
   <AndroidAsset Update="Assets/some.png" AssetPack="base" />
</ItemGroup>

이 예제 movie.mp4 some.png 에서는 aab 파일로 base 끝나지만 다른 모든 자산은 자산 팩에 assets1 저장됩니다.

추가 메타데이터는 Android 9 이상용 .NET에서만 지원됩니다.

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 설명서를 참조하세요.

AndroidBoundLayout

속성이 설정된 경우 레이아웃 파일에 코드 숨김이 생성 됨을 $(AndroidGenerateLayoutBindings) false나타냅니다. 다른 모든 측면에서는 AndroidResource동일합니다.

이 작업은 레이아웃 파일에서 사용할 수 있습니다.

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

AndroidEnvironment

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

AndroidJavaLibrary

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

AndroidIgnoredJavaDependency

<AndroidIgnoredJavaDependency>는 Java 종속성 확인과 함께 사용됩니다.

무시해야 하는 Java 종속성을 지정하는 데 사용됩니다. 이는 Java 종속성 확인에서 감지할 수 없는 방식으로 종속성이 충족되는 경우에 사용할 수 있습니다.

<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
  <AndroidIgnoredJavaDependency Include="com.google.errorprone:error_prone_annotations" Version="2.15.0" />
</ItemGroup>

다음 MSBuild 메타데이터가 필요합니다.

  • %(Version): 지정된 %(Include)Java 라이브러리와 일치하는 Java 라이브러리의 버전입니다.

자세한 내용은 Java 종속성 확인 설명서를 참조하세요.

이 빌드 작업은 .NET 9에서 도입되었습니다.

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>

위의 코드 조각의 결과는 Android 프로젝트 형식에 대한 각 .NET에 대해 다른 영향을 미칩니다.

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

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>

AndroidInstallModules

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

AndroidMavenLibrary

<AndroidMavenLibrary> 는 자동으로 다운로드되고 Android용 .NET 바인딩 프로젝트에 추가되는 Maven 아티팩트를 지정할 수 있도록 허용합니다. 이는 Maven에서 호스트되는 아티팩트용 Android 바인딩에 대한 .NET의 유지 관리를 간소화하는 데 유용할 수 있습니다.

<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
  <AndroidMavenLibrary Include="com.squareup.okhttp3:okhttp" Version="4.9.3" />
</ItemGroup>

지원되는 MSBuild 메타데이터는 다음과 같습니다.

  • %(Version): .에서 참조 %(Include)하는 Java 라이브러리의 필수 버전입니다.
  • %(Repository): 사용할 선택적 Maven 리포지토리입니다. 지원되는 값은 Central (기본값) Google또는 https Maven 리포지토리의 URL입니다.

항목이 <AndroidMavenLibrary> 변환되므로 AndroidLibrary좋아요 %(Bind) 에서 지원 <AndroidLibrary> 되거나 %(Pack) 지원되는 모든 메타데이터도 지원됩니다.

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

이 빌드 작업은 .NET 9에서 도입되었습니다.

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>

AndroidPackagingOptionsExclude

최종 패키지에서 항목을 제외할 수 있도록 하는 파일 glob 호환 항목 집합입니다. 기본값은 다음과 같습니다.

<ItemGroup>
	<AndroidPackagingOptionsExclude Include="DebugProbesKt.bin" />
	<AndroidPackagingOptionsExclude Include="$([MSBuild]::Escape('*.kotlin_*')" />
</ItemGroup>

항목은 다음과 같은 * ?와일드카드에 파일 Blob 문자를 사용할 수 있습니다. 그러나 이러한 항목은 URL로 인코딩되거나 사용해야 $([MSBuild]::Escape(''))합니다. 따라서 MSBuild는 이를 실제 파일 와일드카드로 해석하지 않습니다.

예를 들어

<ItemGroup>
	<AndroidPackagingOptionsExclude Include="%2A.foo_%2A" />
  <AndroidPackagingOptionsExclude Include="$([MSBuild]::Escape('*.foo')" />
</ItemGroup>

참고: *? . 작업에서 BuildApk 적절한 파일 globs로 바뀝 있습니다.

기본 파일 GLOB가 너무 제한적이면 csproj에 다음을 추가하여 제거할 수 있습니다.

<ItemGroup>
	<AndroidPackagingOptionsExclude Remove="$([MSBuild]::Escape('*.kotlin_*')" />
</ItemGroup>

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

AndroidPackagingOptionsInclude

최종 패키지에서 항목을 포함할 수 있도록 하는 파일 glob 호환 항목 집합입니다. 기본값은 다음과 같습니다.

<ItemGroup>
	<AndroidPackagingOptionsInclude Include="$([MSBuild]::Escape('*.kotlin_builtins')" />
</ItemGroup>

항목은 다음과 같은 * ?와일드카드에 파일 Blob 문자를 사용할 수 있습니다. 그러나 이러한 항목은 URL 인코딩 또는 '$([MSBuild]::Escape(''))'를 사용해야 합니다. 따라서 MSBuild는 이를 실제 파일 와일드카드로 해석하지 않습니다. 예를 들어

<ItemGroup>
	<AndroidPackagingOptionsInclude Include="%2A.foo_%2A" />
  <AndroidPackagingOptionsInclude Include="$([MSBuild]::Escape('*.foo')" />
</ItemGroup>

참고: *? . 작업에서 BuildApk 적절한 파일 globs로 바뀝 있습니다.

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

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>

콘텐츠

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

빌드 작업을 사용 @(Content) 하려고 하면 XA0101 경고가 발생합니다.

EmbeddedJar

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

대신 다음과 같은 대안으로 AndroidLibrary 빌드 작업을 사용해야 합니다.

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

EmbeddedNativeLibrary

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

AndroidNativeLibrary 빌드 작업을 대안으로 사용할 수 있습니다.

EmbeddedReferenceJar

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

다음과 같은 <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>

JavaSourceJar

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

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

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

지원되는 MSBuild 메타데이터는 다음과 같습니다.

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

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

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

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

LibraryProjectZip

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

LinkDescription

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

ProguardConfiguration

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

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