Item Build
Item build mengontrol bagaimana aplikasi Xamarin.Android atau proyek pustaka dibangun.
AndroidAsset
Mendukung Android Assets, file yang akan disertakan dalam assets
folder dalam proyek Java Android.
AndroidAarLibrary
Tindakan AndroidAarLibrary
Build harus digunakan untuk mereferensikan .aar
file secara langsung. Tindakan build ini akan paling umum digunakan oleh Komponen Xamarin. Yaitu menyertakan referensi ke .aar
file yang diperlukan untuk membuat Google Play dan layanan lain berfungsi.
File dengan tindakan Build ini akan diperlakukan dengan cara yang sama dengan sumber daya tersemat yang ditemukan dalam proyek Pustaka. .aar
akan diekstrak ke direktori perantara. Kemudian aset, sumber daya, dan .jar
file apa pun akan disertakan dalam grup item yang sesuai.
AndroidAotProfile
Digunakan untuk menyediakan profil AOT, untuk digunakan dengan AOT yang dipandu profil.
Ini juga dapat digunakan dari Visual Studio dengan mengatur AndroidAotProfile
tindakan build ke file yang berisi profil AOT.
AndroidAppBundleMetaDataFile
Menentukan file yang akan disertakan sebagai metadata di Android App Bundle.
Format nilai bendera adalah <bundle-path>:<physical-file>
tempat bundle-path
menunjukkan lokasi file di dalam direktori metadata App Bundle, dan physical-file
merupakan file yang sudah ada yang berisi data mentah yang akan disimpan.
<ItemGroup>
<AndroidAppBundleMetaDataFile
Include="com.android.tools.build.obfuscation/proguard.map:$(OutputPath)mapping.txt"
/>
</ItemGroup>
Lihat dokumentasi bundletool untuk detail selengkapnya.
Ditambahkan dalam Xamarin.Android 12.3.
AndroidBoundLayout
Menunjukkan bahwa file tata letak adalah memiliki code-behind yang dihasilkan untuk itu jika AndroidGenerateLayoutBindings
properti diatur ke false
. Dalam semua aspek lain, identik dengan AndroidResource
yang dijelaskan di atas. Tindakan ini hanya dapat digunakan dengan file tata letak:
<AndroidBoundLayout Include="Resources\layout\Main.axml" />
AndroidEnvironment
File dengan tindakan AndroidEnvironment
Build digunakan untuk menginisialisasi variabel lingkungan dan properti sistem selama startup proses.
Tindakan AndroidEnvironment
Build dapat diterapkan ke beberapa file, dan akan dievaluasi tanpa urutan tertentu (jadi jangan tentukan variabel lingkungan atau properti sistem yang sama dalam beberapa file).
AndroidJavaLibrary
File dengan tindakan AndroidJavaLibrary
Build adalah Java Archives ( .jar
file) yang akan disertakan dalam paket Android akhir.
AndroidJavaSource
File dengan tindakan AndroidJavaSource
Build adalah kode sumber Java yang akan disertakan dalam paket Android akhir.
Dimulai dengan .NET 7, semua **\*.java
file dalam direktori proyek secara otomatis memiliki tindakan Build , AndroidJavaSource
dan akan terikat sebelum build Assembly. Memungkinkan kode C# untuk dengan mudah menggunakan jenis dan anggota yang ada dalam **\*.java
file.
Atur %(AndroidJavaSource.Bind)
ke False untuk menonaktifkan perilaku ini.
AndroidLibrary
AndroidLibrary adalah tindakan build baru untuk menyederhanakan cara .jar
dan .aar
file disertakan dalam proyek.
Proyek apa pun dapat menentukan:
<ItemGroup>
<AndroidLibrary Include="foo.jar" />
<AndroidLibrary Include="bar.aar" />
</ItemGroup>
Hasil cuplikan kode di atas memiliki efek yang berbeda untuk setiap jenis proyek Xamarin.Android:
- Proyek pustaka aplikasi dan kelas:
foo.jar
peta ke AndroidJavaLibrary.bar.aar
peta ke AndroidAarLibrary.
- Proyek pengikatan Java:
foo.jar
memetakan ke EmbeddedJar.foo.jar
memetakan ke EmbeddedReferenceJar jikaBind="false"
metadata ditambahkan.bar.aar
memetakan ke LibraryProjectZip.
Penyederhanaan ini berarti Anda dapat menggunakan AndroidLibrary di mana saja.
Tindakan build ini ditambahkan di Xamarin.Android 11.2.
AndroidLintConfig
Tindakan Build 'AndroidLintConfig' harus digunakan bersama dengan properti $(AndroidLintEnabled)
. File dengan tindakan build ini akan digabungkan bersama-sama dan diteruskan ke alat android lint
. Mereka harus berupa file XML yang berisi informasi tentang pengujian untuk mengaktifkan dan menonaktifkan.
Lihat dokumentasi lint untuk detail selengkapnya.
AndroidManifestOverlay
Tindakan AndroidManifestOverlay
build dapat digunakan untuk menyediakan AndroidManifest.xml
file ke alat Manifest Merger .
File dengan tindakan build ini akan diteruskan ke Manifest Merger bersama dengan file utama AndroidManifest.xml
dan file manifes dari referensi. Ini kemudian akan digabungkan ke dalam manifes akhir.
Anda dapat menggunakan tindakan build ini untuk memberikan perubahan dan pengaturan ke aplikasi Anda tergantung pada konfigurasi build Anda. Misalnya, jika Anda hanya perlu memiliki izin tertentu saat penelusuran kesalahan, Anda dapat menggunakan overlay untuk menyuntikkan izin tersebut saat menelusuri kesalahan. Misalnya, mengingat konten file overlay berikut:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.CAMERA" />
</manifest>
Anda dapat menggunakan yang berikut ini untuk menambahkan overlay manifes untuk build debug:
<ItemGroup>
<AndroidManifestOverlay Include="DebugPermissions.xml" Condition=" '$(Configuration)' == 'Debug' " />
</ItemGroup>
Tindakan build ini diperkenalkan di Xamarin.Android 11.2.
AndroidInstallModules
Menentukan modul yang diinstal oleh perintah bundletool saat menginstal bundel aplikasi.
Tindakan build ini diperkenalkan di Xamarin.Android 11.3.
AndroidNativeLibrary
Pustaka asli ditambahkan ke build dengan mengatur tindakan Build mereka ke AndroidNativeLibrary
.
Perhatikan bahwa karena Android mendukung beberapa Antarmuka Biner Aplikasi (ABI), sistem build harus mengetahui ABI tempat pustaka asli dibuat. Ada dua cara ABI dapat ditentukan:
- Jalur "sniffing".
%(Abi)
Menggunakan metadata item.
Dengan sniffing jalur, nama direktori induk pustaka asli digunakan untuk menentukan ABI yang ditargetkan pustaka. Dengan demikian, jika Anda menambahkan lib/armeabi-v7a/libfoo.so
ke build, maka ABI akan "diendus" sebagai armeabi-v7a
.
Nama Atribut Item
Abi – Menentukan ABI pustaka asli.
<ItemGroup>
<AndroidNativeLibrary Include="path/to/libfoo.so">
<Abi>armeabi-v7a</Abi>
</AndroidNativeLibrary>
</ItemGroup>
AndroidResource
Semua file dengan tindakan build AndroidResource dikompilasi ke dalam sumber daya Android selama proses build dan dapat diakses melalui $(AndroidResgenFile)
.
<ItemGroup>
<AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>
Pengguna yang lebih canggih mungkin ingin memiliki sumber daya yang berbeda yang digunakan dalam konfigurasi yang berbeda tetapi dengan jalur efektif yang sama. Ini dapat dicapai dengan memiliki beberapa direktori sumber daya dan memiliki file dengan jalur relatif yang sama dalam direktori yang berbeda ini, dan menggunakan kondisi MSBuild untuk secara kondisional menyertakan file yang berbeda dalam konfigurasi yang berbeda. Contohnya:
<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 – Menentukan jalur sumber daya secara eksplisit. Memungkinkan file "aliasing" sehingga akan tersedia sebagai beberapa nama sumber daya yang berbeda.
<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
Tindakan AndroidResourceAnalysisConfig
Build menandai file sebagai file konfigurasi tingkat keparahan untuk alat diagnostik tata letak Xamarin Android Designer. Ini saat ini hanya digunakan di editor tata letak dan bukan untuk pesan build.
Lihat dokumentasi Analisis Sumber Daya Android untuk detail selengkapnya.
Ditambahkan dalam Xamarin.Android 10.2.
Konten
Tindakan Build normal Content
tidak didukung (karena kami belum mengetahui cara mendukungnya tanpa langkah eksekusi pertama yang mungkin mahal).
Mulai dari Xamarin.Android 5.1, mencoba menggunakan @(Content)
tindakan Build akan menghasilkan XA0101
peringatan.
EmbeddedJar
Dalam proyek pengikatan Xamarin.Android, tindakan build EmbeddedJar mengikat pustaka Java/Kotlin dan menyematkan .jar
file ke dalam pustaka. Ketika proyek aplikasi Xamarin.Android menggunakan pustaka, ia akan memiliki akses ke API Java/Kotlin dari C# serta menyertakan kode Java/Kotlin di aplikasi Android akhir.
Sejak Xamarin.Android 11.2, Anda dapat menggunakan tindakan build AndroidLibrary sebagai alternatif seperti:
<Project>
<ItemGroup>
<AndroidLibrary Include="Library.jar" />
</ItemGroup>
</Project>
EmbeddedNativeLibrary
Dalam pustaka kelas Xamarin.Android atau proyek pengikatan Java, tindakan build EmbeddedNativeLibrary membundel pustaka asli seperti lib/armeabi-v7a/libfoo.so
ke dalam pustaka. Ketika aplikasi Xamarin.Android menggunakan pustaka, libfoo.so
file akan disertakan dalam aplikasi Android akhir.
Sejak Xamarin.Android 11.2, Anda dapat menggunakan tindakan build AndroidNativeLibrary sebagai alternatif.
EmbeddedReferenceJar
Dalam proyek pengikatan Xamarin.Android, tindakan build EmbeddedReferenceJar menyematkan .jar
file ke dalam pustaka tetapi tidak membuat pengikatan C# seperti yang dilakukan EmbeddedJar. Ketika proyek aplikasi Xamarin.Android menggunakan pustaka, itu akan menyertakan kode Java/Kotlin di aplikasi Android akhir.
Sejak Xamarin.Android 11.2, Anda dapat menggunakan tindakan build AndroidLibrary sebagai alternatif seperti <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
Dalam proyek pengikatan Xamarin.Android, tindakan build JavaDocJar digunakan pada .jar
file yang berisi HTML Javadoc. HTML Javadoc diurai untuk mengekstrak nama parameter.
Hanya "dialek HTML Javadoc" tertentu yang didukung, termasuk:
- Output JDK 1.7
javadoc
. - Output JDK 1.8
javadoc
. - Output Droiddoc.
Tindakan build ini tidak digunakan lagi di Xamarin.Android 11.3, dan tidak akan didukung di .NET 6.
Tindakan @(JavaSourceJar)
build lebih disukai.
JavaSourceJar
Dalam proyek pengikatan Xamarin.Android, tindakan build JavaSourceJar digunakan pada .jar
file yang berisi kode sumber Java, yang berisi komentar dokumentasi Javadoc.
Sebelum Xamarin.Android 11.3, Javadoc akan dikonversi menjadi HTML melalui javadoc
utilitas selama waktu build, dan kemudian diubah menjadi dokumentasi XML.
Dimulai dengan Xamarin.Android 11.3, Javadoc akan dikonversi menjadi Komentar Dokumentasi C# XML dalam kode sumber pengikatan yang dihasilkan.
$(AndroidJavadocVerbosity)
mengontrol bagaimana "verbose" atau "lengkapi" Javadoc yang diimpor.
Mulai dari Xamarin.Android 11.3, metadata MSBuild berikut ini didukung:
%(CopyrightFile)
: Jalur ke file yang berisi informasi hak cipta untuk konten Javadoc, yang akan ditambahkan ke semua dokumentasi yang diimpor.%(UrlPrefix)
: Awalan URL untuk mendukung penautan ke dokumentasi online dalam dokumentasi yang diimpor.%(UrlStyle)
: "Gaya" URL yang akan dihasilkan saat menautkan ke dokumentasi online. Hanya satu gaya yang saat ini didukung:developer.android.com/reference@2020-Nov
.
Mulai dari Xamarin.Android 12.3, metadata MSBuild berikut ini didukung:
%(DocRootUrl)
: Awalan URL yang akan digunakan sebagai pengganti semua instans {@docroot} dalam dokumentasi yang diimpor.
LibraryProjectZip
Dalam proyek pengikatan Xamarin.Android, tindakan build LibraryProjectZip mengikat pustaka Java/Kotlin dan menyematkan .zip
file atau .aar
ke dalam pustaka. Ketika proyek aplikasi Xamarin.Android menggunakan pustaka, ia akan memiliki akses ke API Java/Kotlin dari C# serta menyertakan kode Java/Kotlin di aplikasi Android akhir.
Catatan
Hanya satu LibraryProjectZip yang dapat disertakan dalam proyek pengikatan Xamarin.Android. Batasan ini akan dihapus di .NET 6.
LinkDescription
File dengan tindakan build LinkDescription digunakan untuk mengontrol perilaku linker.
ProguardConfiguration
File dengan tindakan build ProguardConfiguration berisi opsi yang digunakan untuk mengontrol proguard
perilaku. Untuk informasi selengkapnya tentang tindakan build ini, lihat ProGuard.
File-file ini diabaikan kecuali jika $(EnableProguard)
Properti MSBuild adalah True
.