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.
Android için .NET derleme işlemi her şeyi birbirine yapıştırmaktan sorumludur: oluşturmaResource.designer.cs, , @(AndroidAsset)ve diğer @(AndroidResource) destekleme, Android çağrılabilen sarmalayıcılar oluşturma ve Android cihazlarda yürütme için bir .apk oluşturma.
Uygulama paketleri
Geniş anlamda, Android için .NET derleme sisteminin oluşturabileceği iki tür Android uygulama paketi (.apk dosyalar) vardır:
Tamamen bağımsız olan ve yürütmek için ek paketler gerektirmeyen sürüm derlemeleri. Bunlar Bir App Store'a sağlanan paketlerdir.
Hata ayıklama derlemeleri olmayan.
Bu paket türleri, paketi oluşturan MSBuild Configuration ile eşleşer.
Hızlı dağıtım
Hızlı dağıtım , Android uygulama paketi boyutunu daha da küçülterek çalışır. Bu, uygulamanın derlemelerini paketten dışlayarak ve bunun yerine uygulamanın derlemelerini genellikle içinde filesbulunan uygulamanın iç /data/data/com.some.package dizinine dağıtarak yapılır. İç files dizin genel olarak yazılabilir bir klasör olmadığından, run-as araç dosyaları bu dizine kopyalamak için tüm komutları yürütmek için kullanılır.
Yalnızca derlemeler değiştirildiğinde paket yeniden yüklenmediğinden bu işlem derleme/dağıtma/hata ayıklama döngüsünü hızlandırır. Yalnızca güncelleştirilmiş derlemeler hedef cihaza yeniden eşitlenir.
Uyarı
Bilindiği üzere, hızlı dağıtım genellikle run-as'i engelleyen ve Android 5.0'dan daha eski olan cihazlarda başarısız olmaktadır.
Hızlı dağıtım, hem .apk hem de .aab paket biçimleri için desteklenir.
Varsayılan olarak etkindir ve özelliği $(EmbedAssembliesIntoApk)olarak ayarlanarak True hata ayıklama derlemelerinde devre dışı bırakılabilir.
Hızlı dağıtım ile .aab kullanmanın, .aab dosyasının bundletool aracılığıyla paketlenip yüklenmesi gerektiğinden .apk daha yavaş olacağını unutmayın.
Gelişmiş Hızlı Dağıtım modu, dağıtımları daha da hızlandırmak için bu özellik ile birlikte kullanılabilir.
Bu işlem hem derlemeleri, yerel kitaplıkları, tür haritalarını hem de dex'leri bu dizine files dağıtır. Ancak bunu yalnızca yerel kitaplıkları, bağlamaları veya Java kodunu değiştiriyorsanız etkinleştirmeniz gerekir.
MSBuild projeleri
Android için .NET derleme işlemi, Mac için Visual Studio ve Visual Studio tarafından kullanılan proje dosyası biçimi olan MSBuild'i temel alır. Normalde, kullanıcıların MSBuild dosyalarını el ile düzenlemesi gerekmez; IDE tamamen işlevsel projeler oluşturur ve yapılan tüm değişikliklerle bunları güncelleştirir ve gerektiğinde derleme hedeflerini otomatik olarak çağırır.
İleri düzey kullanıcılar IDE'nin GUI'sinde desteklenmeyen işlemler yapmak isteyebilir, bu nedenle derleme işlemi proje dosyasını doğrudan düzenleyerek özelleştirilebilir. Bu sayfada yalnızca Android'e özgü özellikler ve özelleştirmeler için .NET belgelenmiştir; normal MSBuild öğeleri, özellikleri ve hedefleri ile daha birçok şey mümkündür.
Projelerin bağlanması
Bağlama projeleriyle aşağıdaki MSBuild özellikleri kullanılır:
Resource.designer.cs Nesil
Dosyanın oluşturulmasını Resource.designer.cs denetlemek için aşağıdaki MSBuild özellikleri kullanılır:
$(AndroidAapt2CompileExtraArgs)$(AndroidAapt2LinkExtraArgs)$(AndroidExplicitCrunch)$(AndroidR8IgnoreWarnings)$(AndroidResgenExtraArgs)$(AndroidResgenFile)$(AndroidUseAapt2)$(MonoAndroidResourcePrefix)
İmzalama özellikleri
İmzalama özellikleri, Uygulama paketinin bir Android cihazına yüklenebilmesi için nasıl imzalandığını denetler. Daha hızlı derleme yinelemesine izin vermek için, Android için .NET görevleri derleme işlemi sırasında paketleri imzalamaz çünkü imzalama işlemi oldukça yavaştır. Bunun yerine, yükleme öncesinde veya dışarı aktarma sırasında, IDE veya Install derleme hedefi tarafından imzalanır (gerekirse).
SignAndroidPackage hedefini çağırmak, çıkış dizininde -Signed.apk soneki olan bir paket oluşturur.
Varsayılan olarak, imzalama hedefi gerekirse yeni bir hata ayıklama imzalama anahtarı oluşturur. Örneğin bir derleme sunucusunda belirli bir anahtar kullanmak istiyorsanız, aşağıdaki MSBuild özellikleri kullanılır:
$(AndroidDebugKeyAlgorithm)$(AndroidDebugKeyValidity)$(AndroidDebugStoreType)$(AndroidKeyStore)$(AndroidSigningKeyAlias)$(AndroidSigningKeyPass)$(AndroidSigningKeyStore)$(AndroidSigningStorePass)$(JarsignerTimestampAuthorityCertificateAlias)$(JarsignerTimestampAuthorityUrl)
keytool Seçenek Eşleme
Aşağıdaki keytool çağrıyı göz önünde bulundurun:
$ keytool -genkey -v -keystore filename.keystore -alias keystore.alias -keyalg RSA -keysize 2048 -validity 10000
Enter keystore password: keystore.filename password
Re-enter new password: keystore.filename password
...
Is CN=... correct?
[no]: yes
Generating 2,048 bit RSA key pair and self-signed certificate (SHA1withRSA) with a validity of 10,000 days
for: ...
Enter key password for keystore.alias
(RETURN if same as keystore password): keystore.alias password
[Storing filename.keystore]
Yukarıda oluşturulan anahtar depoyu kullanmak için özellik grubunu kullanın:
<PropertyGroup>
<AndroidKeyStore>True</AndroidKeyStore>
<AndroidSigningKeyStore>filename.keystore</AndroidSigningKeyStore>
<AndroidSigningStorePass>keystore.filename password</AndroidSigningStorePass>
<AndroidSigningKeyAlias>keystore.alias</AndroidSigningKeyAlias>
<AndroidSigningKeyPass>keystore.alias password</AndroidSigningKeyPass>
</PropertyGroup>
Uzantı noktaları oluşturma
Android için .NET derleme sistemi, derleme işlemimize bağlanmak isteyen kullanıcılar için birkaç genel uzantı noktası sunar. Bu uzantı noktalarından birini kullanmak için özelleştirilmiş hedefinizi PropertyGroup içindeki uygun MSBuild özelliğine eklemeniz gerekir. Örneğin:
<PropertyGroup>
<AfterGenerateAndroidManifest>
$(AfterGenerateAndroidManifest);
YourTarget;
</AfterGenerateAndroidManifest>
</PropertyGroup>
Uzantı noktaları şunlardır:
- '$(AfterGenerateAndroidManifest)
- '$(AndroidPrepareForBuildDependsOn)
- '$(BeforeGenerateAndroidManifest)
$(BeforeBuildAndroidAssetPacks)
Derleme işlemini genişletme konusunda dikkatli olun: Doğru yazılmazsa, derleme uzantıları özellikle her derlemede çalıştırıldıklarında derleme performansınızı etkileyebilir. Bu tür uzantıları uygulamadan önce MSBuild belgelerini okumanız kesinlikle önerilir.
Hedef tanımlar
Derleme işleminin Android'e özgü bölümleri için .NET içinde $(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targetstanımlanır, ancak derlemeyi oluşturmak için Microsoft.CSharp.targets gibi normal dile özgü hedefler de gereklidir.
Dil hedefleri içeri aktarılmadan önce aşağıdaki derleme özellikleri ayarlanmalıdır:
<PropertyGroup>
<TargetFrameworkIdentifier>MonoDroid</TargetFrameworkIdentifier>
<MonoDroidVersion>v1.0</MonoDroidVersion>
<TargetFrameworkVersion>v2.2</TargetFrameworkVersion>
</PropertyGroup>
Bu hedeflerin ve özelliklerin tümü , Xamarin.Android.CSharp.targets içeri aktarılarak C# için dahil edilebilir:
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
Bu dosya diğer diller için kolayca uyarlanabilir.