Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Elementy kompilacji kontrolują sposób tworzenia projektu aplikacji lub biblioteki platformy .NET dla systemu Android.
Są one określone w pliku projektu, na przykład MyApp.csproj, w grupie elementów MSBuild.
Uwaga / Notatka
Na platformie .NET dla systemu Android technicznie nie ma rozróżnienia między aplikacją a projektem powiązań, więc elementy kompilacji będą działać w obu tych elementach. W praktyce zdecydowanie zaleca się tworzenie oddzielnych projektów aplikacji i powiązań. Elementy kompilacji, które są używane głównie w projektach powiązań, są dokumentowane w przewodniku referencyjnym elementów projektu powiązań MSBuild.
AndroidAdditionalJavaManifest
<AndroidAdditionalJavaManifest> Jest używany w połączeniu z rozpoznawaniem zależności Języka Java w celu określenia dodatkowych plików POM, które będą potrzebne do zweryfikowania zależności.
Są to często nadrzędne lub importowane pliki POM, do których odwołuje się plik POM biblioteki Języka Java.
<ItemGroup>
<AndroidAdditionalJavaManifest Include="mylib-parent.pom" JavaArtifact="com.example:mylib-parent" JavaVersion="1.0.0" />
</ItemGroup>
Wymagane są następujące metadane programu MSBuild:
-
%(JavaArtifact): identyfikator grupy i artefaktu biblioteki Java zgodnej z określonym plikiem POM w formie{GroupId}:{ArtifactId}. -
%(JavaVersion): wersja biblioteki Java zgodna z określonym plikiem POM.
Aby uzyskać więcej informacji, zobacz dokumentację rozwiązania zależności języka Java .
Ta akcja kompilacji została wprowadzona na platformie .NET 9.
AndroidAsset
Obsługuje zasoby systemu Android, pliki, które zostałyby uwzględnione w assets folderze w projekcie java dla systemu Android.
Począwszy od platformy .NET 9 akcja @(AndroidAsset) kompilacji obsługuje również dodatkowe metadane do generowania pakietów zasobów. Metadane %(AndroidAsset.AssetPack) mogą służyć do automatycznego generowania pakietu zasobów o tej nazwie. Ta funkcja jest obsługiwana tylko wtedy, gdy $(AndroidPackageFormat) jest ustawiona na .aab. W poniższym przykładzie zostaną umieszczone movie2.mp4 i movie3.mp4 w oddzielnych pakietach elementów zawartości.
<ItemGroup>
<AndroidAsset Update="Asset/movie.mp4" />
<AndroidAsset Update="Asset/movie2.mp4" AssetPack="assets1" />
<AndroidAsset Update="Asset/movie3.mp4" AssetPack="assets2" />
</ItemGroup>
Ta funkcja może służyć do uwzględnienia dużych plików w aplikacji, które zwykle przekraczają maksymalne limity rozmiaru pakietu Google Play.
Jeśli masz dużą liczbę zasobów, może to być bardziej wydajne, aby korzystać z base pakietu zasobów.
W tym scenariuszu zaktualizujesz wszystkie zasoby do umieszczenia w jednym pakiecie zasobów, a następnie użyjesz metadanych AssetPack="base", aby zadeklarować, które konkretne zasoby trafią do podstawowego pliku AAB. Dzięki temu możesz użyć symboli wieloznacznych, aby przenieść większość zasobów do pakietu zasobów.
<ItemGroup>
<AndroidAsset Update="Assets/*" AssetPack="assets1" />
<AndroidAsset Update="Assets/movie.mp4" AssetPack="base" />
<AndroidAsset Update="Assets/some.png" AssetPack="base" />
</ItemGroup>
W tym przykładzie elementy movie.mp4 i some.png trafią do pliku base aab, podczas gdy wszystkie pozostałe zasoby znajdą się w pakiecie zasobów assets1.
Dodatkowe metadane są obsługiwane tylko na platformie .NET dla systemu Android 9 lub nowszego.
AndroidAarLibrary
Akcja Kompilacja AndroidAarLibrary powinna służyć do bezpośredniego odwoływania .aar się do plików. Ta akcja kompilacji będzie najczęściej używana przez składniki platformy Xamarin. Należy podać odniesienia do .aar plików, które są wymagane do działania sklepu Google Play i innych usług.
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 wszelkie zasoby, środki oraz .jar pliki zostaną uwzględnione w odpowiednich grupach elementów.
AndroidAotProfile
Służy do udostępniania profilu AOT, wykorzystywanego przy kompilacji kierowanej profilem AOT.
Można go również używać w programie Visual Studio, ustawiając AndroidAotProfile akcję kompilacji, aby plik zawierał 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>, gdzie bundle-path oznacza lokalizację pliku w katalogu metadanych pakietu aplikacji, a physical-file jest istniejącym plikiem zawierającym surowe dane do przechowywania.
<ItemGroup>
<AndroidAppBundleMetaDataFile
Include="com.android.tools.build.obfuscation/proguard.map:$(OutputPath)mapping.txt"
/>
</ItemGroup>
Aby uzyskać więcej informacji, zobacz dokumentację bundletool.
AndroidBoundLayout
Wskazuje, że dla pliku układu powinno być wygenerowane zaplecze kodu, jeśli właściwość zostanie ustawiona na false. We wszystkich innych aspektach jest on identyczny z elementem AndroidResource.
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).
AndroidGradleProject
<AndroidGradleProject> można użyć do kompilowania i korzystania z danych wyjściowych projektów android Gradle utworzonych w programie Android Studio lub elsewehere.
Metadane Include powinny wskazywać najwyższy poziom build.gradle lub build.gradle.kts plik, który będzie używany do kompilowania projektu. Zostanie to znalezione w katalogu głównym projektu Gradle, który powinien również zawierać gradlew skrypty powłoki.
<ItemGroup>
<AndroidGradleProject Include="path/to/project/build.gradle.kts" ModuleName="mylibrary" />
</ItemGroup>
Obsługiwane są następujące metadane MSBuild:
-
%(Configuration): nazwa konfiguracji, która ma być używana do kompilowania lub tworzenia określonego projektu lub modułu projektu. Domyślna wartość toRelease. -
%(ModuleName): nazwa modułu lub podprojektu , który ma zostać skompilowany. Wartość domyślna jest pusta. -
%(OutputPath): Można ustawić tak, aby zastąpić ścieżkę wyjściową kompilacji projektu Gradle. Domyślna wartość to$(IntermediateOutputPath)gradle/%(ModuleName)%(Configuration)-{Hash}. -
%(CreateAndroidLibrary): Pliki wyjściowe AAR zostaną dodane jako elementAndroidLibrarydo projektu. Metadane obsługiwane przez<AndroidLibrary>takie jak%(Bind)lub%(Pack)będą przekazywane w przypadku ustawienia. Domyślna wartość totrue.
Ta akcja kompilacji została wprowadzona na platformie .NET 9.
AndroidJavaLibrary
Pliki z akcją kompilacji AndroidJavaLibrary są Archiwami Java ( .jar pliki), które zostaną dołączone do końcowego pakietu systemu Android.
PomijanyJavaZależnośćAndroid
<AndroidIgnoredJavaDependency> jest używany w połączeniu z rozpoznawaniem zależności języka Java.
Służy do określania zależności języka Java, która powinna być ignorowana. Można użyć tego, jeśli zależność zostanie spełniona w sposób, który nie może być wykryty przez rozwiązanie zależności w Javie.
<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
<AndroidIgnoredJavaDependency Include="com.google.errorprone:error_prone_annotations" Version="2.15.0" />
</ItemGroup>
Wymagane są następujące metadane programu MSBuild:
-
%(Version): wersja biblioteki Java zgodna z określonym%(Include)elementem.
Aby uzyskać więcej informacji, zobacz dokumentację rozwiązania zależności języka Java .
Ta akcja kompilacji została wprowadzona na platformie .NET 9.
AndroidJavaSource
Pliki z akcją kompilacji AndroidJavaSource to kod źródłowy Java, który zostanie uwzględniony w ostatecznym pakiecie systemu Android.
Począwszy od platformy .NET 7, wszystkie **\*.java pliki w katalogu projektu automatycznie mają akcję AndroidJavaSource, a następnie zostaną powiązane przed zbudowaniem zestawu. Umożliwia kodowi języka C# łatwe używanie typów i elementów 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 dołączania plików .jar i .aar 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 .NET dla systemu Android:
- Projekty bibliotek aplikacji i klas:
-
foo.jarmapuje na AndroidJavaLibrary. -
bar.aarodnosi się do AndroidAarLibrary.
-
- Projekty powiązań Języka Java:
-
foo.jarjest przypisany do EmbeddedJar. -
foo.jarmapuje do EmbeddedReferenceJar, jeśli metadaneBind="false"zostaną dodane. -
bar.aarodnosi się do LibraryProjectZip.
-
To uproszczenie oznacza, że można używać systemu AndroidLibrary wszędzie.
AndroidLintConfig
Akcję kompilacji "AndroidLintConfig" należy używać 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 Manifest Merger.
Pliki z tą akcją kompilacji zostaną przekazane do Merge Manifestu wraz z głównym plikiem AndroidManifest.xml oraz plikami manifestu z odwołań. Następnie zostaną scalone z ostatecznym manifestem.
Za pomocą tej akcji kompilacji możesz podać zmiany i ustawienia aplikacji w zależności od konfiguracji kompilacji. Na przykład, jeśli musisz mieć określone uprawnienie tylko podczas debugowania, możesz użyć nakładki, aby dodać to uprawnienie. 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ć warstwę manifestu dla kompilacji debug, możesz użyć następujących instrukcji:
<ItemGroup>
<AndroidManifestOverlay Include="DebugPermissions.xml" Condition=" '$(Configuration)' == 'Debug' " />
</ItemGroup>
AndroidInstallModules
Określa moduły instalowane przez polecenie bundletool podczas instalowania pakietów aplikacji.
AndroidMavenLibrary
<AndroidMavenLibrary> umożliwia wskazanie artefaktu Maven, który zostanie automatycznie pobrany i dodany do projektu powiązań .NET dla Androida.
Może to być przydatne, aby uprościć konserwację powiązań .NET dla Androida dla artefaktów hostowanych w repozytorium Maven.
<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
<AndroidMavenLibrary Include="com.squareup.okhttp3:okhttp" Version="4.9.3" />
</ItemGroup>
Obsługiwane są następujące metadane MSBuild:
-
%(Version): Wymagana wersja biblioteki Java, do której odwołuje się%(Include). -
%(Repository): opcjonalne repozytorium Maven do użycia. Obsługiwane wartości toCentral(wartość domyślna),Googlelubhttpsadres URL repozytorium Maven.
Element <AndroidMavenLibrary> jest tłumaczony na AndroidLibrary, dlatego wszystkie metadane takie jak %(Bind) lub %(Pack), obsługiwane przez <AndroidLibrary>, są również obsługiwane.
Aby uzyskać więcej informacji, zobacz dokumentację androidMavenLibrary .
Ta akcja kompilacji została wprowadzona na platformie .NET 9.
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ć, dla którego ABI jest zbudowana biblioteka natywna. Istnieją dwa sposoby określenia ABI:
- Ścieżka "wąchanie".
-
%(Abi)Używanie metadanych elementu.
W przypadku analizy ścieżki nazwa katalogu nadrzędnego biblioteki natywnej służy do określenia ABI, na które biblioteka jest przeznaczona. W związku z tym, jeśli dodasz lib/armeabi-v7a/libfoo.so do kompilacji, to ABI będzie wykrywany 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>
AndroidNativeLibraryNoJniPreload
Każda biblioteka natywna zawarta w tej grupie elementów będzie wyłączona z mechanizmu wstępnego ładowania biblioteki JNI. Domyślnie wszystkie takie biblioteki zostaną załadowane przez środowisko uruchomieniowe na wczesnym etapie uruchamiania aplikacji, aby zapewnić ich właściwą inicjację. Jednak w niektórych przypadkach może to nie być pożądane zachowanie, a ta grupa elementów umożliwia wykluczenie bibliotek z tego procesu indywidualnie.
Niektóre biblioteki struktury, które muszą zostać załadowane podczas uruchamiania aplikacji, nie będą miały wpływu, jeśli zostaną uwzględnione w tej grupie elementów.
Zobacz też $(AndroidIgnoreAllJniPreload)
AndroidPackagingOptionsExclude
Zestaw elementów zgodnych z plikiem glob, które umożliwią wykluczenie elementów z końcowego pakietu. Wartości domyślne są następujące
<ItemGroup>
<AndroidPackagingOptionsExclude Include="DebugProbesKt.bin" />
<AndroidPackagingOptionsExclude Include="$([MSBuild]::Escape('*.kotlin_*')" />
</ItemGroup>
Elementy mogą korzystać z znaków blob pliku jako symboli wieloznacznych, takich jak * i ?.
Jednak te elementy muszą być zakodowane w formacie URL lub używać $([MSBuild]::Escape('')).
Jest tak, że program MSBuild nie próbuje interpretować ich jako rzeczywistych symboli wieloznacznych plików.
Na przykład
<ItemGroup>
<AndroidPackagingOptionsExclude Include="%2A.foo_%2A" />
<AndroidPackagingOptionsExclude Include="$([MSBuild]::Escape('*.foo')" />
</ItemGroup>
UWAGA: *, ? i . zostaną zastąpione w zadaniu BuildApk odpowiednimi wzorcami globs plików.
Jeśli domyślny symbol glob pliku jest zbyt restrykcyjny, możesz go usunąć, dodając następujący kod do pliku csproj
<ItemGroup>
<AndroidPackagingOptionsExclude Remove="$([MSBuild]::Escape('*.kotlin_*')" />
</ItemGroup>
Dodano w programie .NET 7.
OpcjePakowaniaAndroidUwzględnij
Zestaw elementów zgodnych z plikiem glob, które umożliwią dołączanie elementów z pakietu końcowego. Wartości domyślne są następujące
<ItemGroup>
<AndroidPackagingOptionsInclude Include="$([MSBuild]::Escape('*.kotlin_builtins')" />
</ItemGroup>
Elementy mogą używać znaków blobu pliku dla symboli wieloznacznych, takich jak * i ?.
Jednak te elementy MUSZĄ używać kodowania URL lub "$([MSBuild]::Escape(''))".
Jest tak, że program MSBuild nie próbuje interpretować ich jako rzeczywistych symboli wieloznacznych plików.
Na przykład
<ItemGroup>
<AndroidPackagingOptionsInclude Include="%2A.foo_%2A" />
<AndroidPackagingOptionsInclude Include="$([MSBuild]::Escape('*.foo')" />
</ItemGroup>
UWAGA: *, ? i . zostaną zastąpione w zadaniu BuildApk odpowiednimi wzorcami glob.
Dodano do platformy .NET 9.
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. 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>
Content
Normalna Content akcja kompilacji nie jest obsługiwana (ponieważ nie ustaliliśmy, jak ją obsługiwać bez kosztownego kroku pierwszego uruchomienia).
Próba użycia akcji kompilacji @(Content) spowoduje ostrzeżenie XA0101.
Osadzonyjar
W projekcie tworzenia powiązań dla .NET na platformę Android, akcja kompilacji EmbeddedJar wiąże bibliotekę Java/Kotlin i osadza plik .jar w bibliotece. Gdy projekt aplikacji platformy .NET dla systemu 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 w końcowej aplikacji systemu Android.
Zamiast tego należy użyć akcji kompilacji AndroidLibrary jako alternatywy, takiej jak:
<Project>
<ItemGroup>
<AndroidLibrary Include="Library.jar" />
</ItemGroup>
</Project>
EmbeddedNativeLibrary
W bibliotece klas .NET dla Androida lub projekcie powiązania Java, akcja kompilacji EmbeddedNativeLibrary wbudowuje bibliotekę natywną, taką jak lib/armeabi-v7a/libfoo.so, w bibliotekę. Gdy aplikacja platformy .NET dla systemu Android korzysta z biblioteki, libfoo.so plik zostanie uwzględniony w końcowej aplikacji systemu Android.
Możesz użyć akcji kompilacji AndroidNativeLibrary jako alternatywę.
EmbeddedReferenceJar
W projekcie wiązania w .NET dla Androida, akcja kompilacji EmbeddedReferenceJar osadza plik .jar w bibliotece, ale nie tworzy wiązania do języka C#, tak jak robi to EmbeddedJar. Gdy projekt aplikacji .NET dla Androida korzysta z biblioteki, kod Java/Kotlin zostanie uwzględniony w końcowej aplikacji.
Możesz 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>
JavaSourceJar
W projekcie powiązania platformy .NET dla systemu Android akcja kompilacji JavaSourceJar jest używana w .jar plikach zawierających kod źródłowy Java zawierający komentarze dokumentacji javadoc.
Zamiast tego narzędzie Javadoc zostanie przekonwertowane na komentarze dokumentacji XML języka C# w wygenerowanym kodzie źródłowym powiązania.
$(AndroidJavadocVerbosity) steruje, jak szczegółowa lub kompletna jest importowana dokumentacja Javadoc.
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 wspierający łączenie z dokumentacją online w ramach zaimportowanej dokumentacji.%(UrlStyle): „styl” adresów URL do tworzenia podczas łączenia się z dokumentacją online. Obecnie obsługiwany jest tylko jeden styl:developer.android.com/reference@2020-Nov.%(DocRootUrl): prefiks adresu URL używany zamiast wszystkich{@docroot}wystąpień w zaimportowanej dokumentacji.
LibraryProjectZip
Akcja kompilacji LibraryProjectZip wiąże bibliotekę Java/Kotlin i osadza plik .zip lub .aar w bibliotece. Gdy projekt aplikacji platformy .NET dla systemu 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 w końcowej aplikacji systemu Android.
OpisLinku
Pliki z akcją kompilacji LinkDescription służą do kontrolowania zachowania linkera.
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.