Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Derleme öğeleri, bir .NET for Android uygulamasının veya kitaplık projesinin nasıl derleneceğini kontrol eder.
Bir MSBuild ItemGroup içinde proje dosyasında (örneğin MyApp.csproj) belirtilirler.
Uyarı
Android için .NET'te teknik olarak bir uygulama ile bağlama projesi arasında ayrım yoktur, bu nedenle derleme öğeleri her ikisinde de çalışır. Uygulamada ayrı uygulama ve bağlama projeleri oluşturmanız kesinlikle önerilir. Öncelikli olarak bağlama projelerinde kullanılan derleme öğeleri MSBuild bağlamaları proje öğeleri başvuru kılavuzunda belgelenmiştir.
AndroidAdditionalJavaManifest
<AndroidAdditionalJavaManifest> , bağımlılıkları doğrulamak için gereken ek POM dosyalarını belirtmek için Java Bağımlılık Çözümlemesi ile birlikte kullanılır.
Bunlar genellikle bir Java kitaplığının POM dosyası tarafından referans alınan ebeveyn veya içe aktarılan POM dosyalarıdır.
<ItemGroup>
<AndroidAdditionalJavaManifest Include="mylib-parent.pom" JavaArtifact="com.example:mylib-parent" JavaVersion="1.0.0" />
</ItemGroup>
Aşağıdaki MSBuild meta verileri gereklidir:
-
%(JavaArtifact): Biçimindeki{GroupId}:{ArtifactId}belirtilen POM dosyasıyla eşleşen Java kitaplığının grup ve yapıt kimliği. -
%(JavaVersion): Belirtilen POM dosyasıyla eşleşen Java kitaplığının sürümü.
Daha fazla ayrıntı için Java Bağımlılık Çözümü belgelerine bakın.
Bu derleme eylemi .NET 9'da kullanıma sunulmuştur.
AndroidAsset
Bir Java Android projesindeki assets klasöre dahil edilecek dosyalar olan Android Varlıklarını destekler.
.NET 9'dan itibaren @(AndroidAsset) derleme eylemi ayrıca Asset Pack'ler oluşturmak için ek meta verileri de destekler. Meta %(AndroidAsset.AssetPack) veriler, bu adın varlık paketini otomatik olarak oluşturmak için kullanılabilir. Bu özellik yalnızca $(AndroidPackageFormat).aab olarak ayarlandığında desteklenir. Aşağıdaki örnek movie2.mp4 ve movie3.mp4 öğelerini ayrı varlık paketlerine yerleştirir.
<ItemGroup>
<AndroidAsset Update="Asset/movie.mp4" />
<AndroidAsset Update="Asset/movie2.mp4" AssetPack="assets1" />
<AndroidAsset Update="Asset/movie3.mp4" AssetPack="assets2" />
</ItemGroup>
Bu özellik, uygulamanıza normalde Google Play'in maksimum paket boyutu sınırlarını aşacak büyük dosyaları eklemek için kullanılabilir.
Çok sayıda varlığınız varsa varlık paketinden base yararlanmak daha verimli olabilir.
Bu senaryoda TÜM varlıkları tek bir varlık paketinde olacak şekilde güncelleştirdikten sonra meta verileri kullanarak AssetPack="base" temel aab dosyasındaki belirli varlıkları bildirirsiniz. Bununla, çoğu varlığı varlık paketine yerleştirmek için joker karakterleri kullanabilirsiniz.
<ItemGroup>
<AndroidAsset Update="Assets/*" AssetPack="assets1" />
<AndroidAsset Update="Assets/movie.mp4" AssetPack="base" />
<AndroidAsset Update="Assets/some.png" AssetPack="base" />
</ItemGroup>
Bu örnekte, movie.mp4 ve some.pngbase aab dosyasına dahil edilirken, diğer tüm varlıklar assets1 varlık paketine dahil edilir.
Ek meta veriler yalnızca Android 9 ve üzeri için .NET'te desteklenir.
AndroidAarLibrary
AndroidAarLibrary derleme eylemi, .aar dosyalarına doğrudan başvurmak için kullanılmalıdır. Bu derleme eylemi en yaygın olarak Xamarin Bileşenleri tarafından kullanılır. Diğer bir deyişle, Google Play ve diğer hizmetlerin çalışması için gereken dosyalara referanslar .aar eklemektir.
Bu Derleme eylemine sahip dosyalar, Kitaplık projelerinde bulunan ekli kaynaklara benzer şekilde ele alınacaktır.
.aar, ara dizine ayıklanacaktır. Ardından tüm varlıklar, kaynaklar ve .jar dosyalar uygun öğe gruplarına dahil edilecek.
AndroidAotProfile
Profil rehberli AOT ile kullanılmak üzere bir AOT profili sağlamak için kullanılır.
Derleme eylemini AOT profili içeren bir dosyaya AndroidAotProfile ayarlayarak Visual Studio'dan da kullanılabilir.
AndroidAppBundleMetaDataFile
Android Uygulama Paketi'ne meta veri olarak eklenecek bir dosya belirtir.
Bayrak değerinin biçimi, <bundle-path>:<physical-file> Uygulama Paketi'nin meta veri dizini içindeki dosya konumunu gösterdiği yerdir bundle-path ve physical-file depolanacak ham verileri içeren mevcut bir dosyadır.
<ItemGroup>
<AndroidAppBundleMetaDataFile
Include="com.android.tools.build.obfuscation/proguard.map:$(OutputPath)mapping.txt"
/>
</ItemGroup>
Daha fazla ayrıntı için bundletool belgelerine bakın.
AndroidBoundLayout
Özellik olarak ayarlandığında, düzen dosyasının bunun için arka plan kod oluşturulmasını$(AndroidGenerateLayoutBindings)falsesağlar. Diğer tüm yönleriyle aynıdır AndroidResource.
Bu eylem yalnızca düzen dosyalarıyla kullanılabilir:
<AndroidBoundLayout Include="Resources\layout\Main.axml" />
Android Ortamı
Derleme eylemine AndroidEnvironment sahip dosyalar , işlem başlatma sırasında ortam değişkenlerini ve sistem özelliklerini başlatmak için kullanılır.
AndroidEnvironment Derleme eylemi birden çok dosyaya uygulanabilir ve bunlar belirli bir sırada değerlendirilmez (bu nedenle birden çok dosyada aynı ortam değişkenini veya sistem özelliğini belirtmeyin).
AndroidGradleProject
<AndroidGradleProject> , Android Studio'da veya başka yerlerde oluşturulan Android Gradle projelerinin çıkışlarını oluşturmak ve tüketmek için kullanılabilir.
Proje derlemesinde kullanılacak olan üst düzey Include veya build.gradle dosyayı gösterecek şekilde build.gradle.kts meta verileri ayarlanmalıdır. Bu, gradlew sarmalayıcı betikleri de içermesi gereken Gradle projenizin kök dizininde bulunacaktır.
<ItemGroup>
<AndroidGradleProject Include="path/to/project/build.gradle.kts" ModuleName="mylibrary" />
</ItemGroup>
Aşağıdaki MSBuild meta verileri desteklenir:
-
%(Configuration): Belirtilen proje veya proje modülünü derlemek veya bir araya getirmek için kullanılacak yapılandırmanın adı. Varsayılan değerReleasedeğeridir. -
%(ModuleName): Oluşturulacak modülün veya alt projenin adı. Varsayılan değer boş. -
%(OutputPath): Gradle projesinin derleme çıkış yolunu geçersiz kılacak şekilde ayarlanabilir. Varsayılan değer$(IntermediateOutputPath)gradle/%(ModuleName)%(Configuration)-{Hash}değeridir. -
%(CreateAndroidLibrary): Çıktı AAR dosyaları projeye birAndroidLibraryolarak eklenir.<AndroidLibrary>gibi%(Bind)veya%(Pack)tarafından desteklenen meta veriler ayarlanırsa iletilir. Varsayılan değertruedeğeridir.
Bu derleme eylemi .NET 9'da kullanıma sunulmuştur.
AndroidJavaLibrary
Derleme eylemi AndroidJavaLibrary olan dosyalar, son Android paketine dahil edilecek Java Arşivleri (.jar dosyaları) 'dir.
AndroidYoksayılanJavaBağımlılık
<AndroidIgnoredJavaDependency>
Java Bağımlılık Çözümlemesi ile birlikte kullanılır.
Yoksayılması gereken bir Java bağımlılığı belirtmek için kullanılır. Bu, java bağımlılık çözümlemesi tarafından algılanamayacak şekilde bir bağımlılığın karşılanması durumunda kullanılabilir.
<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
<AndroidIgnoredJavaDependency Include="com.google.errorprone:error_prone_annotations" Version="2.15.0" />
</ItemGroup>
Aşağıdaki MSBuild meta verileri gereklidir:
-
%(Version): Belirtilen%(Include)ile eşleşen Java kitaplığı sürümü.
Daha fazla ayrıntı için Java Bağımlılık Çözümü belgelerine bakın.
Bu derleme eylemi .NET 9'da kullanıma sunulmuştur.
AndroidJavaSource
Derleme eylemine AndroidJavaSource sahip dosyalar, son Android paketine dahil edilecek Java kaynak kodulardır.
.NET 7'den başlayarak, proje dizinindeki tüm **\*.java dosyalar otomatik olarak derleme eylemine AndroidJavaSourcesahip olur ve Derleme derlemesi öncesinde bağlanır. C# kodunun dosyaların içinde bulunan türleri ve üyeleri kolayca kullanmasına **\*.java olanak tanır.
Bu davranışı devre dışı bırakmak için False olarak ayarlayın %(AndroidJavaSource.Bind) .
Android Kütüphanesi
AndroidLibrary, .jar ve .aar dosyalarının projelere dahil edilme biçimini basitleştiren yeni bir derleme işlevidir.
Herhangi bir proje şunları belirtebilir:
<ItemGroup>
<AndroidLibrary Include="foo.jar" />
<AndroidLibrary Include="bar.aar" />
</ItemGroup>
Yukarıdaki kod parçacığının sonucu, Android için her .NET proje türü için farklı bir etkiye sahiptir:
- Uygulama ve sınıf kitaplığı projeleri:
-
foo.jarAndroidJavaLibrary ile eşleşir. -
bar.aarAndroidAarLibrary ile eşler.
-
- Java bağlama projeleri:
-
foo.jarEmbeddedJar ile eşler. -
foo.jar, meta veriler eklendiğinde EmbeddedReferenceJar ile eşlenir. -
bar.aarLibraryProjectZip ile eşleşir.
-
Bu basitleştirme, AndroidLibrary'i her yerde kullanabileceğiniz anlamına gelir.
AndroidLintConfig
'AndroidLintConfig' Derleme eylemi, birlikte kullanılmalıdır.
$(AndroidLintEnabled) özelliği. Bu derleme eylemine sahip dosyalar birleştirilir ve android lint araçlarına geçirilir. Etkinleştirilecek ve devre dışı bırakılacak testler hakkında bilgi içeren XML dosyaları olmalıdır.
Diğer ayrıntılar için lint belgelerine bakın.
AndroidManifestOverlay
Yapı eylemi, AndroidManifestOverlay dosyalarını AndroidManifest.xmlManifest Birleştirici aracına sağlamak için kullanılabilir.
Bu oluşturma işlemi ile ilişkilendirilen dosyalar, başvurulardaki ana AndroidManifest.xml dosya ve bildirim dosyalarıyla birlikte Manifest Birleştirici'ye geçirilir. Bunlar daha sonra son bildirimde birleştirilir.
Derleme yapılandırmanıza bağlı olarak uygulamanızda değişiklikler ve ayarlar sağlamak için bu derleme eylemini kullanabilirsiniz. Örneğin, yalnızca hata ayıklarken belirli bir izne sahip olmanız gerekiyorsa, hata ayıklarken bu izni eklemek için katman kullanabilirsiniz. Örneğin, aşağıdaki katman dosyası içeriği göz önünde bulundurulduğunda:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.CAMERA" />
</manifest>
Hata ayıklama derlemesi için bildirim katmanı eklemek için aşağıdakileri kullanabilirsiniz:
<ItemGroup>
<AndroidManifestOverlay Include="DebugPermissions.xml" Condition=" '$(Configuration)' == 'Debug' " />
</ItemGroup>
Android Modüllerini Yükle
Uygulama paketlerini yüklerken bundletool komutuyla yüklenen modülleri belirtir.
AndroidMavenLibrary
<AndroidMavenLibrary> Otomatik olarak indirilecek ve Android için .NET bağlama projesine eklenecek bir Maven yapıtı belirtilmesine izin verir.
Bu, Maven'da barındırılan yapıtlar için Android bağlamaları için .NET'in bakımını basitleştirmek için yararlı olabilir.
<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
<AndroidMavenLibrary Include="com.squareup.okhttp3:okhttp" Version="4.9.3" />
</ItemGroup>
Aşağıdaki MSBuild meta verileri desteklenir:
-
%(Version):%(Include)tarafından referans alınan Java kütüphanesinin gerekli sürümü. -
%(Repository): İsteğe bağlı olarak kullanılacak bir Maven deposu. Desteklenen değerlerCentral(varsayılan),Googleveya bir Maven deposunun URL'sihttpsşeklindedir.
Öğe <AndroidMavenLibrary>, AndroidLibrary olarak çevrilir, bu nedenle <AndroidLibrary> tarafından desteklenen %(Bind) ve %(Pack) gibi tüm meta veriler de desteklenir.
Daha fazla ayrıntı için AndroidMavenLibrary belgelerine bakın.
Bu derleme eylemi .NET 9'da kullanıma sunulmuştur.
AndroidNativeLibrary
Yerel kütüphaneler, Derleme eylemi ayarlanarak derlemeye AndroidNativeLibrary eklenir.
Android birden çok Uygulama İkili Arabirimini (ABI) desteklediğinden, derleme sisteminin yerel kitaplığın oluşturulduğu ABI'yi bilmesi gerektiğini unutmayın. ABI'nin belirtilebileceği iki yol vardır:
- Yol "koklama".
-
%(Abi)Öğe meta verilerini kullanma.
Yol koklama yöntemiyle, yerel kütüphanenin üst dizin adı, kütüphanenin hedef aldığı ABI'yi belirtmek için kullanılır. Bu nedenle, eğer lib/armeabi-v7a/libfoo.so derlemeye eklerseniz, ABI armeabi-v7a olarak algılanacaktır.
Öğe öznitelik adı
Abi – Yerel kitaplığın ABI'sini belirtir.
<ItemGroup>
<AndroidNativeLibrary Include="path/to/libfoo.so">
<Abi>armeabi-v7a</Abi>
</AndroidNativeLibrary>
</ItemGroup>
AndroidNativeLibraryNoJniPreload
Bu öğe grubuna dahil edilen her yerel kitaplık, JNI kitaplığı ön yükleme mekanizmasından muaf tutulur. Varsayılan olarak, bu tür tüm kitaplıklar, doğru bir şekilde başlatılmalarını sağlamak için uygulamanın başlatılması sırasında çalışma zamanı tarafından başlangıçta yüklenir. Ancak bazı durumlarda istenen davranış olmayabilir ve bu öğe grubu, kitaplıkların bu işlemden ayrı ayrı dışlanmasına izin verir.
Uygulama başlangıcında yüklenmesi gereken bazı çerçeve kitaplıkları, bu öğe grubuna dahil edilmesi durumunda etkilenmez.
Ayrıca bkz. $(AndroidIgnoreAllJniPreload)
AndroidPaketlemeSeçenekleriniHariçTut
Öğelerin son paketten dışlanması için izin verecek dosya glob uyumlu öğeler kümesi. Varsayılan değerler aşağıdaki gibidir
<ItemGroup>
<AndroidPackagingOptionsExclude Include="DebugProbesKt.bin" />
<AndroidPackagingOptionsExclude Include="$([MSBuild]::Escape('*.kotlin_*')" />
</ItemGroup>
Öğeler, * ve ? gibi joker karakterler için dosya blob karakterlerini kullanabilir.
Ancak bu öğeler URL kodlaması yapılmış olmalı veya $([MSBuild]::Escape('')) kullanmalıdır.
Bu, MSBuild'in bunları gerçek dosya joker karakterleri olarak yorumlamaya çalışmaması için budur.
Örneğin:
<ItemGroup>
<AndroidPackagingOptionsExclude Include="%2A.foo_%2A" />
<AndroidPackagingOptionsExclude Include="$([MSBuild]::Escape('*.foo')" />
</ItemGroup>
NOT: *, ? ve ., BuildApk görevinde uygun dosya glob'ları ile değiştirilecektir.
Varsayılan glob dosyası çok kısıtlayıcıysa csproj'unuza aşağıdakileri ekleyerek dosyayı kaldırabilirsiniz
<ItemGroup>
<AndroidPackagingOptionsExclude Remove="$([MSBuild]::Escape('*.kotlin_*')" />
</ItemGroup>
.NET 7'ye eklendi.
Android Paketleme Seçenekleri Dahil Etme
Dosya globu uyumlu öğelerden oluşan bir öğe kümesi, bu öğelerin nihai pakete dahil edilmesini sağlar. Varsayılan değerler aşağıdaki gibidir
<ItemGroup>
<AndroidPackagingOptionsInclude Include="$([MSBuild]::Escape('*.kotlin_builtins')" />
</ItemGroup>
Öğeler, * ve ? gibi joker karakterler için dosya blob karakterlerini kullanabilir.
Ancak bu Öğeler URL kodlaması veya '$([MSBuild]::Escape('))' kullanmalıdır.
Bu, MSBuild'in bunları gerçek dosya joker karakterleri olarak yorumlamaya çalışmaması için budur.
Örneğin:
<ItemGroup>
<AndroidPackagingOptionsInclude Include="%2A.foo_%2A" />
<AndroidPackagingOptionsInclude Include="$([MSBuild]::Escape('*.foo')" />
</ItemGroup>
NOT: *, ? ve ., BuildApk görevinde uygun dosya glob'ları ile değiştirilecektir.
.NET 9'a eklendi.
AndroidResource
AndroidResource derleme eylemine sahip tüm dosyalar derleme işlemi sırasında Android kaynaklarına derlenir ve aracılığıyla $(AndroidResgenFile)erişilebilir hale gelir.
<ItemGroup>
<AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>
Daha ileri düzey kullanıcılar, farklı yapılandırmalarda farklı kaynaklar kullanmak isteyebilir, ancak bu durumda yine de aynı etkili yolu kullanmak mümkün olacaktır. Bu, birden çok kaynak dizinine sahip olmak ve bu farklı dizinlerde aynı göreli yollara sahip dosyalara sahip olmak ve farklı yapılandırmalara koşullu olarak farklı dosyalar eklemek için MSBuild koşulları kullanılarak gerçekleştirilebilir. Örneğin:
<ItemGroup Condition=" '$(Configuration)' != 'Debug' ">
<AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)' == 'Debug' ">
<AndroidResource Include="Resources-Debug\values\strings.xml"/>
</ItemGroup>
<PropertyGroup>
<MonoAndroidResourcePrefix>Resources;Resources-Debug</MonoAndroidResourcePrefix>
</PropertyGroup>
LogicalName – Kaynak yolunu açıkça belirtir. Dosyaların birden fazla farklı kaynak adıyla erişilebilmesi için "paylaşım" yapılmasını sağlar.
<ItemGroup Condition="'$(Configuration)'!='Debug'">
<AndroidResource Include="Resources/values/strings.xml"/>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Debug'">
<AndroidResource Include="Resources-Debug/values/strings.xml">
<LogicalName>values/strings.xml</LogicalName>
</AndroidResource>
</ItemGroup>
Content
Normal Content Derleme eylemi desteklenmez (büyük olasılıkla maliyetli bir ilk çalıştırma adımı olmadan bunu nasıl destekleyebileceğimizi çözemedik).
@(Content) Derleme eylemini kullanmaya çalışmak bir XA0101 uyarısına neden olur.
EmbeddedJar
Android için .NET bağlama projesinde EmbeddedJar derleme eylemi Java/Kotlin kitaplığını bağlar ve dosyayı kitaplığa ekler .jar . Android için .NET uygulama projesi kitaplığını tükettiğinde, C# dilinden Java/Kotlin API'lerine erişimi olur ve son Android uygulamasına Java/Kotlin kodunu ekler.
Bunun yerine AndroidLibrary derleme eylemini aşağıdakiler gibi bir alternatif olarak kullanmalısınız:
<Project>
<ItemGroup>
<AndroidLibrary Include="Library.jar" />
</ItemGroup>
</Project>
EmbeddedNativeLibrary
Android için bir .NET sınıf kitaplığı veya Java bağlama projesinde, EmbeddedNativeLibrary derleme eylemi, lib/armeabi-v7a/libfoo.so gibi bir yerel kütüphaneyi kitaplığın içine paketler. Android için .NET uygulaması kitaplığı tükettiğinde, libfoo.so dosya son Android uygulamasına eklenir.
Alternatif olarak AndroidNativeLibrary derleme eylemini kullanabilirsiniz.
EmbeddedReferenceJar
Android için .NET bağlama projesinde EmbeddedReferenceJar derleme eylemi dosyayı kitaplığa ekler .jar ancak EmbeddedJar'ın yaptığı gibi C# bağlaması oluşturmaz. Android için .NET uygulama projesi kitaplığını tükettiğinde, son Android uygulamasında Java/Kotlin kodunu içerir.
AndroidLibrary derleme eylemini gibi <AndroidLibrary Include="..." Bind="false" />bir alternatif olarak kullanabilirsiniz:
<Project>
<ItemGroup>
<!-- A .jar file to bind & embed -->
<AndroidLibrary Include="Library.jar" />
<!-- A .jar file to only embed -->
<AndroidLibrary Include="Dependency.jar" Bind="false" />
</ItemGroup>
</Project>
JavaSourceJar
Android için .NET bağlama projesinde JavaSourceJar derleme eylemi .jar içeren Java kaynak kodu içeren dosyalarda kullanılır.
Bunun yerine Javadoc, oluşturulan bağlama kaynak kodu içinde C# XML Belge Açıklamaları'na dönüştürülür.
$(AndroidJavadocVerbosity) içeri aktarılan Javadoc'un nasıl "ayrıntılı" veya "tamam" olduğunu denetler.
Aşağıdaki MSBuild meta verileri desteklenir:
%(CopyrightFile): Javadoc içeriği için telif hakkı bilgilerini içeren ve içeri aktarılan tüm belgelerin sonuna eklenecek bir dosyanın yolu.%(UrlPrefix): İçeri aktarılan belgelerde çevrimiçi belgelere bağlanmayı destekleyen bir URL ön eki.%(UrlStyle): Çevrimiçi belgelere bağlanırken oluşturulacak URL'lerin "stili". Şu anda yalnızca bir stil desteklenmektedir:developer.android.com/reference@2020-Nov.%(DocRootUrl): İçeri aktarılan belgelerde tüm{@docroot}örneklerin yerine kullanılacak bir URL ön eki.
LibraryProjectZip
LibraryProjectZip derleme eylemi Java/Kotlin kitaplığını bağlar ve veya .zip dosyasını kitaplığa ekler.aar. Android için .NET uygulama projesi kitaplığını tükettiğinde, C# dilinden Java/Kotlin API'lerine erişimi olur ve son Android uygulamasına Java/Kotlin kodunu ekler.
Bağlantı Açıklaması
LinkDescription derleme eylemine sahip dosyalar bağlayıcı davranışını denetlemek için kullanılır.
ProguardConfiguration
ProguardConfiguration derleme eylemine sahip dosyalar, davranışı denetlemek proguard için kullanılan seçenekleri içerir. Bu derleme eylemi hakkında daha fazla bilgi için bkz. ProGuard.
Bu dosyalar, aksi belirtilmedikçe göz ardı edilir.
$(EnableProguard) MSBuild özelliğidir True.