Bagikan melalui


Properti build

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 merupakan tempat 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 perintah tautan aapt2 saat memproses aset dan sumber daya Android.

AndroidAddKeepAlives

Properti boolean yang mengontrol apakah linker akan menyisipkan GC.KeepAlive() pemanggilan dalam proyek pengikatan untuk mencegah pengumpulan objek prematur.

Nilai defaultnya adalah True untuk build konfigurasi Rilis.

AndroidAotAdditionalArguments

Properti string yang memungkinkan opsi meneruskan ke pengkompilasi Mono selama Aot tugas untuk proyek yang memiliki $(AndroidEnableProfiledAot) atau $(AotAssemblies) diatur ke true. Nilai string properti ditambahkan ke file respons saat memanggil pengkompilasi silang 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 hash untuk digunakan dengan jarsigner -digestalg.

Nilai defaultnya adalah SHA-256.

AndroidApkSignerAdditionalArguments

Properti string yang memungkinkan pengembang untuk memberikan argumen ke apksigner alat.

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

Properti boolean yang menentukan apakah "dihindari" atau tidak System.Reflection.Emit untuk meningkatkan performa startup. Properti ini secara True 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 ke MethodInfo.Invoke() atau ConstructorInfo.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 detail tentang sakelar fitur yang tersedia.

Ditambahkan dalam .NET 8.

AndroidBinUtilsPath

Jalur ke direktori yang berisi binutil Android seperti ld, linker 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 .NET untuk jenis yang disediakan Android mengimplementasikan jenis .NET atau antarmuka dalam hal 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.

    Java berarti bahwa, misalnya, InputStreamInvoker tidak mengimplementasikan System.IO.Stream API dengan benar karena Java.IO.IOException dapat dilemparkan dari Stream.Read() bukan System.IO.IOException.

  • System: Jenis pengecualian Java asli ditangkap dan dibungkus dalam jenis pengecualian .NET yang sesuai.

    Systemberarti bahwa, misalnya, InputStreamInvoker mengimplementasikan System.IO.Stream, dan Stream.Read() tidak akan melemparkan Java.IO.IOException instans dengan benar. (Ini dapat melemparkan yang System.IO.IOException berisi Java.IO.IOException sebagai Exception.InnerException nilai.)

    System merupakan nilai defaultnya.

AndroidBoundInterfacesContainConstants

Properti boolean yang menentukan apakah konstanta pengikatan pada antarmuka akan didukung, atau solusi pembuatan IMyInterfaceConsts kelas akan digunakan.

Nilai defaultnya adalah True.

AndroidBoundInterfacesContainStaticAndDefaultInterfaceMethods

Properti boolean yang apakah anggota default dan statis pada antarmuka akan didukung, atau solusi lama untuk membuat kelas saudara yang berisi anggota statis seperti abstract class MyInterface.

Nilai default berada True di .NET 6 dan False untuk warisan.

AndroidBoundInterfacesContainTypes

Properti boolean yang apakah jenis yang disarangkan dalam antarmuka akan didukung, atau solusi pembuatan jenis yang tidak berlapis seperti IMyInterfaceMyNestedClass.

Nilai default berada True di .NET 6 dan False untuk warisan.

AndroidBuildApplicationPackage

Nilai boolean yang menunjukkan apakah akan membuat dan menandatangani paket (.apk). Mengatur nilai ini ke True setara dengan menggunakan SignAndroidPackage target build.

Properti ini secara False default.

AndroidBundleConfigurationFile

Menentukan nama file yang akan digunakan sebagai file bundletool konfigurasi saat membuat Android App Bundle. File ini mengontrol beberapa aspek tentang bagaimana APK dihasilkan dari bundel, seperti pada dimensi apa bundel 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 mengontrol cara .jar file diurai. Nilai yang mungkin termasuk:

  • class-parse: Menggunakan class-parse.exe untuk 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. Rakitan pengikatan menggunakan XAJavaInterop1 hanya dapat membangun dan mengeksekusi dengan Xamarin.Android 6.1 atau yang lebih baru. Xamarin.Android 6.1 dan yang lebih baru mengikat Mono.Android.dll dengan nilai ini.

