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 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 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 mengimplementasikanSystem.IO.Stream
API dengan benar karenaJava.IO.IOException
dapat dilemparkan dariStream.Read()
bukanSystem.IO.IOException
.System
: Jenis pengecualian Java asli ditangkap dan dibungkus dalam jenis pengecualian .NET yang sesuai.System
berarti bahwa, misalnya,InputStreamInvoker
mengimplementasikanSystem.IO.Stream
, danStream.Read()
tidak akan melemparkanJava.IO.IOException
instans dengan benar. (Ini dapat melemparkan yangSystem.IO.IOException
berisiJava.IO.IOException
sebagaiException.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 mengikatMono.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 .apk
atau 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.IJavaObject
tanpa 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. NilaiDexes
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 warisanXamarin.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 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 $(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
:
intellisense
: Hanya memancarkan komentar XML:<exception/>
, ,<returns/>
<param/>
,<summary/>
.full
: Keluarkanintellisense
elemen, 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 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.jar
adalah . 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.
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 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:
$(AndroidUseAapt2)
adalahTrue
.$(AndroidUseApkSigner)
adalahFalse
.$(AndroidCreatePackagePerAbi)
adalahFalse
.
Properti ini tidak akan digunakan lagi untuk .net 6. Pengguna harus beralih ke yang lebih AndroidPackageFormats
baru.
AndroidPackageFormats
Properti yang dibatasi titik koma dengan nilai apk
dan aab
yang 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.txt
berikut .
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
- 2 –
minSDK – Menyisipkan nilai Sdk minimum yang didukung dari
AndroidManifest.xml
atau11
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 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.
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 True
file , @(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.