Udostępnij za pośrednictwem


Elementy kompilacji

Elementy kompilacji kontrolują sposób tworzenia projektu aplikacji lub biblioteki platformy Xamarin.Android.

AndroidAsset

Obsługuje zasoby systemu Android, pliki, które zostałyby uwzględnione w assets folderze w projekcie java dla systemu Android.

AndroidAarLibrary

Akcja Kompilacja AndroidAarLibrary elementu powinna służyć do bezpośredniego odwołwania .aar się do plików. Ta akcja kompilacji będzie najczęściej używana przez składniki platformy Xamarin. Należy podać odwołania do .aar plików, które są wymagane do uzyskania sklepu Google Play i innych usług, które działają.

Pliki z tą akcją kompilacji będą traktowane w podobny sposób do zasobów osadzonych znajdujących się w projektach biblioteki. Element .aar zostanie wyodrębniony do katalogu pośredniego. Następnie wszystkie zasoby, zasoby i .jar pliki zostaną uwzględnione w odpowiednich grupach elementów.

AndroidAotProfile

Służy do udostępniania profilu AOT do użycia z profilem AOT.

Można go również używać z poziomu programu Visual Studio, ustawiając AndroidAotProfile akcję kompilacji na plik zawierający profil AOT.

AndroidAppBundleMetaDataFile

Określa plik, który zostanie dołączony jako metadane w pakiecie aplikacji systemu Android. Format wartości flagi to <bundle-path>:<physical-file> miejsce, w którym bundle-path określa lokalizację pliku w katalogu metadanych pakietu aplikacji i physical-file jest istniejącym plikiem zawierającym nieprzetworzone dane, które mają być przechowywane.

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

Aby uzyskać więcej informacji, zobacz dokumentację narzędzia bundletool .

Dodano w programie Xamarin.Android 12.3.

AndroidBoundLayout

Wskazuje, że plik układu ma wygenerować kod za nim w przypadku, gdy właściwość jest ustawiona AndroidGenerateLayoutBindings na falsewartość . We wszystkich innych aspektach jest on identyczny z AndroidResource powyższym opisem. Tej akcji można używać tylko z plikami układu:

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

AndroidŚrodowisko

Pliki z akcją Kompilacja AndroidEnvironment służą do inicjowania zmiennych środowiskowych i właściwości systemowych podczas uruchamiania procesu. Akcja AndroidEnvironment kompilacji może być stosowana do wielu plików i będzie oceniana w żadnej określonej kolejności (dlatego nie należy określać tej samej zmiennej środowiskowej ani właściwości systemowej w wielu plikach).

AndroidJavaLibrary

Pliki z akcją AndroidJavaLibrary Kompilacja to Archiwa Java ( .jar pliki), które zostaną dołączone do końcowego pakietu systemu Android.

AndroidJavaSource

Pliki z akcją AndroidJavaSource Kompilacja to kod źródłowy Java, który zostanie uwzględniony w ostatnim pakiecie systemu Android.

Począwszy od platformy .NET 7, wszystkie **\*.java pliki w katalogu projektu automatycznie mają akcję AndroidJavaSourceKompilacja i będą powiązane przed kompilacją zestawu. Umożliwia kodowi języka C# łatwe używanie typów i elementów członkowskich znajdujących się w plikach **\*.java .

Ustaw %(AndroidJavaSource.Bind) wartość Fałsz, aby wyłączyć to zachowanie.

AndroidLibrary

AndroidLibrary to nowa akcja kompilacji, która upraszcza sposób .jar dołączania plików i .aar plików do projektów.

Każdy projekt może określać:

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

Wynik powyższego fragmentu kodu ma inny efekt dla każdego typu projektu Xamarin.Android:

To uproszczenie oznacza, że można używać systemu AndroidLibrary wszędzie.

Ta akcja kompilacji została dodana w środowisku Xamarin.Android 11.2.

AndroidLintConfig

Akcja kompilacji "AndroidLintConfig" powinna być używana w połączeniu z elementem $(AndroidLintEnabled) Właściwość. Pliki z tą akcją kompilacji zostaną scalone i przekazane do narzędzi systemu Android lint . Powinny to być pliki XML zawierające informacje na temat testów w celu włączenia i wyłączenia.

Aby uzyskać więcej informacji, zobacz dokumentację lint.

AndroidManifestOverlay