Nilai defaultnya adalah XAJavaInterop1.

AndroidCreatePackagePerAbi

Properti boolean yang menentukan apakah sekumpulan file--satu per ABI yang ditentukan dalam $(AndroidSupportedAbis)--harus dibuat alih-alih memiliki dukungan untuk semua ABI dalam satu .apk.

Lihat juga panduan Membangun APK Khusus ABI.

AndroidCreateProguardMappingFile

Properti boolean yang mengontrol apakah file pemetaan proguard dihasilkan sebagai bagian dari proses build.

Menambahkan hal berikut ke csproj Anda akan menyebabkan file dibuat, dan menggunakan AndroidProguardMappingFile properti untuk mengontrol lokasi file pemetaan akhir.

<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.

AndroidDebugKeyValidity

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. Ini default ke pkcs12.

AndroidDeviceUserId

Memungkinkan penyebaran dan penelusuran kesalahan aplikasi di bawah akun tamu atau kantor. 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}

adalah uid nilai bilangan bulat pertama. Dalam output di atas, mereka 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 asli 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 di final .apkatau tidak.

Properti ini secara False default.

AndroidEnableObsoleteOverrideInheritance

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 secara True default.

AndroidEnablePreloadAssemblies

Properti boolean yang mengontrol apakah semua rakitan terkelola yang dibundel dalam paket aplikasi dimuat selama startup proses 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 rakitan sesuai kebutuhan memungkinkan aplikasi untuk diluncurkan lebih cepat, dan juga lebih konsisten dengan semantik .NET desktop. Untuk melihat penghematan waktu, atur debug.mono.log Properti Sistem untuk menyertakan timing, dan cari pesan dalam Finished loading assemblies: preloaded adb logcat.

Aplikasi atau pustaka, yang menggunakan injeksi dependensi mungkin mengharuskan properti True ini jika pada gilirannya mengharuskan mengembalikan AppDomain.CurrentDomain.GetAssemblies() semua rakitan dalam bundel aplikasi, bahkan jika rakitan tidak akan 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) grup item. ItemGroup ini berisi profil default. Ini dapat ditimpa dengan menghapus yang ada dan menambahkan profil AOT Anda sendiri.

Properti ini secara False default.

AndroidEnableRestrictToAttributes

Properti bergaya enum dengan nilai obsolete dan disable.

Ketika diatur ke obsolete, jenis dan anggota yang ditandai dengan anotasi androidx.annotation.RestrictTo Java atau berada dalam paket Java yang tidak diekspor akan ditandai dengan [Obsolete] atribut dalam pengikatan 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 default.

AndroidEnableSGenConcurrent

Properti boolean yang menentukan apakah pengumpul GC bersamaan Mono akan digunakan atau tidak.

Properti ini secara False default.

AndroidErrorOnCustomJavaObject

Properti boolean yang menentukan apakah jenis dapat diterapkan 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 secara True default.

AndroidExplicitCrunch

Properti ini tidak lagi didukung.

AndroidExtraAotOptions

Properti string yang memungkinkan opsi meneruskan ke pengkompilasi Mono selama Aot tugas untuk proyek yang memiliki $(AndroidEnableProfiledAot) atau $(AotAssemblies) diatur ke true. Nilai string properti ditambahkan ke file respons saat memanggil pengkompilasi silang 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 titik dua (titik dua) untuk mengontrol jenis apa yang dapat disebarkan ke direktori Penyebaran Cepat pada perangkat target saat $(EmbedAssembliesIntoApk) properti MSBuild adalah False. Jika sumber daya disebarkan dengan cepat, sumber daya tidak disematkan ke dalam yang dihasilkan .apk, yang dapat mempercepat waktu penyebaran. (Semakin cepat yang disebarkan, maka semakin jarang .apk kebutuhan untuk dibangun kembali, dan proses penginstalan bisa lebih cepat.) Nilai yang valid meliputi:

  • Assemblies: Menyebarkan rakitan aplikasi.
  • Dexes: Menyebarkan .dex file, pustaka asli, dan typemaps. Nilai Dexes hanya dapat digunakan pada perangkat yang menjalankan Android 4.4 atau yang lebih baru (API-19).

