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 false
wartość . 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ę AndroidJavaSource
Kompilacja 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:
- Projekty bibliotek aplikacji i klas:
foo.jar
mapuje na AndroidJavaLibrary.bar.aar
mapuje na wartość AndroidAarLibrary.
- Projekty powiązań Języka Java:
foo.jar
mapuje na EmbeddedJar.foo.jar
mapuje wartość EmbeddedReferenceJar , jeśliBind="false"
dodano metadane.bar.aar
mapuje na bibliotekęProjectZip.
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:
- Ścieżka "wąchanie".
%(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
.