Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Properti MSBuild mengontrol perilaku target.
Mereka ditentukan dalam file proyek, misalnya MyApp.csproj, dalam MSBuild PropertyGroup.
Catatan
Di .NET untuk Android secara teknis tidak ada perbedaan antara aplikasi dan proyek pengikatan, sehingga properti akan berfungsi di keduanya. Dalam praktiknya, sangat disarankan untuk membuat proyek aplikasi dan pengikatan terpisah. Properti yang terutama digunakan dalam proyek pengikatan didokumenkan dalam panduan referensi properti proyek pengikatan MSBuild.
AdbTarget
Properti $(AdbTarget) menentukan perangkat target Android tempat paket Android dapat diinstal atau dihapus.
Nilai properti ini sama dengan adb opsi Perangkat Target.
AfterGenerateAndroidManifest
Target MSBuild yang tercantum dalam properti ini akan berjalan langsung setelah target internal _GenerateJavaStubs, yang adalah tempat di mana AndroidManifest.xml file dihasilkan di $(IntermediateOutputPath). Jika Anda ingin melakukan modifikasi pada file yang dihasilkan AndroidManifest.xml , Anda dapat melakukannya menggunakan titik ekstensi ini.
AndroidAapt2CompileExtraArgs
Menentukan opsi baris perintah untuk diteruskan ke perintah kompilasi aapt2 saat memproses aset dan sumber daya Android.
AndroidAapt2LinkExtraArgs
Menentukan opsi baris perintah untuk diteruskan ke aapt2 link saat memproses aset dan sumber daya Android.
AndroidTambahkanKeepAlives
Properti boolean yang mengontrol apakah linker akan menyisipkan pemanggilan GC.KeepAlive() dalam proyek pengikatan untuk mencegah pengumpulan objek yang prematur.
Nilai defaultnya adalah True untuk build konfigurasi Rilis.
Argumen Tambahan AndroidAot
Properti string yang memungkinkan opsi untuk meneruskan ke kompiler Mono selama Aot tugas untuk proyek yang mengatur $(AndroidEnableProfiledAot) atau $(AotAssemblies) menjadi true.
Nilai string properti ditambahkan ke file respons ketika memanggil cross-compiler Mono.
Secara umum, properti ini harus dibiarkan kosong, tetapi dalam skenario khusus tertentu mungkin memberikan fleksibilitas yang berguna.
Properti $(AndroidAotAdditionalArguments) berbeda dari properti terkait $(AndroidExtraAotOptions) ; $(AndroidAotAdditionalArguments) meneruskan opsi terpisah ruang mandiri penuh seperti --verbose atau --debug ke pengkompilasi AOT, sementara $(AndroidExtraAotOptions) berisi argumen yang dipisahkan koma yang merupakan bagian --aot dari opsi pengkompilasi AOT.
AndroidAotCustomProfilePath
File yang aprofutil harus dibuat untuk menyimpan data profiler.
AndroidAotProfiles
Properti string yang memungkinkan pengembang untuk menambahkan profil AOT dari baris perintah. Ini adalah daftar jalur absolut yang dipisahkan titik koma atau koma.
AndroidAotProfilerPort
Port yang aprofutil harus tersambung saat mendapatkan data pembuatan profil.
AndroidAotEnableLazyLoad
Aktifkan pemuatan rakitan AOT-d malas (tertunda), alih-alih memuatnya di startup. Nilai defaultnya adalah True untuk Build rilis dengan bentuk AOT apa pun yang diaktifkan.
Diperkenalkan dalam .NET 6.
AndroidApkDigestAlgorithm
Nilai string yang menentukan algoritma digest untuk digunakan dengan jarsigner -digestalg.
Nilai defaultnya adalah SHA-256.
AndroidApkSignerArgumenTambahan
Properti string yang memungkinkan pengembang untuk memberikan argumen ke alat apksigner.
AndroidApkSigningAlgorithm
Nilai string yang menentukan algoritma penandatanganan untuk digunakan dengan jarsigner -sigalg.
Nilai defaultnya adalah SHA256withRSA.
AndroidApplication
Nilai boolean yang menunjukkan apakah proyek tersebut untuk Aplikasi Android (True) atau untuk Proyek Pustaka Android (False atau tidak ada).
Hanya satu proyek dengan <AndroidApplication>True</AndroidApplication> yang mungkin ada dalam paket Android. (Sayangnya persyaratan ini tidak diverifikasi, yang dapat mengakibatkan kesalahan halus dan aneh mengenai sumber daya Android.)
AndroidApplicationJavaClass
Nama kelas Java lengkap untuk digunakan sebagai pengganti android.app.Application saat kelas mewarisi dari Android.App.Application.
Properti $(AndroidApplicationJavaClass) umumnya diatur oleh properti lain , seperti $(AndroidEnableMultiDex) properti MSBuild.
AndroidAvoidEmitForPerformance
Sebuah properti boolean yang menentukan apakah System.Reflection.Emit harus "dihindari" untuk meningkatkan performa startup. Properti ini True secara default.
Penggunaan System.Reflection.Emit memiliki dampak nyata pada performa startup di Android. Perilaku ini dinonaktifkan secara default untuk sakelar fitur berikut:
Switch.System.Reflection.ForceInterpretedInvoke: setelah panggilan kedua keMethodInfo.Invoke()atauConstructorInfo.Invoke(), kode dipancarkan untuk meningkatkan performa panggilan berulang.Microsoft.Extensions.DependencyInjection.DisableDynamicEngine: setelah panggilan kedua untuk mengambil layanan dari kontainer injeksi dependensi, kode dipancarkan untuk meningkatkan performa panggilan berulang.
Diinginkan di sebagian besar aplikasi Android untuk menonaktifkan perilaku ini.
Lihat dokumentasi Sakelar Fitur Pustaka Kelas Dasar untuk informasi lebih lanjut mengenai sakelar fitur yang tersedia.
Ditambahkan dalam .NET 8.
AndroidBinUtilsPath
Jalur ke direktori yang berisi binutils Android seperti ld, penghubung asli, dan as, perakit asli. Alat-alat ini disertakan dalam beban kerja .NET untuk Android.
Nilai defaultnya adalah $(MonoAndroidBinDirectory)\binutils\bin\.
AndroidBoundExceptionType
Nilai string yang menentukan bagaimana pengecualian harus disebarluaskan ketika jenis yang disediakan .NET untuk Android mengimplementasikan jenis .NET atau antarmuka dalam konteks jenis Java, misalnya Android.Runtime.InputStreamInvoker dan System.IO.Stream, atau Android.Runtime.JavaDictionary dan System.Collections.IDictionary.
Java: Jenis pengecualian Java asli disebarluaskan apa adanya.Javaberarti bahwa, misalnya,InputStreamInvokertidak mengimplementasikanSystem.IO.StreamAPI dengan benar karenaJava.IO.IOExceptiondapat dilemparkan dariStream.Read()bukanSystem.IO.IOException.System: Jenis pengecualian Java asli ditangkap dan dibungkus dalam jenis pengecualian .NET yang sesuai.Systemberarti bahwa, misalnya,InputStreamInvokermengimplementasikanSystem.IO.Streamdengan benar, danStream.Read()tidak akan memunculkanJava.IO.IOExceptioninstans. (Ini mungkin akan melemparkanSystem.IO.IOExceptionyang berisiJava.IO.IOExceptionsebagai nilaiException.InnerException.)Systemmerupakan nilai defaultnya.
AndroidAntarmukaTerikatMengandungKonstanta
Properti boolean yang menentukan apakah dukungan untuk konstanta binding pada antarmuka akan diberikan, atau apakah solusi berupa pembuatan kelas IMyInterfaceConsts akan digunakan.
Nilai defaultnya adalah True.
Interface Bergantung Android Mengandung Metode Interface Statis dan Default
Properti boolean yang menentukan apakah anggota default dan statis pada antarmuka akan didukung, atau solusi lama untuk membuat kelas terkait yang mengandung anggota statis seperti abstract class MyInterface.
Nilai default adalah True di .NET 6 dan False untuk teknologi lama.
AndroidAntarmukaTerhubungMengandungTipe
Properti boolean yang menentukan apakah jenis yang disarangkan dalam antarmuka akan didukung, atau solusi untuk membuat jenis yang tidak disarangkan seperti IMyInterfaceMyNestedClass.
Nilai default adalah True di .NET 6 dan False untuk teknologi lama.
PaketAplikasiPembangunanAndroid
Nilai boolean yang menunjukkan apakah akan membuat dan menandatangani paket (.apk). Mengatur nilai ini ke True setara dengan menggunakan
SignAndroidPackage target build.
Properti ini False secara default.
AndroidBundleConfigurationFile
Menentukan nama file yang akan digunakan sebagai file konfigurasi untuk saat membangun Android App Bundle. File ini mengontrol beberapa aspek tentang bagaimana APK dihasilkan dari bundle, seperti pada dimensi mana bundle tersebut dibagi untuk menghasilkan APK. .NET untuk Android mengonfigurasi beberapa pengaturan ini secara otomatis, termasuk daftar ekstensi file agar tidak dikompresi.
Properti ini hanya relevan jika $(AndroidPackageFormat) diatur ke aab.
AndroidBundleToolExtraArgs
Menentukan opsi baris perintah untuk diteruskan ke perintah bundletool saat membuat bundel aplikasi.
AndroidClassParser
Properti string yang mengendalikan cara berkas .jar diurai. Nilai yang mungkin termasuk:
class-parse: Menggunakan
class-parse.exeuntuk mengurai bytecode Java secara langsung, tanpa bantuan JVM.jar2xml: nilai ini usang dan tidak lagi didukung.
AndroidCodegenTarget
Properti string yang mengontrol ABI target pembuatan kode. Nilai yang mungkin termasuk:
XamarinAndroid: nilai ini usang dan tidak lagi didukung.
XAJavaInterop1: Gunakan Java.Interop untuk pemanggilan JNI. Binding assembly menggunakan
XAJavaInterop1hanya dapat dibangun dan dieksekusi dengan Xamarin.Android 6.1 atau yang lebih baru. Xamarin.Android 6.1 dan yang lebih baru mengikatMono.Android.dlldengan nilai ini.JavaInterop1: nilai eksperimental, saat ini default untuk runtime NativeAOT.
Nilai defaultnya adalah XAJavaInterop1.
AndroidCreatePackagePerAbi
Properti Boolean yang menentukan apakah sekumpulan file --satu per ABI yang ditentukan dalam $(AndroidSupportedAbis)--harus dibuat daripada memiliki dukungan untuk semua ABI dalam satu .apk.
Lihat juga panduan Membangun APK Khusus ABI.
AndroidCreateProguardMappingFile
Properti boolean yang mengendalikan apakah file pemetaan Proguard dihasilkan sebagai bagian dari proses pembangunan.
Menambahkan yang berikut ini ke csproj Anda akan menghasilkan file, dan memanfaatkan properti AndroidProguardMappingFile untuk mengontrol lokasi dari file pemetaan yang dihasilkan.
<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>
Saat memproduksi .aab file, file pemetaan secara otomatis disertakan dalam paket Anda. Tidak perlu mengunggahnya ke Google Play Store secara manual. Saat menggunakan .apk file, AndroidProguardMappingFile file harus diunggah secara manual.
Nilai defaultnya adalah True saat menggunakan $(AndroidLinkTool)=r8.
AndroidDebugKeyAlgorithm
Menentukan algoritma default yang akan digunakan untuk debug.keystore. Nilai defaultnya adalah RSA.
KeberlakuanKunciDebugAndroid
Menentukan validitas default yang akan digunakan untuk debug.keystore. Nilai defaultnya adalah 10950 atau 30 * 365 atau 30 years.
AndroidDebugStoreType
Menentukan format file penyimpanan kunci yang akan digunakan untuk debug.keystore. Pengaturan bawaan adalah pkcs12.
AndroidDeviceUserId
Memungkinkan penerapan dan debugging aplikasi dengan akun tamu atau kerja. Nilainya adalah nilai yang uid Anda dapatkan dari perintah adb berikut:
adb shell pm list users
Perintah di atas akan mengembalikan data berikut:
Users:
UserInfo{0:Owner:c13} running
UserInfo{10:Guest:404}
uid adalah nilai bilangan bulat pertama. Dalam output di atas, yaitu 0 dan 10.
AndroidDexTool
Properti bergaya enum dengan nilai yang valid d8.
Sebelumnya, nilai dx didukung di Xamarin.Android.
Menunjukkan compiler dex Android mana yang digunakan selama proses build .NET untuk Android.
Nilai defaultnya adalah d8. Lihat dokumentasi kami tentang D8 dan R8.
AndroidEnableDesugar
Properti boolean yang menentukan apakah desugar diaktifkan. Android saat ini tidak mendukung semua fitur Java 8, dan toolchain default mengimplementasikan fitur bahasa baru dengan melakukan transformasi bytecode, yang disebut desugar, pada output javac pengkompilasi. Nilai defaultnya adalah False jika menggunakan $(AndroidDexTool)=dx dan True jika menggunakan $(AndroidDexTool)=d8.
AndroidEnableGooglePlayStoreChecks
Properti bool yang memungkinkan pengembang menonaktifkan pemeriksaan Google Play Store berikut: XA1004, XA1005, dan XA1006. Menonaktifkan pemeriksaan ini berguna bagi pengembang yang tidak menargetkan Google Play Store dan tidak ingin menjalankan pemeriksaan tersebut.
AndroidEnableMarshalMethods
Properti bool, yang menentukan apakah metode marshal LLVM diaktifkan atau tidak.
Metode marshal LLVM adalah pengoptimalan startup aplikasi yang menggunakan titik masuk bawaan untuk pendaftaran metode Java native.
Properti ini false secara default.
Ditambahkan dalam .NET 8.
AndroidEnableMultiDex
Properti boolean yang menentukan apakah dukungan multi-deks akan digunakan pada final .apk atau tidak.
Properti ini False secara default.
AndroidEnableProfiler
Sinonim untuk properti $(EnableDiagnostics).
Diperlukan untuk menggunakan dotnet-trace atau dotnet-gcdump di aplikasi Android. Jika diatur ke true, itu termasuk komponen diagnostik Mono dalam aplikasi. Komponen ini adalah libmono-component-diagnostics_tracing.so pustaka bawaan.
Properti ini False secara default.
AndroidAktifkanPewarisanOverrideKadaluwarsa
Properti boolean yang menentukan apakah metode terikat secara otomatis mewarisi [Obsolete] atribut dari metode yang mereka ambil alih.
Dukungan untuk properti ini ditambahkan dalam .NET 8.
Properti ini True secara default.
AndroidEnablePreloadAssemblies
Properti boolean yang mengontrol apakah semua rakitan terkelola yang dibundel dalam paket aplikasi dimuat selama proses startup atau tidak.
Ketika diatur ke True, semua rakitan yang dibundel dalam paket aplikasi akan dimuat selama startup proses, sebelum kode aplikasi dipanggil.
Ketika diatur ke False, rakitan hanya akan dimuat sesuai kebutuhan.
Memuat komponen sesuai kebutuhan memungkinkan peluncuran aplikasi yang lebih cepat, dan juga lebih konsisten dengan semantik .NET desktop.
Untuk melihat penghematan waktu, atur debug.mono.log sebagai Properti Sistem yang menyertakan timing, dan cari pesan di dalam Finished loading assemblies: preloaded atau adb logcat.
Aplikasi atau pustaka yang menggunakan injeksi dependensi mungkin mengharuskan properti ini True jika, pada gilirannya, dibutuhkan bahwa AppDomain.CurrentDomain.GetAssemblies() mengembalikan semua rakitan dalam bundel aplikasi, bahkan jika rakitan tersebut sebenarnya tidak diperlukan.
Secara default nilai ini adalah False.
AndroidEnableProfiledAot
Properti boolean yang menentukan apakah profil AOT digunakan selama kompilasi Ahead-of-Time atau tidak.
Profil tercantum dalam
@(AndroidAotProfile) kelompok barang. ItemGroup ini berisi profil default. Ini dapat ditimpa dengan menghapus profil yang ada dan menambahkan profil AOT Anda sendiri.
Properti ini False secara default.
AktifkanPembatasanTerhadapAtribut
Properti bergaya enum dengan nilai obsolete dan disable.
Ketika diatur ke obsolete, jenis dan anggota yang ditandai dengan anotasi androidx.annotation.RestrictToJava atau berada dalam paket Java yang tidak diekspor akan ditandai dengan atribut [Obsolete] di binding C#.
Atribut ini [Obsolete] memiliki pesan deskriptif yang menjelaskan bahwa pemilik paket Java menganggap API sebagai "internal" dan memperingatkan terhadap penggunaannya.
Atribut ini juga memiliki kode XAOBS001 peringatan kustom sehingga dapat ditekan secara independen dari API usang "normal".
Ketika diatur ke disable, API akan dihasilkan seperti biasa tanpa atribut tambahan. (Ini adalah perilaku yang sama seperti sebelum .NET 8.)
[Obsolete] Menambahkan atribut alih-alih menghapus API secara otomatis dilakukan untuk mempertahankan kompatibilitas API dengan paket yang ada. Jika Anda lebih suka menghapus anggota yang memiliki @RestrictTo anotasi atau berada dalam paket Java yang tidak diekspor, Anda dapat menggunakan File Transformasi selain properti ini untuk mencegah jenis ini terikat:
<remove-node path="//*[@annotated-visibility]" />
Dukungan untuk properti ini ditambahkan dalam .NET 8.
Properti ini diatur ke obsolete secara bawaan.
AndroidEnableSGenConcurrent
Properti boolean yang menentukan apakah pengumpul GC bersamaan Mono akan digunakan atau tidak.
Properti ini False secara default.
AndroidErrorOnCustomJavaObject
Properti boolean yang menentukan apakah tipe dapat mengimplementasikan Android.Runtime.IJavaObjecttanpa juga mewarisi dari Java.Lang.Object atau Java.Lang.Throwable:
class BadType : IJavaObject {
public IntPtr Handle {
get {return IntPtr.Zero;}
}
public void Dispose()
{
}
}
Ketika True, jenis tersebut akan menghasilkan kesalahan XA4212, jika tidak, peringatan XA4212 akan dihasilkan.
Properti ini True secara default.
AndroidExplicitCrunch
Properti ini tidak lagi didukung.
AndroidExtraAotOptions
Properti string yang memungkinkan opsi untuk meneruskan ke kompiler Mono selama Aot tugas untuk proyek yang mengatur $(AndroidEnableProfiledAot) atau $(AotAssemblies) menjadi true.
Nilai string properti ditambahkan ke file respons ketika memanggil cross-compiler Mono.
Secara umum, properti ini harus dibiarkan kosong, tetapi dalam skenario khusus tertentu mungkin memberikan fleksibilitas yang berguna.
Properti $(AndroidExtraAotOptions) berbeda dari properti terkait $(AndroidAotAdditionalArguments) ; $(AndroidAotAdditionalArguments) menempatkan argumen yang dipisahkan koma ke dalam --aot opsi pengkompilasi Mono.
$(AndroidExtraAotOptions) sebaliknya meneruskan opsi terpisah spasi mandiri penuh seperti --verbose atau --debug ke pengkompilasi.
AndroidFastDeploymentType
: Daftar nilai yang dipisahkan oleh titik dua untuk mengontrol jenis apa yang dapat disebarkan ke direktori Penyebaran Cepat pada perangkat target ketika $(EmbedAssembliesIntoApk) properti MSBuild adalah False. Jika sumber daya disebarkan dengan cepat, sumber daya tidak disematkan ke dalam yang dihasilkan .apk atau .aab, yang dapat mempercepat waktu penyebaran. (Semakin cepat disebarkan, maka semakin jarang paket perlu dibangun kembali, dan proses penginstalan bisa lebih cepat.) Nilai yang valid meliputi:
-
Assemblies: Menyebarkan rakitan aplikasi. -
Dexes: Sebarkan file-file.dex, pustaka asli, dan typemaps. NilaiDexeshanya dapat digunakan pada perangkat yang menjalankan Android 4.4 atau yang lebih baru (API-19).
Nilai defaultnya adalah Assemblies.
Dukungan untuk penyebaran cepat sumber daya dan aset melalui sistem tersebut dihapus dalam commit f0d565fe. Ini karena diperlukan penggunaan API yang tidak digunakan lagi untuk bekerja.
**Dukungan untuk fitur ini dihapus di .NET 9
Eksperimental.
AndroidFragmentType
Menentukan jenis default yang sepenuhnya memenuhi syarat untuk digunakan untuk semua <fragment> elemen tata letak saat membuat kode pengikatan tata letak. Nilai defaultnya adalah jenis Android Android.App.Fragment standar.
AndroidGenerateJniMarshalMethods
Properti bool yang memungkinkan pembuatan metode marshal JNI sebagai bagian dari proses build. Ini sangat mengurangi penggunaan System.Reflection dalam kode pembantu pengikatan.
Nilai defaultnya adalah False. Jika pengembang ingin menggunakan fitur metode marshal JNI baru, mereka dapat mengatur
<AndroidGenerateJniMarshalMethods>True</AndroidGenerateJniMarshalMethods>
dalam .csproj mereka. Atau sediakan properti pada baris perintah melalui
-p:AndroidGenerateJniMarshalMethods=True
Eksperimental. Nilai defaultnya adalah False.
ArgumenTambahanPembuatanMetodeJniMarshalDiAndroid
Properti string yang dapat digunakan untuk menambahkan parameter ke pemanggilan jnimarshalmethod-gen.exe, dan berguna untuk debug, sehingga opsi seperti -v, -d, atau --keeptemp dapat digunakan.
Nilai defaultnya adalah string kosong. Ini dapat diatur dalam .csproj file atau pada baris perintah. Contohnya:
<AndroidGenerateJniMarshalMethodsAdditionalArguments>-v -d --keeptemp</AndroidGenerateJniMarshalMethodsAdditionalArguments>
atau:
-p:AndroidGenerateJniMarshalMethodsAdditionalArguments="-v -d --keeptemp"
GenerasiPengikatanTataLetakAndroid
Memungkinkan pembuatan kode tata letak di belakang jika diatur ke true atau menonaktifkannya sepenuhnya jika diatur ke false.
Nilai defaultnya adalah false.
AndroidGenerateResourceDesigner
Nilai defaultnya adalah true. Ketika diatur ke false, menonaktifkan pembuatan Resource.designer.cs.
AndroidHttpClientHandlerType
Mengontrol implementasi default System.Net.Http.HttpMessageHandler yang akan digunakan oleh System.Net.Http.HttpClient konstruktor default. Nilainya adalah nama jenis yang memenuhi syarat rakitan dari subkelas HttpMessageHandler, yang cocok digunakan dengan System.Type.GetType(string).
Di .NET 6 dan yang lebih baru, properti ini hanya berpengaruh ketika digunakan bersama dengan $(UseNativeHttpHandler)=true.
Nilai yang paling umum untuk properti ini adalah:
Xamarin.Android.Net.AndroidMessageHandler: Gunakan API Java Android untuk melakukan permintaan HTTP. Ini mirip dengan warisanXamarin.Android.Net.AndroidClientHandlerdengan beberapa peningkatan. Ini mendukung HTTP 1.1 dan TLS 1.2. Ini adalah pengelola pesan HTTP default.System.Net.Http.SocketsHttpHandler, System.Net.Http: Handler pesan default di .NET. Ini mendukung HTTP/2, TLS 1.2, dan merupakan handler pesan HTTP yang direkomendasikan untuk digunakan dengan Grpc.Net.Client. Nilai ini setara dengan$(UseNativeHttpHandler)=false.Unset/string kosong, yang setara dengan
System.Net.Http.HttpClientHandler, System.Net.HttpSesuai dengan opsi Default di halaman properti Visual Studio.
Wizard proyek baru memilih opsi ini untuk proyek baru saat Versi Android Minimum dikonfigurasi ke Android 4.4.87 atau yang lebih rendah di Visual Studio atau saat Platform Target diatur ke Pengembangan Modern atau Kompatibilitas Maksimum di Visual Studio untuk Mac.
System.Net.Http.HttpClientHandler, System.Net.Http: Gunakan yang terkelolaHttpMessageHandler.Sesuai dengan opsi Terkelola di halaman properti Visual Studio.
Catatan
Di .NET 6, jenis yang Anda tentukan tidak boleh Xamarin.Android.Net.AndroidClientHandler atau System.Net.Http.HttpClientHandler atau diwarisi dari salah satu kelas ini. Jika Anda bermigrasi dari Xamarin.Android "klasik", gunakan AndroidMessageHandler atau dapatkan handler kustom Anda darinya sebagai gantinya.
Catatan
Dukungan untuk $XA_HTTP_CLIENT_HANDLER_TYPE yang ditemukan dalam file dengan tindakan Build
@(AndroidEnvironment) akan diutamakan.
AndroidIgnoreAllJniPreload
Nilai boolean yang, jika diset ke true, menghindari pemuatan awal pustaka asli JNI pada startup aplikasi. Secara default, semua pustaka tersebut akan dimuat oleh runtime lebih awal selama startup aplikasi untuk memastikan inisialisasi yang tepat. Namun, dalam beberapa kasus mungkin bukan perilaku yang diinginkan dan properti ini memungkinkan Anda untuk menonaktifkannya secara efektif.
Beberapa pustaka kerangka kerja yang harus dimuat saat pengaktifan aplikasi tidak akan terpengaruh oleh properti ini.
Lihat juga @(AndroidNativeLibraryNoJniPreload) untuk metode yang lebih terperinci dalam mengecualikan pustaka dari mekanisme pramuat.
AndroidIncludeWrapSh
Nilai boolean yang menunjukkan apakah skrip pembungkus Android (wrap.sh) harus dikemas ke dalam APK. Nilai default adalah false karena skrip pembungkus dapat secara signifikan memengaruhi cara aplikasi dimulai dan berfungsi dan skrip harus disertakan hanya jika perlu, misalnya saat men-debug atau mengubah perilaku startup/runtime aplikasi.
Skrip itu ditambahkan ke proyek dengan menggunakan
@(AndroidNativeLibrary) build action, karena ditempatkan di direktori yang sama dengan pustaka asli khusus arsitektur, dan harus diberi nama wrap.sh.
Cara term mudah untuk menentukan jalur ke wrap.sh skrip adalah dengan memasukkannya ke direktori yang dinamai sesuai arsitektur target. Pendekatan ini akan berfungsi jika Anda hanya memiliki satu wrap.sh per arsitektur:
<AndroidNativeLibrary Include="path/to/arm64-v8a/wrap.sh" />
Namun, jika proyek Anda membutuhkan lebih dari satu wrap.sh per arsitektur, untuk tujuan yang berbeda, pendekatan ini tidak akan berfungsi.
Sebagai gantinya, dalam kasus seperti itu nama dapat ditentukan menggunakan Link metadata dari AndroidNativeLibrary:
<AndroidNativeLibrary Include="/path/to/my/arm64-wrap.sh">
<Link>lib\arm64-v8a\wrap.sh</Link>
</AndroidNativeLibrary>
Jika metadata Link digunakan, jalur yang ditentukan dalam nilainya harus merupakan jalur perpustakaan yang khusus untuk arsitektur asli yang valid dan relatif terhadap direktori akar APK. Format jalur adalah lib\ARCH\wrap.sh di mana ARCH bisa menjadi salah satu dari:
arm64-v8aarmeabi-v7ax86_64x86
AndroidIncludeAssetPacksInPackage
Properti ini mengontrol apakah build Paket Aset secara otomatis disertakan dalam file akhir .aab . Ini akan default ke true.
Dalam kasus tertentu, pengguna mungkin ingin merilis rilis sementara. Dalam kasus ini, pengguna tidak perlu memperbarui paket aset. Terutama jika konten paket aset tidak berubah. Properti ini memungkinkan pengguna untuk melewati paket aset jika tidak diperlukan.
Ditambahkan dalam .NET 9
AndroidInstallJavaDependencies
Nilai defaultnya adalah true untuk build baris perintah. Saat diatur ke true, memungkinkan penginstalan Java SDK saat menjalankan <InstallAndroidDependencies/> target.
Dukungan untuk properti ini ditambahkan dalam .NET 9.
AndroidJavadocVerbosity
Menentukan tingkat kejelasan C# XML Documentation Comments yang seharusnya saat mengimpor dokumentasi Javadoc dalam proyek pengikatan.
Memerlukan penggunaan
@(JavaSourceJar) aksi build.
Properti $(AndroidJavadocVerbosity) ini seperti enum, dengan kemungkinan nilai full atau intellisense:
-
intellisense: Hanya memancarkan komentar XML:<exception/>, ,<param/><returns/>,<summary/>. -
full: Mengeluarkan elemenintellisense, serta<remarks/>,<seealso/>, dan hal lain yang dapat didukung.
Nilai defaultnya adalah intellisense.
AndroidKeyStore
Nilai boolean yang menunjukkan apakah informasi penandatanganan kustom harus digunakan. Nilai defaultnya adalah False, yang berarti bahwa kunci penandatanganan debug default akan digunakan untuk menandatangani paket.
AndroidLaunchActivity
Aktivitas di Android yang akan diluncurkan.
AndroidLinkMode
Menentukan jenis penautan mana yang harus dilakukan pada rakitan yang terkandung dalam paket Android. Hanya digunakan dalam proyek Aplikasi Android. Nilai defaultnya adalah SdkOnly. Nilai yang valid adalah:
Tidak ada: Tidak ada penautan yang akan dicoba.
SdkOnly: Penautan hanya akan dilakukan pada pustaka kelas dasar, bukan rakitan pengguna.
Penuh: Penautan akan dilakukan pada pustaka kelas dasar dan assemblies pengguna.
Catatan
AndroidLinkModeMenggunakan nilai Penuh sering menghasilkan aplikasi yang rusak, terutama ketika Refleksi digunakan. Hindari kecuali Anda benar-benar tahu apa yang Anda lakukan.
<AndroidLinkMode>SdkOnly</AndroidLinkMode>
AndroidLinkResources
Ketika true, sistem build akan menautkan Tipe Tertanam dari kelas Resource.Designer.cs Resource dalam semua assembly. Kode IL yang menggunakan jenis tersebut akan diperbarui untuk menggunakan nilai secara langsung daripada mengakses bidang.
Memisahkan jenis berlapis dapat berdampak kecil pada pengurangan ukuran APK, dan juga dapat membantu dengan performa startup. Hanya build "Release" yang ditautkan.
Eksperimental. Hanya didesain untuk digunakan dengan kode seperti
var view = FindViewById(Resources.Ids.foo);
Skenario lain (seperti refleksi) tidak akan didukung.
AndroidLinkSkip
Menentukan daftar nama rakitan yang dibatasi titik koma (;), tanpa ekstensi file, dari rakitan yang tidak boleh ditautkan. Hanya digunakan dalam proyek Aplikasi Android.
<AndroidLinkSkip>Assembly1;Assembly2</AndroidLinkSkip>
AndroidLinkTool
Properti bergaya enum dengan nilai proguard atau r8. Menunjukkan penyusut kode mana yang digunakan untuk kode Java. Nilai defaultnya adalah string kosong, atau proguard jika $(AndroidEnableProguard) adalah True. Lihat dokumentasi kami tentang D8 dan R8.
AndroidLintEnabled
Properti bool yang memungkinkan pengembang untuk menjalankan alat android lint sebagai bagian dari proses pengemasan.
Ketika $(AndroidLintEnabled)=True, properti berikut digunakan:
Tindakan build berikut juga dapat digunakan:
Lihat Bantuan Lint untuk informasi lebih lanjut tentang alat android lint.
Masalah yang Diaktifkan di Android Lint
Properti string berupa daftar masalah lint (pemeriksa kode) yang dipisahkan koma untuk diaktifkan.
Hanya digunakan ketika $(AndroidLintEnabled)=True.
AndroidLintDisabledIssues
Properti string yang menyatakan daftar masalah lint yang dipisahkan oleh koma untuk dinonaktifkan.
Hanya digunakan ketika $(AndroidLintEnabled)=True.
Android Pemeriksaan Masalah Lint
Properti string yang merupakan daftar masalah lint yang dipisahkan koma untuk diperiksa.
Hanya digunakan ketika $(AndroidLintEnabled)=True.
Catatan: hanya masalah ini yang akan diperiksa.
AndroidManagedSymbols
Properti boolean yang mengontrol apakah titik urutan dihasilkan sehingga informasi nama file dan nomor baris dapat diekstrak dari Release jejak tumpukan.
AndroidManifest
Menentukan nama file yang akan digunakan sebagai templat untuk aplikasi AndroidManifest.xml.
Selama build, nilai lain yang diperlukan akan digabungkan ke dalam hasil akhirnya untuk menghasilkan AndroidManifest.xml yang sebenarnya.
$(AndroidManifest) harus berisi nama paket dalam /manifest/@package atribut .
AndroidManifestMerger
Menentukan implementasi untuk menggabungkan file AndroidManifest.xml . Ini adalah properti bergaya enum tempat legacy memilih implementasi C# asli dan manifestmerger.jar memilih implementasi Java Google.
Nilai default saat ini manifestmerger.jaradalah . Jika Anda ingin menggunakan versi lama, tambahkan yang berikut ini ke csproj Anda
<AndroidManifestMerger>legacy</AndroidManifestMerger>
Penggabungan Google memungkinkan dukungan untuk xmlns:tools="http://schemas.android.com/tools" seperti yang dijelaskan dalam dokumentasi Android.
AndroidManifestMergerExtraArgs
Properti string yang menyediakan argumen untuk alat dokumentasi Android.
Jika Anda menginginkan output terperinci dari alat ini, Anda dapat menambahkan yang berikut ke .csproj.
<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>
AndroidManifestType
Properti bergaya enum dengan nilai Xamarin atau GoogleV2.
Ini mengontrol repositori mana yang digunakan oleh
InstallAndroidDependencies target untuk menentukan paket Android dan versi paket mana yang tersedia dan dapat diinstal.
Xamarin
adalah repositori Daftar yang Disetujui (Disarankan) dalam Visual Studio SDK Manager.
GoogleV2
adalah repositori Daftar Lengkap (Tidak didukung) dalam Visual Studio SDK Manager.
Jika $(AndroidManifestType) tidak diatur, maka Xamarin digunakan.
AndroidManifestPlaceholders
Daftar pasangan pengganti nilai kunci yang dipisahkan titik koma untuk AndroidManifest.xml, di mana setiap pasangan memiliki format key=value.
Misalnya, nilai properti assemblyName=$(AssemblyName) menentukan ${assemblyName} tempat penampung yang dapat muncul di AndroidManifest.xml:
<application android:label="${assemblyName}"
Ini menyediakan cara untuk menyisipkan variabel dari proses build ke dalam file AndroidManifest.xml .
AndroidMultiDexClassListExtraArgs
Properti string yang memungkinkan pengembang meneruskan argumen ke com.android.multidex.MainDexListBuilder saat membuat multidex.keep file.
Salah satu kasus tertentu adalah jika Anda mendapatkan pesan kesalahan berikut selama dx kompilasi.
com.android.dex.DexException: Too many classes in --main-dex-list, main dex capacity exceeded
Jika Anda mendapatkan kesalahan ini, Anda dapat menambahkan yang berikut ini ke .csproj.
<DxExtraArguments>--force-jumbo </DxExtraArguments>
<AndroidMultiDexClassListExtraArgs>--disable-annotation-resolution-workaround</AndroidMultiDexClassListExtraArgs>
yang akan memungkinkan langkah dx berhasil.
AndroidPackageFormat
Properti bergaya enum dengan nilai apk atau aab. Menunjukkan apakah Anda ingin mengemas aplikasi Android sebagai file APK atau Android App Bundle. App Bundles adalah format baru untuk Release build yang ditujukan untuk pengiriman di Google Play. Nilai defaultnya adalah apk.
Ketika $(AndroidPackageFormat) diatur ke aab, properti MSBuild lainnya diatur, yang diperlukan untuk Android App Bundles:
-
$(AndroidUseAapt2)adalahTrue. -
$(AndroidUseApkSigner)adalahFalse. -
$(AndroidCreatePackagePerAbi)adalahFalse.
Properti ini tidak akan digunakan lagi untuk .net 6. Pengguna seharusnya beralih ke AndroidPackageFormats yang lebih baru.
AndroidPackageFormats
Properti yang dibatasi titik koma dengan nilai yang valid, yaitu apk dan aab.
Menunjukkan apakah Anda ingin mengemas aplikasi Android sebagai file APK atau Android App Bundle. App Bundles adalah format baru untuk Release build yang ditujukan untuk pengiriman di Google Play.
Saat membuat build Rilis, Anda mungkin ingin menghasilkan aab dan apk untuk distribusi ke berbagai toko.
Pengaturan AndroidPackageFormats ke aab;apk akan mengakibatkan keduanya dihasilkan. Pengaturan AndroidPackageFormats ke salah satu aab atau apk hanya akan menghasilkan satu file.
Nilai defaultnya adalah aab;apk hanya untuk Release builds.
Penggunaan apk untuk penelusuran kesalahan lebih cepat, tetapi aab juga didukung dengan penyebaran cepat jika diperlukan (misalnya, saat menguji paket aset).
KebijakanPenamaanPaketAndroid
Properti bergaya enum untuk menentukan nama paket Java dari kode sumber Java yang dihasilkan.
Satu-satunya nilai yang didukung adalah LowercaseCrc64.
PersiapanAndroidUntukMembangunBergantungPada
Properti yang dipisahkan oleh titik koma dapat digunakan untuk meningkatkan proses build Android. Target MSBuild yang ditambahkan ke properti ini akan dijalankan di awal build untuk jenis proyek Aplikasi dan Pustaka. Properti ini kosong secara default.
Contoh:
<PropertyGroup>
<AndroidPrepareForBuildDependsOn>MyCustomTarget</AndroidPrepareForBuildDependsOn>
</PropertyGroup>
<Target Name="MyCustomTarget" >
<Message Text="Running target: 'MyCustomTarget'" Importance="high" />
</Target>
AndroidProguardMappingFile
-printmapping Menentukan aturan proguard untuk r8. Ini berarti mapping.txt file akan diproduksi dalam $(OutputPath) folder . File ini kemudian dapat digunakan saat mengunggah paket ke Google Play Store.
Secara default file ini diproduksi secara otomatis saat menggunakan AndroidLinkTool=r8 dan akan menghasilkan file $(OutputPath)mapping.txtberikut .
Jika Anda tidak ingin menghasilkan file pemetaan ini, Anda dapat menggunakan AndroidCreateProguardMappingFile properti untuk berhenti membuatnya .
Tambahkan yang berikut ini di proyek Anda
<AndroidCreateProguardMappingFile>False</AndroidCreateProguardMappingFile>
atau gunakan -p:AndroidCreateProguardMappingFile=False pada baris perintah.
AndroidD8AbaikanPeringatan
Menentukan bahwa --map-diagnostics warning info diteruskan ke d8. Nilai defaultnya adalah True, tetapi dapat diatur ke False untuk menerapkan perilaku yang lebih ketat.
Lihat kode sumber D8 dan R8 untuk detailnya.
Ditambahkan dalam .NET 8.
AndroidR8IgnoreWarnings
-ignorewarnings Menentukan aturan proguard untuk r8. Ini memungkinkan r8 untuk melanjutkan kompilasi deks bahkan jika peringatan tertentu ditemui. Nilai defaultnya adalah True, tetapi dapat diatur ke False untuk menerapkan perilaku yang lebih ketat.
Lihat manual ProGuard untuk detailnya.
Mulai dari .NET 8, menentukan --map-diagnostics warning info.
Lihat kode sumber D8 dan R8 untuk detailnya.
AndroidR8JarPath
Jalur menuju r8.jar untuk digunakan dengan r8 dex-compiler dan shrinker. Nilai default adalah jalur ke penginstalan beban kerja .NET untuk Android. Untuk informasi lebih lanjut, lihat dokumentasi kami tentang D8 dan R8.
AndroidResgenExtraArgs
Menentukan opsi baris perintah untuk diteruskan ke perintah aapt saat memproses aset dan sumber daya Android.
AndroidResgenFile
Menentukan nama file Sumber Daya yang akan dihasilkan. Templat default mengatur ini ke Resource.designer.cs.
AndroidResourceDesignerClassModifier
Menentukan pengubah kelas untuk kelas menengah Resource yang dihasilkan. Nilai yang berlaku adalah public atau internal.
Secara default ini akan menjadi public.
Ditambahkan dalam .NET 9.
AndroidSdkBuildToolsVersion
Paket build-tools Android SDK menyediakan tool aapt dan zipalign antara lain. Beberapa versi paket build-tools yang berbeda dapat diinstal secara bersamaan. Paket build-tools yang dipilih untuk pengemasan dilakukan dengan memeriksa dan menggunakan versi alat build "pilihan" jika ada; jika versi "pilihan" tidak ada, maka paket build-tools versi terinstal tertinggi digunakan.
Properti $(AndroidSdkBuildToolsVersion) MSBuild berisi versi build-tools yang diutamakan. Sistem build .NET for Android menyediakan nilai default di Xamarin.Android.Common.targets, dan nilai default tersebut dapat diganti dalam file proyek Anda untuk memilih versi build-tools alternatif, jika (misalnya) aapt terbaru mengalami kegagalan sedangkan versi aapt sebelumnya diakui berfungsi.
AndroidSigningKeyAlias
Menentukan alias untuk kunci di keystore. Ini adalah nilai keytool -alias yang digunakan saat membuat keystore.
AndroidSigningKeyPass
Menentukan kata sandi kunci dalam file keystore. Ini adalah nilai yang dimasukkan saat keytool meminta Masukkan kata sandi kunci untuk $(AndroidSigningKeyAlias).
Properti ini juga mendukung env: dan file: awalan yang dapat digunakan untuk menentukan variabel lingkungan atau file yang berisi kata sandi.
Opsi ini menyediakan cara untuk mencegah kata sandi muncul di log build.
Misalnya, untuk menggunakan variabel lingkungan bernama AndroidSigningPassword:
<PropertyGroup>
<AndroidSigningKeyPass>env:AndroidSigningPassword</AndroidSigningKeyPass>
</PropertyGroup>
Untuk menggunakan file yang terletak di C:\Users\user1\AndroidSigningPassword.txt:
<PropertyGroup>
<AndroidSigningKeyPass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningKeyPass>
</PropertyGroup>
Catatan
Awalan env: tidak didukung ketika $(AndroidPackageFormat) disetel ke aab.
AndroidSigningKeyStore
Menentukan nama file keystore yang dibuat oleh keytool. Ini sesuai dengan nilai yang disediakan untuk opsi keytool -keystore .
AndroidSigningStorePass
Menentukan kata sandi ke $(AndroidSigningKeyStore).
Ini adalah nilai yang disediakan untuk keytool saat membuat file keystore dan diminta Masukkan kata sandi keystore:.
Properti ini juga mendukung env: dan file: awalan yang dapat digunakan untuk menentukan variabel lingkungan atau file yang berisi kata sandi. Opsi ini menyediakan cara untuk mencegah kata sandi muncul di log build.
Misalnya, untuk menggunakan variabel lingkungan bernama AndroidSigningPassword:
<PropertyGroup>
<AndroidSigningStorePass>env:AndroidSigningPassword</AndroidSigningStorePass>
</PropertyGroup>
Untuk menggunakan file yang terletak di C:\Users\user1\AndroidSigningPassword.txt:
<PropertyGroup>
<AndroidSigningStorePass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningStorePass>
</PropertyGroup>
Catatan
Awalan env: tidak didukung ketika $(AndroidPackageFormat) disetel ke aab.
AndroidSigningPlatformKey
Menentukan file kunci yang akan digunakan untuk menandatangani apk.
Ini hanya digunakan saat membangun system aplikasi.
AndroidSigningPlatformCert
Menentukan file sertifikat yang akan digunakan untuk menandatangani apk.
Ini hanya digunakan saat membangun system aplikasi.
AndroidStripILAfterAOT
Properti bool yang menentukan apakah badan metode yang dikompilasi AOT akan dihapus atau tidak.
Nilai defaultnya adalah false, dan badan metode yang dikompilasi AOT tidak akan dihapus.
Ketika diatur ke true, $(AndroidEnableProfiledAot) diatur ke false secara default.
Ini berarti bahwa dalam Build konfigurasi rilis -- di mana $(RunAOTCompilation) secara true default -- AOT diaktifkan untuk semuanya.
Ini dapat mengakibatkan peningkatan ukuran aplikasi. Perilaku ini dapat diubah dengan secara eksplisit mengatur $(AndroidEnableProfiledAot) menjadi true dalam file proyek Anda.
Dukungan eksperimental untuk properti ini ditambahkan di .NET 8, dihapus dalam .NET 10.
AndroidStripNativeLibraries
Properti bool yang memberi tahu proses pengemasan untuk menghapus simbol debug dari pustaka bersama asli (file asli).
Nilai default adalah false dan simbol debug, jika ada, akan dipertahankan saat pengemasan.
AndroidSupportedAbis
Properti string yang berisi daftar ABI yang dipisahkan dengan titik koma (;) dan harus dimasukkan ke dalam .apk.
Nilai yang didukung mencakup:
armeabi-v7ax86arm64-v8ax86_64
AndroidTlsProvider
Properti ini usang dan tidak boleh digunakan.
AndroidUseAapt2
Ini adalah properti Xamarin.Android yang tidak berpengaruh di .NET untuk Android.
aapt2 selalu digunakan dan tidak dapat dinonaktifkan.
AndroidUseApkSigner
Properti bool yang memungkinkan pengembang untuk menggunakan apksigner alat daripada jarsigner.
AndroidUseDefaultAotProfile
Properti bool yang memungkinkan pengembang untuk menekan penggunaan profil AOT default.
Untuk menekan profil AOT default, atur properti ke false.
AndroidUseDesignerAssembly
Properti bool yang mengontrol apakah sistem build akan menghasilkan _Microsoft.Android.Resource.Designer.dll sebagai lawan dari file Resource.Designer.cs. Manfaatnya adalah aplikasi yang lebih kecil dan waktu mulai yang lebih cepat.
Nilai defaultnya ada true di .NET 8.
Sebagai Penulis Nuget, disarankan agar Anda mengirimkan tiga versi assembly jika Anda ingin mempertahankan kompatibilitas mundur.
Satu untuk MonoAndroid, satu untuk net6.0-android dan satu untuk net8.0-android. Anda dapat melakukan ini dengan menggunakan Xamarin.Legacy.Sdk. Ini hanya diperlukan jika proyek Pustaka Nuget Anda menggunakan AndroidResource item dalam proyek atau melalui dependensi.
<TargetFrameworks>monoandroid90;net6.0-android;net8.0-android</TargetFrameworks>
Matikan pengaturan ini sampai saatnya Classic dan net7.0-android resmi tidak digunakan lagi.
Proyek .NET 8 yang memilih untuk menonaktifkan pengaturan ini tidak akan dapat menggunakan referensi yang menggunakannya. Jika Anda mencoba menggunakan assembly yang memang mengaktifkan fitur ini dalam proyek yang tidak mengaktifkan fitur ini, Anda akan mendapatkan XA1034 kesalahan build.
Ditambahkan dalam .NET 8.
AndroidUseInterpreter
Properti boolean yang menyebabkan
Eksperimental.
AndroidUseLegacyVersionCode
Properti boolean yang memungkinkan pengembang mengembalikan perhitungan versionCode kembali ke perilaku lama sebelum Xamarin.Android 8.2. Ini hanya boleh digunakan untuk pengembang dengan aplikasi yang ada di Google Play Store. Sangat disarankan agar properti baru $(AndroidVersionCodePattern) digunakan.
AndroidUseManagedDesignTimeResourceGenerator
Properti boolean yang akan mengalihkan build waktu desain untuk menggunakan pengurai sumber daya terkelola alih-alih aapt.
AndroidGunakanNegosiasiOtentikasi
Properti Boolean yang memungkinkan dukungan untuk autentikasi NTLMv2/Negotiate di AndroidMessageHandler. Nilai defaultnya adalah False.
Ditambahkan dalam .NET 7.
AndroidUseSharedRuntime
Properti ini usang dan tidak boleh digunakan.
AndroidVersionCode
Properti MSBuild yang dapat digunakan sebagai alternatif /manifest/@android:versionCode dalam AndroidManifest.xml file. Untuk memilih fitur ini, Anda juga harus mengaktifkan <GenerateApplicationManifest>true</GenerateApplicationManifest>.
Ini akan menjadi default ke depannya di .NET 6.
Properti ini diabaikan jika $(AndroidCreatePackagePerAbi) dan $(AndroidVersionCodePattern) digunakan.
@android:versionCode adalah nilai bilangan bulat yang harus ditingkatkan untuk setiap rilis Google Play.
Lihat dokumentasi Android untuk detail lebih lanjut tentang persyaratan untuk /manifest/@android:versionCode.
AndroidVersionCodePattern
Properti string yang memungkinkan pengembang untuk menyesuaikan versionCode dalam manifes.
Lihat Membuat Kode Versi untuk APK untuk informasi tentang cara memutuskan versionCode.
Beberapa contoh, jika abi adalah armeabi dan versionCode dalam manifes adalah 123, {abi}{versionCode} akan menghasilkan versionCode 1123 jika $(AndroidCreatePackagePerAbi) adalah True, jika tidak, akan menghasilkan nilai 123.
Jika abi adalah x86_64 dan versionCode dalam manifes adalah 44. Ini akan menghasilkan 544 kapan $(AndroidCreatePackagePerAbi) True, jika tidak akan menghasilkan nilai 44.
Jika kita menyertakan string format padding kiri {abi}{versionCode:0000}, itu akan menghasilkan 50044 karena kita menambahkan padding kiri pada versionCode dengan 0. Atau, Anda dapat menggunakan padding desimal seperti
{abi}{versionCode:D4} yang melakukan hal yang sama seperti contoh sebelumnya.
Hanya string format padding '0' dan 'Dx' yang didukung karena nilai HARUS berupa bilangan bulat.
Item kunci yang telah ditentukan sebelumnya
abi – Menyisipkan abi yang ditargetkan untuk aplikasi
- 2 –
armeabi-v7a - 3 –
x86 - 4 –
arm64-v8a - 5 –
x86_64
- 2 –
minSDK – Menyisipkan nilai Sdk minimum yang didukung dari
AndroidManifest.xmlatau11jika tidak ada yang ditentukan.versionCode – Menggunakan kode versi langsung dari
Properties\AndroidManifest.xml.
Anda dapat menentukan item kustom menggunakan $(AndroidVersionCodeProperties) properti (ditentukan berikutnya).
Secara default, nilai akan diatur ke {abi}{versionCode:D6}. Jika pengembang ingin mempertahankan perilaku lama, Anda dapat mengambil alih default dengan mengatur properti ke $(AndroidUseLegacyVersionCode)true
AndroidVersionCodeProperties
Properti string yang memungkinkan pengembang menentukan item kustom untuk digunakan dengan $(AndroidVersionCodePattern).
Mereka dalam bentuk sepasang key=value. Semua item dalam value harus berupa nilai bilangan bulat. Misalnya: screen=23;target=$(_AndroidApiLevel). Seperti yang Anda lihat, Anda dapat memanfaatkan properti MSBuild yang sudah ada atau yang kustom dalam string.
ApplicationId
Properti MSBuild yang dapat digunakan sebagai alternatif /manifest/@package dalam AndroidManifest.xml file. Untuk memilih fitur ini, Anda juga harus mengaktifkan <GenerateApplicationManifest>true</GenerateApplicationManifest>.
Ini akan menjadi default ke depannya di .NET 6.
Lihat dokumentasi Android untuk detail lebih lanjut tentang persyaratan untuk /manifest/@package.
Judul Aplikasi
Properti MSBuild yang dapat digunakan sebagai alternatif /manifest/application/@android:label dalam AndroidManifest.xml file. Untuk memilih fitur ini, Anda juga harus mengaktifkan <GenerateApplicationManifest>true</GenerateApplicationManifest>.
Ini akan menjadi default ke depannya di .NET 6.
Lihat dokumentasi Android untuk detail lebih lanjut tentang persyaratan untuk /manifest/application/@android:label.
VersiAplikasi
Properti MSBuild yang dapat digunakan sebagai alternatif /manifest/@android:versionName dalam AndroidManifest.xml file. Untuk memilih fitur ini, Anda juga harus mengaktifkan <GenerateApplicationManifest>true</GenerateApplicationManifest>.
Ini akan menjadi default ke depannya di .NET 6.
Lihat dokumentasi Android untuk detail lebih lanjut tentang persyaratan untuk /manifest/@android:versionName.
AotAssemblies
Properti boolean yang menentukan apakah rakitan akan dikompilasi menjadi kode asli terlebih dahulu dan disertakan dalam aplikasi atau tidak.
Properti ini False secara default.
Tidak digunakan lagi di .NET 7. Migrasikan ke properti MSBuild baru $(RunAOTCompilation) sebagai gantinya, sebagai dukungan untuk $(AotAssemblies) akan dihapus dalam rilis mendatang.
AProfUtilExtraOptions
Opsi tambahan untuk diteruskan ke aprofutil.
BeforeBuildAndroidAssetPacks
Target MSBuild yang tercantum dalam properti ini akan berjalan langsung sebelum AssetPack item dibuat.
Ditambahkan dalam .NET 9
BeforeGenerateAndroidManifest
Target MSBuild yang tercantum dalam properti ini akan berjalan langsung sebelum _GenerateJavaStubs.
Konfigurasi
Menentukan konfigurasi build yang akan digunakan, seperti "Debug" atau "Rilis". Properti Konfigurasi digunakan untuk menentukan nilai default untuk properti lain yang menentukan perilaku target. Konfigurasi tambahan dapat dibuat dalam IDE Anda.
Secara default, Debug konfigurasi akan menghasilkan
Install dan
SignAndroidPackage menargetkan pembuatan paket Android yang lebih kecil yang memerlukan keberadaan file dan paket lain untuk beroperasi.
Konfigurasi default Release akan menghasilkan
Install dan
SignAndroidPackage menargetkan pembuatan paket Android yang berdiri sendiri, dan dapat digunakan tanpa menginstal paket atau file lain.
DebugSymbols
Nilai boolean yang menentukan apakah paket Android dapat di-debug, dalam kombinasi dengan properti $(DebugType).
Paket yang dapat di-debug berisi simbol debug, mengatur //application/@android:debuggable atribut ke true, dan secara otomatis menambahkan
INTERNET izin sehingga debugger dapat terhubung ke proses. Aplikasi dapat di-debug jika DebugSymbols adalah TruedanDebugType merupakan string kosong atau Full.
DebugType
Menentukan jenis simbol debug yang akan dihasilkan sebagai bagian dari build, yang juga berdampak pada apakah Aplikasi dapat di-debug. Nilai yang mungkin termasuk:
Penuh: Simbol lengkap dihasilkan. Jika
DebugSymbolsProperti MSBuild jugaTrue, maka paket Aplikasi dapat di-debug.PdbOnly: Simbol "PDB" dihasilkan. Paket Aplikasi tidak dapat di-debug.
Jika DebugType tidak diatur atau merupakan string kosong, maka DebugSymbols properti mengontrol apakah Aplikasi dapat di-debug atau tidak.
Device
Menentukan perangkat Android atau emulator mana yang akan ditargetkan saat menggunakan dotnet run --device <Device> atau target MSBuild yang berinteraksi dengan perangkat (seperti Run, , Installatau Uninstall).
Nilai harus berupa nomor seri perangkat lengkap atau pengidentifikasi seperti yang dikembalikan oleh adb devices. Misalnya, jika serial perangkat adalah emulator-5554, Anda harus menggunakan -p:Device=emulator-5554.
Ketika diatur, properti ini digunakan untuk menginisialisasi AdbTarget properti dengan nilai -s "<Device>".
Untuk informasi selengkapnya tentang pemilihan perangkat, lihat spesifikasi pemilihan perangkat .NET SDK.
Alamat Diagnostik
Nilai yang disediakan oleh dotnet-dsrouter seperti 127.0.0.1, komponen alamat IP dari $(DiagnosticConfiguration) atau $DOTNET_DiagnosticPorts.
Secara implisit mengaktifkan komponen diagnostik Mono, yang berarti $(EnableDiagnostics)/$(AndroidEnableProfiler) diatur ke true.
Secara default menjadi 127.0.0.1.
Konfigurasi Diagnostik
Nilai yang disediakan oleh dotnet-dsrouter untuk $DOTNET_DiagnosticPorts seperti:
127.0.0.1:9000,suspend,connect127.0.0.1:9000,nosuspend,connect
Perhatikan bahwa karakter , harus di-escape dengan %2c jika diteruskan dalam command line ke dotnet build:
dotnet build -c Release -p:DiagnosticConfiguration=127.0.0.1:9000%2csuspend%2cconnect
Ini akan secara otomatis mengatur variabel lingkungan $DOTNET_DiagnosticPorts yang dikemas di dalam aplikasi.
Secara implisit mengaktifkan komponen diagnostik Mono, yang berarti $(EnableDiagnostics)/$(AndroidEnableProfiler) diatur ke true.
DiagnosticListenMode
Nilai yang disediakan oleh dotnet-dsrouter seperti connect, komponen mode mendengarkan dari $(DiagnosticConfiguration) atau $DOTNET_DiagnosticPorts.
Secara implisit mengaktifkan komponen diagnostik Mono, yang berarti $(EnableDiagnostics)/$(AndroidEnableProfiler) diatur ke true.
Secara default menjadi connect.
DiagnosticPort
Nilai yang disediakan oleh dotnet-dsrouter seperti 9000, komponen port dari $(DiagnosticConfiguration), atau $DOTNET_DiagnosticPorts.
Secara implisit mengaktifkan komponen diagnostik Mono, yang berarti $(EnableDiagnostics)/$(AndroidEnableProfiler) diatur ke true.
Secara default menjadi 9000.
DiagnosticSuspend
Nilai boolean yang disediakan oleh dotnet-dsrouter seperti true/suspend atau false/nosuspend, komponen dari $(DiagnosticConfiguration) atau $DOTNET_DiagnosticPorts.
Secara implisit mengaktifkan komponen diagnostik Mono, yang berarti $(EnableDiagnostics)/$(AndroidEnableProfiler) diatur ke true.
Secara default menjadi false.
EmbedAssembliesIntoApk
Properti boolean yang menentukan apakah rakitan aplikasi harus disematkan ke dalam paket Aplikasi atau tidak.
Properti ini harus True untuk build Rilis dan False untuk build Debug. Ini mungkin perlu diaktifkan True di pembangunan Debug jika fitur Penyebaran Cepat tidak mendukung perangkat target.
Ketika properti ini adalah False, maka
$(AndroidFastDeploymentType) Properti MSBuild juga mengontrol apa yang akan disematkan ke .apk atau .aab, yang dapat memengaruhi waktu penyebaran dan waktu pembangunan kembali.
Aktifkan Diagnostik
Sinonim untuk properti $(AndroidEnableProfiler).
Diperlukan untuk menggunakan dotnet-trace atau dotnet-gcdump di aplikasi Android. Jika diatur ke true, itu termasuk komponen diagnostik Mono dalam aplikasi. Komponen ini adalah libmono-component-diagnostics_tracing.so pustaka bawaan.
Properti ini False secara default.
Aktifkan LLVM
Properti boolean yang menentukan apakah LLVM akan digunakan saat kompilasi Ahead-of-Time assembly menjadi kode native.
Android NDK harus diinstal untuk membuat proyek yang mengaktifkan properti ini.
Properti ini False secara default.
Properti ini diabaikan kecuali $(AotAssemblies) properti MSBuild adalah True.
Aktifkan Proguard
Properti boolean yang menentukan apakah proguard dijalankan sebagai bagian dari proses pengemasan untuk mengaitkan kode Java.
Properti ini False secara default.
Ketika file True, maka file @(ProguardConfiguration) akan digunakan untuk mengontrol eksekusi proguard.
EventSourceSupport
Ketika diatur ke false, menonaktifkan dukungan EventSource dari .NET pada aplikasi Android yang telah dipangkas. Menonaktifkan fitur ini akan mencegah alat diagnostik .NET seperti dotnet-counters berfungsi, tetapi dengan manfaat ukuran aplikasi yang berkurang.
Atur ke false secara default dalam Release mode, kecuali $(EnableDiagnostics) atau $(AndroidEnableProfiler) diaktifkan.
BuatManifestAplikasi
Mengaktifkan atau menonaktifkan properti MSBuild berikut yang memancarkan nilai dalam file akhir AndroidManifest.xml :
Nilai $(GenerateApplicationManifest) defaultnya adalah true.
JavaMaximumHeapSize
Menentukan nilai parameter java yang akan digunakan saat membangun file -Xmx sebagai bagian dari proses pengemasan. Jika tidak ditentukan, maka opsi memasok -Xmxjava dengan nilai 1G. Ini ditemukan umumnya diperlukan pada Windows dibandingkan dengan platform lain.
Menentukan properti ini diperlukan jika target _CompileDex melempar sebuah java.lang.OutOfMemoryError.
Sesuaikan nilai dengan mengubah:
<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
JavaOptions
Menentukan opsi baris perintah untuk diteruskan ke java saat membangun .dex file.
JarsignerTimestampAuthorityCertificateAlias
Properti ini memungkinkan Anda menentukan alias di keystore untuk otoritas tanda waktu. Lihat dokumentasi Dukungan Tanda Waktu Tanda Tangan Java untuk detail selengkapnya.
<PropertyGroup>
<JarsignerTimestampAuthorityCertificateAlias>Alias</JarsignerTimestampAuthorityCertificateAlias>
</PropertyGroup>
JarsignerTimestampAuthorityUrl
Properti ini memungkinkan Anda menentukan URL ke layanan otoritas timestamp. Ini dapat digunakan untuk memastikan tanda tangan Anda .apk menyertakan tanda waktu.
Lihat dokumentasi Dukungan Tanda Waktu Tanda Tangan Java untuk detail selengkapnya.
<PropertyGroup>
<JarsignerTimestampAuthorityUrl>http://example.tsa.url</JarsignerTimestampAuthorityUrl>
</PropertyGroup>
LinkerDumpDependencies
Properti bool yang memungkinkan pembuatan file dependensi linker. File ini bisa digunakan sebagai input untuk illinkanalyzer tool.
File dependensi bernama linker-dependencies.xml.gz ditulis ke direktori proyek. Pada .NET5/6, diletakkan di sebelah rakitan yang ditautkan dalam direktori obj/<Configuration>/android<ABI>/linked.
Nilai defaultnya adalah False.
MandroidI18n
Properti MSBuild ini sudah usang dan tidak lagi didukung.
MetricsSupport
Ketika diatur ke false, menonaktifkan dukungan Metrik .NET dari aplikasi Android yang telah dipangkas. Menonaktifkan fitur ini akan mencegah API seperti System.Diagnostics.Metrics berfungsi, tetapi dengan manfaat pengurangan ukuran aplikasi.
Atur ke false secara default dalam Release mode, kecuali $(EnableDiagnostics) atau $(AndroidEnableProfiler) diaktifkan.
MonoAndroidAssetPrefix
Menentukan prefiks jalur yang dihapus dari awal nama file ketika tindakan Build dilakukan AndroidAsset. Ini untuk memungkinkan perubahan di mana sumber daya berada.
Nilai defaultnya adalah Assets. Ubah ini menjadi assets untuk struktur proyek Java.
MonoAndroidResourcePrefix
Menentukan prefiks jalur yang dihapus dari awal nama file ketika tindakan Build dilakukan AndroidResource. Ini untuk memungkinkan perubahan di mana sumber daya berada.
Nilai defaultnya adalah Resources. Ubah ini menjadi res untuk struktur proyek Java.
MonoSymbolArchive
Catatan
Ini adalah properti MSBuild warisan dari Xamarin.Android. Tidak tersedia di .NET 6+.
Properti boolean yang mengontrol apakah .mSYM artefak dibuat untuk digunakan nanti dengan mono-symbolicate, untuk mengekstrak nama file "nyata" dan informasi nomor baris dari pelacakan tumpukan Rilis.
Ini adalah True secara default untuk aplikasi “Rilis” yang mengaktifkan simbol debugging: $(EmbedAssembliesIntoApk) adalah True.
$(DebugSymbols) adalah True, dan
$(Optimize) adalah Benar.
RunAOTCompilation
Properti boolean yang menentukan apakah rakitan akan dikompilasi menjadi kode asli terlebih dahulu dan disertakan dalam aplikasi atau tidak.
Properti ini secara default adalah False untuk build Debug dan secara default adalah True untuk build Release.
Properti MSBuild ini menggantikan $(AotAssemblies) properti MSBuild dari Xamarin.Android. Ini adalah properti yang sama yang digunakan untuk Blazor WASM.
WaitForExit
Properti boolean yang mengontrol perilaku dotnet run saat meluncurkan aplikasi Android.
Ketika $(WaitForExit) tidak false (default), dotnet run akan:
- Meluncurkan aplikasi Android
- Aliran keluaran
logcatdifilter untuk proses aplikasi - Tunggu hingga aplikasi keluar atau pengguna menekan Ctrl+C
- Hentikan paksa aplikasi saat Ctrl+C ditekan
Ketika $(WaitForExit) adalah false, dotnet run hanya akan meluncurkan aplikasi menggunakan adb shell am start dan segera kembali tanpa menunggu aplikasi keluar atau streaming output apa pun.
Diperkenalkan dalam .NET 11.