Akcja AndroidManifestOverlay kompilacji może służyć do udostępniania AndroidManifest.xml plików narzędziu manifestu fuzji . Pliki z tą akcją kompilacji zostaną przekazane do połączenia manifestu wraz z głównym AndroidManifest.xml plikiem i plikami manifestu z odwołań. Zostaną one następnie scalone z ostatnim manifestem.

Za pomocą tej akcji kompilacji możesz podać zmiany i ustawienia aplikacji w zależności od konfiguracji kompilacji. Jeśli na przykład musisz mieć określone uprawnienie tylko podczas debugowania, możesz użyć nakładki, aby wstrzyknąć to uprawnienie podczas debugowania. Na przykład biorąc pod uwagę następującą zawartość pliku nakładki:

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

Aby dodać nakładkę manifestu dla kompilacji debugowania, możesz użyć następujących instrukcji:

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

Ta akcja kompilacji została wprowadzona w środowisku Xamarin.Android 11.2.

AndroidInstallModules

Określa moduły instalowane przez polecenie bundletool podczas instalowania pakietów aplikacji.

Ta akcja kompilacji została wprowadzona w środowisku Xamarin.Android 11.3.

AndroidNativeLibrary

Biblioteki natywne są dodawane do kompilacji przez ustawienie akcji Kompilacja na wartość AndroidNativeLibrary.

Należy pamiętać, że ponieważ system Android obsługuje wiele interfejsów binarnych aplikacji (ABI), system kompilacji musi wiedzieć, że biblioteka natywna ABI jest kompilowana. Istnieją dwa sposoby określenia usługi ABI:

  1. Ścieżka "wąchanie".
  2. %(Abi) Używanie metadanych elementu.

W przypadku wąchania ścieżki nazwa katalogu nadrzędnego biblioteki natywnej służy do określania biblioteki ABI, która jest przeznaczona dla biblioteki. W związku z tym, jeśli dodasz lib/armeabi-v7a/libfoo.so do kompilacji, to ABI będzie "wąchany" jako armeabi-v7a.

Nazwa atrybutu elementu

Abi — określa ABI biblioteki natywnej.

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

AndroidResource

Wszystkie pliki z akcją kompilacji AndroidResource są kompilowane w zasobach systemu Android podczas procesu kompilacji i udostępniane za pośrednictwem usługi $(AndroidResgenFile).

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

Bardziej zaawansowani użytkownicy mogą chcieć mieć różne zasoby używane w różnych konfiguracjach, ale z tą samą obowiązującą ścieżką. Można to osiągnąć przez posiadanie wielu katalogów zasobów i posiadanie plików z tymi samymi ścieżkami względnymi w tych różnych katalogach oraz przy użyciu warunków programu MSBuild w celu warunkowego uwzględnienia różnych plików w różnych konfiguracjach. Na przykład:

<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 — określa jawnie ścieżkę zasobu. Umożliwia "aliasowanie" plików, dzięki czemu będą one dostępne jako wiele odrębnych nazw zasobów.

<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

Akcja AndroidResourceAnalysisConfig Kompilacja oznacza plik jako plik konfiguracji na poziomie ważności dla narzędzia diagnostycznego układu systemu Android Projektant platformy Xamarin. Jest to obecnie używane tylko w edytorze układu, a nie w przypadku komunikatów kompilacji.

Aby uzyskać więcej informacji, zobacz dokumentację analizy zasobów systemu Android.

Dodano w programie Xamarin.Android 10.2.

Zawartość

Normalna Content akcja kompilacji nie jest obsługiwana (ponieważ nie ustaliliśmy, jak ją obsługiwać bez kosztownego kroku pierwszego uruchomienia).

Począwszy od platformy Xamarin.Android 5.1, próba użycia @(Content) akcji kompilacji spowoduje XA0101 wyświetlenie ostrzeżenia.

Osadzonyjar

W projekcie powiązania platformy Xamarin.Android akcja kompilacji EmbeddedJar wiąże bibliotekę Java/Kotlin i osadza plik w bibliotece .jar . Gdy projekt aplikacji platformy Xamarin.Android korzysta z biblioteki, będzie miał dostęp do interfejsów API Java/Kotlin z języka C#, a także dołączy kod Java/Kotlin do końcowej aplikacji systemu Android.

Ponieważ Xamarin.Android 11.2 można użyć akcji kompilacji AndroidLibrary jako alternatywy, takiej jak:

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

EmbeddedNativeLibrary

