Yapı Öğeleri
Derleme öğeleri, Xamarin.Android uygulamasının veya kitaplık projesinin nasıl derlenmesini denetler.
AndroidAsset
Bir Java Android projesindeki assets
klasöre dahil edilecek dosyalar olan Android Varlıklarını destekler.
AndroidAarLibrary
Derleme eylemi AndroidAarLibrary
doğrudan dosyalara başvurmak .aar
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ını sağlamak için gereken dosyalara başvurular .aar
eklemektir.
Bu Derleme eylemine sahip dosyalar, Kitaplık projelerinde bulunan ekli kaynaklara benzer şekilde ele alınacaktır. .aar
ara dizine ayıklanır. Ardından tüm varlıklar, kaynaklar ve .jar
dosyalar uygun öğe gruplarına dahil edilecek.
AndroidAotProfile
Profil destekli AOT ile kullanmak ü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.
Xamarin.Android 12.3'te eklendi.
AndroidBoundLayout
Özellik olarak ayarlandığında, düzen dosyasının bunun için arka plan kod oluşturulmasını AndroidGenerateLayoutBindings
false
sağlar. Diğer tüm açılardan yukarıda açıklananlarla AndroidResource
aynıdır. Bu eylem yalnızca düzen dosyalarıyla kullanılabilir:
<AndroidBoundLayout Include="Resources\layout\Main.axml" />
AndroidEnvironment
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).
AndroidJavaLibrary
Derleme eylemi olan AndroidJavaLibrary
dosyalar, son Android paketine dahil edilecek Java Arşivleri 'dir ( .jar
dosyalar).
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 AndroidJavaSource
sahip 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)
.
AndroidLibrary
AndroidLibrary , ve dosyalarının projelere nasıl .jar
dahil .aar
olduğunu basitleştirmeye yönelik yeni bir derleme eylemidir.
Herhangi bir proje şunları belirtebilir:
<ItemGroup>
<AndroidLibrary Include="foo.jar" />
<AndroidLibrary Include="bar.aar" />
</ItemGroup>
Yukarıdaki kod parçacığının sonucu her Xamarin.Android proje türü için farklı bir etkiye sahiptir:
- Uygulama ve sınıf kitaplığı projeleri:
foo.jar
androidJavaLibrary ile eşler.bar.aar
AndroidAarLibrary ile eşler.
- Java bağlama projeleri:
foo.jar
embeddedJar ile eşler.foo.jar
meta veriler eklenirseBind="false"
EmbeddedReferenceJar ile eşlenir.bar.aar
, LibraryProjectZip ile eşler.
Bu basitleştirme, AndroidLibrary'i her yerde kullanabileceğiniz anlamına gelir.
Bu derleme eylemi Xamarin.Android 11.2'ye eklendi.
AndroidLintConfig
'AndroidLintConfig' Derleme eylemi, $(AndroidLintEnabled)
Özellik. 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
Derleme eylemi, AndroidManifestOverlay
Bildirim Birleştirme aracına dosya sağlamak AndroidManifest.xml
için kullanılabilir.
Bu derleme eylemine sahip dosyalar, başvurulardan ana AndroidManifest.xml
dosya ve bildirim dosyalarıyla birlikte Bildirim Birleştirme'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>
Bu derleme eylemi Xamarin.Android 11.2 sürümünde kullanıma sunulmuştur.
AndroidInstallModules
Uygulama paketlerini yüklerken bundletool komutuyla yüklenen modülleri belirtir.
Bu derleme eylemi Xamarin.Android 11.3'te kullanıma sunulmuştur.
AndroidNativeLibrary
Yerel kitaplıklar Derleme eylemi olarak 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 algılama ile, yerel kitaplığın üst dizin adı kitaplığın hedeflediğini ABI belirtmek için kullanılır. Bu nedenle, derlemeye eklerseniz lib/armeabi-v7a/libfoo.so
, ABI olarak armeabi-v7a
"koklanır".
Öğe Öznitelik Adı
Abi – Yerel kitaplığın ABI'sini belirtir.
<ItemGroup>
<AndroidNativeLibrary Include="path/to/libfoo.so">
<Abi>armeabi-v7a</Abi>
</AndroidNativeLibrary>
</ItemGroup>
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 aynı etkili yol ile kullanılabilir. 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. "Diğer ad" dosyalarının birden çok farklı kaynak adı olarak kullanılabilir olması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>
AndroidResourceAnalysisConfig
Derleme eylemiAndroidResourceAnalysisConfig
, Xamarin Android Tasarım Aracı düzen tanılama aracı için bir dosyayı önem düzeyi yapılandırma dosyası olarak işaretler. Bu, şu anda yalnızca düzen düzenleyicisinde kullanılır ve derleme iletileri için kullanılmaz.
Daha fazla ayrıntı için Android Kaynak Analizi belgelerine bakın.
Xamarin.Android 10.2'de eklendi.
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).
Xamarin.Android 5.1'den başlayarak Derleme eylemini @(Content)
kullanmaya çalışmak bir XA0101
uyarıyla sonuçlanır.
EmbeddedJar
Xamarin.Android bağlama projesinde EmbeddedJar derleme eylemi Java/Kotlin kitaplığını bağlar ve dosyayı kitaplığa ekler .jar
. Xamarin.Android 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.
Xamarin.Android 11.2 sürümünden bu yana AndroidLibrary derleme eylemini aşağıdaki gibi bir alternatif olarak kullanabilirsiniz:
<Project>
<ItemGroup>
<AndroidLibrary Include="Library.jar" />
</ItemGroup>
</Project>
EmbeddedNativeLibrary
Xamarin.Android sınıf kitaplığında veya Java bağlama projesinde EmbeddedNativeLibrary derleme eylemi gibi lib/armeabi-v7a/libfoo.so
yerel bir kitaplığı kitaplığa paketler. Xamarin.Android uygulaması kitaplığını tükettiğinde, libfoo.so
dosya son Android uygulamasına eklenir.
Xamarin.Android 11.2 sürümünden bu yana AndroidNativeLibrary derleme eylemini alternatif olarak kullanabilirsiniz.
EmbeddedReferenceJar
Xamarin.Android bağlama projesinde EmbeddedReferenceJar derleme eylemi dosyayı kitaplığa ekler .jar
ancak EmbeddedJar'ın yaptığı gibi C# bağlaması oluşturmaz. Xamarin.Android uygulama projesi kitaplığını tükettiğinde, son Android uygulamasında Java/Kotlin kodunu içerir.
Xamarin.Android 11.2 sürümünden bu yana AndroidLibrary derleme eylemini aşağıdaki 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>
JavaDocJar
Xamarin.Android bağlama projesinde JavaDocJar derleme eylemi Javadoc HTML içeren dosyalarda .jar
kullanılır. Parametre adlarını ayıklamak için Javadoc HTML ayrıştırılır.
Yalnızca belirli "Javadoc HTML diyalektleri" desteklenir, örneğin:
- JDK 1.7
javadoc
çıkışı. - JDK 1.8
javadoc
çıkışı. - Droiddoc çıkışı.
Bu derleme eylemi Xamarin.Android 11.3 sürümünde kullanım dışıdır ve .NET 6'da desteklenmez.
Derleme @(JavaSourceJar)
eylemi tercih edilir.
JavaSourceJar
Xamarin.Android bağlama projesinde JavaSourceJar derleme eylemi, Javadoc belge açıklamaları içeren Java kaynak kodu içeren dosyalarda .jar
kullanılır.
Xamarin.Android 11.3'den önce, Javadoc derleme zamanında yardımcı program aracılığıyla javadoc
HTML'ye dönüştürülüyordu ve daha sonra XML belgelerine dönüştürülüyordu.
Xamarin.Android 11.3'den başlayarak, Javadoc bunun yerine 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.
Xamarin.Android 11.3'den başlayarak 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
.
Xamarin.Android 12.3'den itibaren aşağıdaki MSBuild meta verileri desteklenir:
%(DocRootUrl)
: İçeri aktarılan belgelerde tüm {@docroot} örnekleri yerine kullanılacak url ön eki.
LibraryProjectZip
Xamarin.Android bağlama projesinde LibraryProjectZip derleme eylemi Java/Kotlin kitaplığını bağlar ve veya .aar
dosyasını kitaplığa ekler.zip
. Xamarin.Android 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.
Not
Xamarin.Android bağlama projesine yalnızca tek bir LibraryProjectZip eklenebilir. Bu sınırlama .NET 6'da kaldırılacaktır.
LinkDescription
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, $(EnableProguard)
MSBuild özelliğidir True
.