Nilai defaultnya adalah Assemblies.

Dukungan untuk sumber daya dan aset Penyebaran Cepat melalui sistem tersebut dihapus dalam penerapan 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 System.Reflection penggunaan 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 Atau sediakan properti pada baris perintah melalui

-p:AndroidGenerateJniMarshalMethods=True

Eksperimental. Nilai defaultnya adalah False.

AndroidGenerateJniMarshalMethodsAdditionalArguments

Properti string yang dapat digunakan untuk menambahkan parameter ke jnimarshalmethod-gen.exe pemanggilan, dan berguna untuk penelusuran kesalahan, 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"

AndroidGenerateLayoutBindings

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 subkelas yang HttpMessageHandler memenuhi syarat rakitan, cocok untuk 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 warisan Xamarin.Android.Net.AndroidClientHandler dengan beberapa peningkatan. Ini mendukung HTTP 1.1 dan TLS 1.2. Ini adalah handler 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.Http

    Sesuai 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 terkelola HttpMessageHandler.

    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 $(AndroidHttpClientHandlerType) properti berfungsi dengan mengatur XA_HTTP_CLIENT_HANDLER_TYPE variabel lingkungan. Nilai $XA_HTTP_CLIENT_HANDLER_TYPE yang ditemukan dalam file dengan tindakan Build @(AndroidEnvironment) akan diutamakan.

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 ditambahkan ke proyek 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>

Link Jika metadata digunakan, jalur yang ditentukan dalam nilainya harus merupakan jalur pustaka khusus arsitektur asli yang valid, relatif terhadap direktori akar APK. Format jalur adalah lib\ARCH\wrap.sh di mana ARCH bisa menjadi salah satu dari:

  • arm64-v8a
  • armeabi-v7a
  • x86_64
  • x86

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 bagaimana "verbose" C# XML Documentation Comments harus ketika mengimpor dokumentasi Javadoc dalam proyek pengikatan.

Memerlukan penggunaan @(JavaSourceJar) build action.

Properti $(AndroidJavadocVerbosity) ini seperti enum, dengan kemungkinan nilai full atau intellisense:

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 Android untuk 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 rakitan pengguna.

    Catatan

    AndroidLinkMode Menggunakan 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 Jenis Berlapis dari kelas Resource.Designer.cs Resource di semua rakitan. Kode IL yang menggunakan jenis tersebut akan diperbarui untuk menggunakan nilai secara langsung daripada mengakses bidang.

Menautkan jenis berlapis dapat berdampak kecil pada pengurangan ukuran apk, dan juga dapat membantu dengan performa startup. Hanya build "Rilis" yang ditautkan.

Eksperimental. Hanya dirancang untuk bekerja 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 shrinker 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 detail selengkapnya tentang alat android lint .

AndroidLintEnabledIssues

Properti string yang merupakan daftar masalah lint yang dipisahkan koma untuk diaktifkan.

Hanya digunakan ketika $(AndroidLintEnabled)=True.

AndroidLintDisabledIssues

Properti string yang merupakan daftar masalah lint yang dipisahkan koma untuk dinonaktifkan.

Hanya digunakan ketika $(AndroidLintEnabled)=True.