W bibliotece klas Xamarin.Android lub projekcie powiązania Języka Java akcja kompilacji EmbeddedNativeLibrary łączy bibliotekę natywną, taką jak lib/armeabi-v7a/libfoo.so w bibliotece. Gdy aplikacja platformy Xamarin.Android korzysta z biblioteki, libfoo.so plik zostanie uwzględniony w końcowej aplikacji systemu Android.

Ponieważ Xamarin.Android 11.2 można użyć akcji kompilacji AndroidNativeLibrary jako alternatywy.

EmbeddedReferenceJar

W projekcie powiązania platformy Xamarin.Android akcja kompilacji EmbeddedReferenceJar osadza .jar plik w bibliotece, ale nie tworzy powiązania języka C#, jak robi EmbeddedJar. Gdy projekt aplikacji platformy Xamarin.Android korzysta z biblioteki, będzie zawierać kod Java/Kotlin w końcowej aplikacji systemu Android.

Ponieważ Xamarin.Android 11.2 można użyć akcji kompilacji AndroidLibrary jako alternatywy, takiej jak <AndroidLibrary Include="..." Bind="false" />:

<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

W projekcie powiązania platformy Xamarin.Android akcja kompilacji JavaDocJar jest używana w .jar plikach zawierających kod HTML javadoc. Kod HTML javadoc jest analizowany w celu wyodrębnienia nazw parametrów.

Obsługiwane są tylko niektóre dialekty HTML języka Javadoc, w tym:

  • Dane wyjściowe zestawu JDK 1.7 javadoc .
  • Dane wyjściowe zestawu JDK 1.8 javadoc .
  • Dane wyjściowe droiddoc.

Ta akcja kompilacji jest przestarzała w środowisku Xamarin.Android 11.3 i nie będzie obsługiwana na platformie .NET 6. Preferowana jest akcja kompilacji @(JavaSourceJar) .

JavaSourceJar

W projekcie powiązania platformy Xamarin.Android akcja kompilacji JavaSourceJar jest używana w .jar plikach zawierających kod źródłowy Java zawierający komentarze dokumentacji javadoc.

Przed programem Xamarin.Android 11.3 dokument Javadoc zostanie przekonwertowany na kod HTML za pomocą javadoc narzędzia w czasie kompilacji, a później przekształcił się w dokumentację XML.

Począwszy od platformy Xamarin.Android 11.3, zamiast tego narzędzie Javadoc zostanie przekonwertowane na komentarze dokumentacji XML języka C# w wygenerowanym kodzie źródłowym powiązania.

$(AndroidJavadocVerbosity) steruje sposobem "pełnej" lub "complete" zaimportowanej maszyny Javadoc.

Począwszy od platformy Xamarin.Android 11.3, obsługiwane są następujące metadane MSBuild:

  • %(CopyrightFile): ścieżka do pliku zawierającego informacje o prawach autorskich do zawartości javadoc, która zostanie dołączona do całej zaimportowanej dokumentacji.

  • %(UrlPrefix): prefiks adresu URL do obsługi łączenia z dokumentacją online w zaimportowanej dokumentacji.

  • %(UrlStyle): "styl" adresów URL do wygenerowania podczas łączenia z dokumentacją online. Obecnie obsługiwany jest tylko jeden styl: developer.android.com/reference@2020-Nov.

Począwszy od platformy Xamarin.Android 12.3, obsługiwane są następujące metadane MSBuild:

  • %(DocRootUrl): Prefiks adresu URL używany zamiast wszystkich wystąpień {@docroot} w zaimportowanej dokumentacji.

BibliotekaProjectZip

W projekcie powiązania platformy Xamarin.Android akcja kompilacji LibraryProjectZip wiąże bibliotekę Java/Kotlin i osadza .zip plik or .aar w bibliotece. Gdy projekt aplikacji platformy Xamarin.Android korzysta z biblioteki, będzie miał dostęp do interfejsów API Java/Kotlin z języka C#, a także dołączy kod Java/Kotlin do końcowej aplikacji systemu Android.

Uwaga

W projekcie powiązania platformy Xamarin.Android można uwzględnić tylko jedną bibliotekęProjectZip . To ograniczenie zostanie usunięte na platformie .NET 6.

LinkDescription

Pliki z akcją kompilacji LinkDescription służą do kontrolowania zachowania konsolidatora.

ProguardConfiguration

Pliki z akcją kompilacji ProguardConfiguration zawierają opcje używane do kontrolowania proguard zachowania. Aby uzyskać więcej informacji na temat tej akcji kompilacji, zobacz ProGuard.

Te pliki są ignorowane, chyba że $(EnableProguard) Właściwość MSBuild to True.