AndroidLintCheckIssues

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 untuk menghasilkan aktual AndroidManifest.xml. $(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 untuk memberikan argumen ke 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.

Xamarinadalah repositori Daftar yang Disetujui (Disarankan) dalam Visual Studio SDK Manager.

GoogleV2adalah 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 assemblyName=$(AssemblyName) properti menentukan ${assemblyName} tempat penampung yang kemudian 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 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 dx langkah untuk 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:

Properti ini tidak akan digunakan lagi untuk .net 6. Pengguna harus beralih ke yang lebih AndroidPackageFormatsbaru.

AndroidPackageFormats

Properti yang dibatasi titik koma dengan nilai apk dan aabyang valid. 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 dan 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 hanya aab;apk untuk Release build. Disarankan agar Anda terus menggunakan hanya apk untuk penelusuran kesalahan.

AndroidPackageNamingPolicy

Properti bergaya enum untuk menentukan nama paket Java dari kode sumber Java yang dihasilkan.

Satu-satunya nilai yang didukung adalah LowercaseCrc64.

AndroidPrepareForBuildDependsOn

Properti berbatas titik koma yang dapat digunakan untuk memperluas 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.

AndroidD8IgnoreWarnings

--map-diagnostics warning info Menentukan untuk diteruskan ke d8. Nilai defaultnya adalah True, tetapi dapat diatur ke untuk False memberlakukan 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 untuk False memberlakukan 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 untuk r8.jar 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 alat 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 pilihan. Sistem build .NET untuk Android menyediakan nilai default di Xamarin.Android.Common.targets, dan nilai default mungkin ditimpa dalam file proyek Anda untuk memilih versi build-tools alternatif, jika (misalnya) aapt terbaru mengalami crash saat versi aapt sebelumnya diketahui 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

env: Awalan tidak didukung ketika $(AndroidPackageFormat) diatur ke aab.

AndroidSigningKeyStore

Menentukan nama file 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

env: Awalan tidak didukung ketika $(AndroidPackageFormat) diatur 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 metode metode yang dikompilasi AOT akan dihapus atau tidak.

Nilai defaultnya adalah false, dan badan metode metode 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 ditimpa dengan mengatur $(AndroidEnableProfiledAot) secara eksplisit ke true dalam file proyek Anda.

Dukungan untuk properti ini ditambahkan dalam .NET 8.

AndroidSupportedAbis

Properti string yang berisi daftar ABIs yang dibatasi titik koma (;) yang harus disertakan ke dalam .apk.

Nilai yang didukung mencakup:

  • armeabi-v7a
  • x86
  • arm64-v8a
  • x86_64

AndroidTlsProvider

Properti ini usang dan tidak boleh digunakan.

AndroidUseAapt2

Properti boolean yang memungkinkan pengembang mengontrol penggunaan alat untuk pengemasan aapt2 . Secara default, ini akan menjadi True.

Properti ini tidak dapat disetel ke false.

AndroidUseApkSigner

Properti bool yang memungkinkan pengembang untuk menggunakan alat daripada apksigner 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 sebagaimana disetujui ke Resource.Designer.cs file. 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 mengirim tiga versi perakitan 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>

Atau matikan pengaturan ini hingga waktu seperti Klasik dan net7.0-android tidak digunakan lagi.

Proyek .NET 8 yang memilih untuk menonaktifkan pengaturan ini tidak akan dapat menggunakan referensi yang menggunakannya. Jika Anda mencoba menggunakan rakitan yang memang mengaktifkan fitur ini dalam proyek yang tidak, Anda akan mendapatkan XA1034 kesalahan build.

Ditambahkan dalam .NET 8.

AndroidUseInterpreter

Properti boolean yang menyebabkan .apk mengandung interpreter mono, dan bukan JIT normal.

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 daripada aapt.

AndroidUseNegotiateAuthentication

Properti boolean yang memungkinkan dukungan untuk autentikasi NTLMv2/Negosiasikan 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 ditahapkan 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 memutuskan versionCode.

Beberapa contoh, jika abi adalah armeabi dan versionCode dalam manifes adalah 123, {abi}{versionCode} akan menghasilkan versionCode kapan $(AndroidCreatePackagePerAbi) 1123 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 {abi}{versionCode:0000}format padding kiri , itu akan menghasilkan 50044 karena kita dibiarkan mengayuh 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
  • minSDK – Menyisipkan nilai Sdk minimum yang didukung dari AndroidManifest.xml atau 11 jika 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 harus berupa nilai bilangan value bulat. Misalnya: screen=23;target=$(_AndroidApiLevel). Seperti yang Anda lihat, Anda dapat menggunakan properti MSBuild yang ada atau 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.

ApplicationTitle

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.

ApplicationVersion

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 Ke Depan Waktu atau tidak ke dalam kode asli dan disertakan dalam aplikasi. Properti ini secara False 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 target membuat paket Android yang lebih kecil yang memerlukan kehadiran 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 $(DebugType) properti . Paket yang dapat di-debug berisi simbol debug, mengatur //application/@android:debuggable atribut ke true, dan secara otomatis menambahkan INTERNET izin sehingga debugger dapat melampirkan ke proses. Aplikasi dapat di-debug jika DebugSymbols adalah True dan DebugType 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 DebugSymbols Properti MSBuild juga True, 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.

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 berada True di build Debug jika Penyebaran Cepat tidak mendukung perangkat target.

Ketika properti ini adalah False, maka $(AndroidFastDeploymentType) Properti MSBuild juga mengontrol apa yang akan disematkan ke dalam .apk, yang dapat memengaruhi penyebaran dan waktu pembangunan ulang.

EnableLLVM

Properti boolean yang menentukan apakah LLVM akan digunakan atau tidak saat rakitan kompilasi Ahead-of-Time ke dalam kode asli.

Android NDK harus diinstal untuk membuat proyek yang mengaktifkan properti ini.

Properti ini secara False default.

Properti ini diabaikan kecuali $(AotAssemblies) properti MSBuild adalah True.

EnableProguard

Properti boolean yang menentukan apakah proguard dijalankan atau tidak sebagai bagian dari proses pengemasan untuk menautkan kode Java.

Properti ini secara False default.

Ketika Truefile , @(ProguardConfiguration) akan digunakan untuk mengontrol proguard eksekusi.

GenerateApplicationManifest

Mengaktifkan atau menonaktifkan properti MSBuild berikut yang memancarkan nilai dalam file akhir AndroidManifest.xml :

Nilai $(GenerateApplicationManifest) defaultnya adalah true.

JavaMaximumHeapSize

Menentukan nilai parameter java-Xmx yang akan digunakan saat membangun .dex file sebagai bagian dari proses pengemasan. Jika tidak ditentukan, maka opsi memasok -Xmx java dengan nilai 1G. Ini ditemukan umumnya diperlukan pada Windows dibandingkan dengan platform lain.

Menentukan properti ini diperlukan jika _CompileDex target melempar .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 tanda waktu. 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 dapat digunakan sebagai input untuk alat illinkanalyzer .

File dependensi bernama linker-dependencies.xml.gz ditulis ke direktori proyek. Di atas. NET5/6 ditulis di samping rakitan yang ditautkan dalam obj/<Configuration>/android<ABI>/linked direktori.

Nilai defaultnya adalah False.

MandroidI18n

Properti MSBuild ini sudah usang dan tidak lagi didukung.

MonoAndroidResourcePrefix

Menentukan awalan jalur yang dihapus dari awal nama file dengan tindakan Build .AndroidResource Ini untuk memungkinkan perubahan di mana sumber daya berada.

Nilai defaultnya adalah Resources. Ubah ini menjadi res untuk struktur proyek Java.

MonoSymbolArchive

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 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 Ke Depan Waktu atau tidak ke dalam kode asli dan disertakan dalam aplikasi. Properti ini False secara default untuk Debug build dan True secara default untuk Release build.

Properti MSBuild ini menggantikan $(AotAssemblies) properti MSBuild dari Xamarin.Android. Ini adalah properti yang sama yang digunakan untuk Blazor WASM.