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.
Bu kılavuzda, uygulamalarınızı nasıl zamanlayabileceğiniz ve tüm derleme yapılandırmaları için daha hızlı derlemeler için kullanılabilecek yöntemlerin nasıl kullanılacağı açıklanmaktadır.
Harika uygulamalar geliştirmek, çalışan kod yazmaktan daha fazlasıdır. İyi yazılmış bir uygulama, daha küçük ve daha hızlı çalışan uygulamalarla daha hızlı derlemeler gerçekleştiren iyileştirmeler içermelidir. Bu iyileştirmeler yalnızca kullanıcı için değil, aynı zamanda siz veya proje üzerinde çalışan herhangi bir geliştirici için daha iyi bir deneyime neden olur. Uygulamanızla ilgilenirken her şeyin sık sık zamanlandığından emin olmak önemlidir.
Varsayılan seçeneklerin güvenli ve hızlı olduğunu, ancak her durum için uygun olmadığını unutmayın. Ayrıca, birçok seçenek tek tek projeye bağlı olarak geliştirme döngüsünü yavaşlatabilir veya hızlandırabilir. Örneğin, yerel sıyırma zaman alır, ancak çok az boyut kazanılırsa, daha hızlı bir dağıtımla striptiz için harcanan zaman kurtarılmaz. Öte yandan, yerel striptiz uygulamayı önemli ölçüde küçültebilir ve bu durumda dağıtımı daha hızlı olur. Bu, projeler arasında farklılık gösterir ve bunu bilmenin tek yolu test etmektir.
Xamarin derleme hızları, performansı etkileyebilenden farklı olarak bilgisayarın çeşitli kapasitelerinden ve özelliklerinden de etkilenebilir: işlemci özellikleri, veri yolu hızları, fiziksel bellek miktarı, disk hızı, ağ hızı. Bu performans sınırlamaları bu belgenin kapsamı dışındadır ve geliştiricinin sorumluluğundadır.
Zamanlama uygulamaları
Mac için Visual Studio içinde tanılama MSBuild çıkışını etkinleştirmek için:
- Mac için Visual Studio > Tercihler... seçeneğine tıklayın.
- Soldaki ağaç görünümünde Projeler > Derlemesi'ni seçin
- Sağ panelde Günlük ayrıntısı açılan listesini Tanılama olarak ayarlayın:

- Tamam’a tıklayın.
- yeniden başlatma Mac için Visual Studio
- Paketinizi temizleme ve yeniden oluşturma
- Hata Bölmesi 'nde tanılama çıktısını görüntüleme ( Bölme TuşLarını > Görüntüleme > Hataları ) Derleme Çıkışı düğmesine tıklayarak
Zamanlama rötuşu
Mtouch derleme işlemine özgü bilgileri görüntülemek için Proje Seçeneklerinizdeki mtouch bağımsız değişkenlerine geçin--time --time. Sonuçlar, görevi arayarak Derleme Çıktısı'nda MTouch bulunur:
Setup: 36 ms
Resolve References: 982 ms
Extracted native link info: 987 ms
...
Total time: 1554 ms
Derleme Konağı ile Visual Studio'dan Bağlan
Xamarin araçları teknik olarak OS X 10.10 Yosemite veya üzerini çalıştırabilen tüm Mac'lerde çalışır. Ancak, geliştirici deneyimleri ve derleme süreleri Mac'in performansıyla engellenebilir.
Bağlantısız durumda, Windows üzerinde Visual Studio yalnızca C# derleme aşamasını gerçekleştirir ve bağlama veya AOT derlemesi gerçekleştirmeye çalışmaz, uygulamayı .app Paketine paketlemez veya uygulama paketini imzalamaz. (C# derleme aşaması nadiren performans sorunudur.) doğrudan Mac için Visual Studio'deki Mac derleme konasında oluşturarak işlem hattında derlemenin nerede yavaşlayamaya çalışılır?
Buna ek olarak, yavaşlık için en yaygın yerlerden biri, Windows makinesi ile Mac derleme konağı arasındaki ağ bağlantısıdır. Bunun nedeni ağ üzerindeki fiziksel bir engel, kablosuz bağlantı kullanmak veya doygun bir makinede (örneğin, bulutta Mac hizmeti) seyahat etmek zorunda kalmak olabilir.
Simülatör Püf Noktaları
Mobil uygulamalar geliştirirken kodu hızla dağıtmak çok önemlidir. Hız ve cihaz sağlama gereksinimlerinin olmaması gibi çeşitli nedenlerle geliştiriciler genellikle önceden yüklenmiş bir simülatöre veya öykünücüye dağıtım yapmayı tercih eder. Geliştirici araçlarının üreticileri için simülatör veya öykünücü sağlama kararı, hız ve uyumluluk arasında bir denge sağlar.
Apple, kodu çalıştırmak için daha az kısıtlayıcı bir ortam oluşturarak uyumluluk üzerindeki hızı teşvik eden iOS geliştirme için bir simülatör sağlar. Bu daha az kısıtlayıcı ortam, Xamarin'in simülatör için Tam Zamanında (JIT) derleyicisini kullanmasına olanak tanır (cihazdaki AOT'nin aksine), derlemenin çalışma zamanında yerel koda derlendiği anlamına gelir. Mac bir cihazdan çok daha hızlı olduğundan, bu daha iyi performans sağlar.
Simülatör paylaşılan bir uygulama başlatıcısı kullanır ve cihazda gerekli olduğu gibi her seferinde oluşturulmak yerine başlatıcının yeniden kullanılmasına olanak sağlar.
Yukarıdaki bilgiler dikkate alınırken, aşağıdaki listede en iyi performansı sağlamak için simülatörde uygulamanızı oluştururken ve dağıtırken atılması gereken adımlar hakkında bazı bilgiler sağlanır.
İpuçları
- Derlemeler için:
- Proje Seçenekleri'nde PNG görüntülerini en iyi duruma getir seçeneğini kaldırın. Bu iyileştirme, simülatördeki derlemeler için gerekli değildir.
- Bağlayıcıyı Bağlantı Kurma olarak ayarlayın. Bağlayıcıyı devre dışı bırakmak daha hızlıdır çünkü yürütülmesi önemli ölçüde zaman alır.
- Bayrağını kullanarak paylaşılan uygulama başlatıcının
--nofastsimdevre dışı bırakılması simülatör derlemelerinin çok daha yavaş olmasını sağlar. Artık gerekli olmadığında bu bayrağı kaldırın. - Paylaşılan simlauncher ana yürütülebilir dosyası bu gibi durumlarda yeniden kullanılamadığından ve her derleme için uygulamaya özgü bir yürütülebilir dosyanın derlenmiş olması gerektiğinden yerel kitaplıkları kullanmak daha yavaştır.
- Dağıtım için
- Mümkün olduğunda simülatörü her zaman çalışır durumda tutun. Simülatörün soğuk başlatılması 12 saniye kadar sürebilir.
- Ek İpuçları
- Derlemeyi derlemeden önce temizlediğinden, Yeniden Derleme'yi yeniden derleme yerine yeniden derlemeyi tercih edin. Temizleme, kullanılabilecek başvuruları kaldırdığı için uzun sürebilir.
- Simülatörün korumalı alanı zorlamaması gerçeğinden yararlanın. Projenize dahil edilen videolar veya diğer varlıklar gibi büyük kaynaklara sahip olmak, uygulama simülatörde her başlatıldığında yüksek maliyetli dosya kopyalama işlemleri oluşturabilir. Bu dosyaları giriş dizinine yerleştirerek ve tam dosya yoluyla uygulamanıza başvurarak bu yüksek maliyetli işlemlerden kaçının.
- Şüpheniz olduğunda, değişikliğinizi ölçmek için bayrağını kullanın
--time --time
Aşağıdaki ekran görüntüsünde, iOS seçeneklerinizde simülatör için bu seçeneklerin nasıl ayarlanacağı gösterilmektedir:
Cihaz Püf Noktaları
Simülatör, iOS cihazı için kullanılan derlemenin küçük bir alt kümesi olduğundan cihaza dağıtım, simülatöre dağıtmaya benzer. Cihaz oluşturmak için çok daha fazla adım gerekir, ancak uygulamanızı iyileştirmek için ek fırsatlar sağlama avantajına sahiptir.
Derleme Yapılandırmaları
iOS uygulamaları dağıtılırken sağlanan bir dizi derleme yapılandırması vardır. Her yapılandırmayı iyi anlamak, ne zaman ve neden iyileştirmeniz gerektiğini bilmek önemlidir.
- Hata ayıklama
- Bu, bir uygulama geliştirme aşamasındayken kullanılması gereken ana yapılandırmadır ve bu nedenle mümkün olduğunca hızlı olmalıdır.
- Sürüm
- Yayın derlemeleri, kullanıcılarınıza gönderilen derlemelerdir ve performansa odaklanmak çok önemlidir. Yayın yapılandırmasını kullanırken, LLVM derleyicisini iyileştirme ve PNG dosyalarını iyileştirme özelliğini kullanmak isteyebilirsiniz.
Oluşturma ve dağıtma arasındaki ilişkiyi anlamak da önemlidir. Dağıtım süresi, uygulama boyutunun bir işlevidir. Daha büyük bir uygulamanın dağıtılması daha uzun sürer. Uygulama boyutunu en aza indirerek dağıtım süresini azaltabilirsiniz.
Uygulama boyutunu en aza indirmek de derleme süresini kısaltabilir. Bunun nedeni, uygulamadan kodun kaldırılmasının kullanılmayacak kodu yerel olarak derlemekten daha az zaman almasıdır. Daha küçük nesne dosyaları daha hızlı bağlama anlamına gelir ve bu da oluşturulacak daha az simge içeren daha küçük bir yürütülebilir dosya oluşturur. Bu nedenle alandan tasarruf etmek çift ödemeye sahiptir. Bu nedenle Bağlantı SDK'sı tüm cihaz derlemeleri için varsayılan değerdir.
Not
Bağlantı SDK'sı seçeneği, kullanılan IDE'ye bağlı olarak Yalnızca Bağlantı Çerçevesi SDK'ları veya Yalnızca Bağlantı SDK'ları derlemeleri olarak görünebilir.
İpuçları
- Oluşturmak:
- Tek bir mimari (örneğin ARM64) oluşturmak, FAT ikilisinden daha hızlıdır (örn. ARMv7 + ARM64)
- Hata ayıklama sırasında PNG dosyalarını iyileştirmekten kaçının
- Tüm derlemeleri bağlamayı göz önünde bulundurun. Her derlemeyi iyileştirme
- kullanarak
--dsym=falsehata ayıklama simgelerinin oluşturulmasını devre dışı bırakma. Ancak, bunun devre dışı bırakılmasının kilitlenme raporlarının yalnızca uygulamayı oluşturan makinede ve yalnızca uygulama kaldırılmadıysa sembolik hale gelebileceği anlamına geldiğini unutmayın.
Kaçınılması gereken bazı şeyler şunlardır:
- Yağ İkiliLeri (hata ayıklama)
- Bağlayıcıyı devre dışı bırakma
--nolink - Çıkarılma devre dışı bırakılma
- Sembol
--nosymbolstrip - IL (yayın)
--nostrip.
- Sembol
Ek ipuçları
- Simülatörde olduğu gibi Yeniden Derleme yerine Derleme'yi tercih edin
- AOT'd derlemeleri (nesne dosyaları) önbelleğe alınır
- Semboller, dsymutil çalıştırması ve cihazlara yüklenmesi daha uzun ve daha uzun olduğu için hata ayıklama derlemeleri daha uzun sürer.
- Yayın derlemeleri, varsayılan olarak derlemelerin IL şeridini yapar. Bu yalnızca biraz zaman alır ve cihaza daha küçük bir .app dağıtırken büyük olasılıkla geri kazanılır.
- Büyük statik dosyaları her derlemeye dağıtmaktan kaçının (hata ayıklama)
- UIFileSharingEnabled kullanma (info.plist)
- Varlıklar bir kez karşıya yüklenebilir
- UIFileSharingEnabled kullanma (info.plist)
- Şüpheniz olduğunda, değişikliğinizi ölçmek için bayrağını kullanın
--time --time
Aşağıdaki ekran görüntüsünde, iOS seçeneklerinizde simülatör için bu seçeneklerin nasıl ayarlanacağı gösterilmektedir:
Bağlayıcıyı Kullanma
Uygulamanızı oluştururken, mtouch yönetilen kod için uygulamanın kullanmadığı kodu kaldıran bir bağlayıcı kullanır. Teoride, bu daha küçük ve dolayısıyla daha hızlı derlemeler sağlar. Bağlayıcı hakkında daha fazla bilgi için iOS'ta bağlama kılavuzuna bakın.
Bağlayıcıyı kullanırken aşağıdaki seçenekleri göz önünde bulundurun:
- Cihaz derlemesi için Bağlama seçeneğinin belirlenmesi daha uzun sürer ve daha büyük bir uygulama oluşturur.
- Apple, boyut sınırından büyükse uygulamaları reddeder. öğesine bağlı
MinimumOSVersionolarak, bu 60 MB kadar küçük olabilir. - Yerel yürütülebilir dosya ekleniyor.
- JIT derlemesi kullanıldığından (bir cihazdaki AOT'nin aksine) Simülatör derlemeleri için Bağlama'nın kullanılması daha hızlıdır.
- Apple, boyut sınırından büyükse uygulamaları reddeder. öğesine bağlı
- Bağlantı SDK'sı varsayılan seçenektir.
- Tümünü Bağla özelliğinin kullanılması güvenli olmayabilir, özellikle de size ait olmayan bir NuGets veya Components kodu kullanıyorsanız. Derlemeleri bağlamamayı seçerseniz, bu hizmetlerden gelen tüm kodlar uygulamanıza dahil edilir ve büyük uygulamalar oluşturabilirsiniz.
- Ancak, Tüm Uygulamaları Bağla'yı seçerseniz, özellikle dış bileşenler kullanılıyorsa uygulama kilitlenebilir. Bunun nedeni, belirli türlerde Düşünceler ion kullanan bazı bileşenlerdir.
- Statik analiz ve yansıma birlikte çalışmaz.
Araçlar, özniteliğini kullanarak uygulama içindeki öğeleri tutmaları [Preserve] için talimat verebilir.
Kaynak koda erişiminiz yoksa veya bir araç tarafından oluşturulduysa ve bunu değiştirmek istemiyorsanız, yine de korunması gereken tüm türleri ve üyeleri açıklayan bir XML dosyası oluşturularak bağlanabilir. Ardından bayrağını --xml={file.name}.xml proje seçeneklerinize ekleyebilirsiniz. Bu, kodu tam olarak Öznitelikleri kullanıyormuş gibi işler.
Uygulamaları Kısmen Bağlama
Uygulamanızın derleme süresini iyileştirmeye yardımcı olmak için uygulamaları kısmen bağlamak da mümkündür:
Bazı derlemeleri kullanma
Link Allve atlama- Uygulama boyutu iyileştirmesinin bir bölümü kaybolur.
- Kaynak koda erişim gerekmez.
- Örneğin
--linkall --linkskip=fieldserviceiOS, .
seçeneği kullanın
Link SDKve ihtiyacınız olan[LinkerSafe]derlemelerde özniteliğini kullanın- Gerekli kaynak koduna erişim.
- Sisteme derlemenin bağlanmanın güvenli olduğunu ve Xamarin SDK'sıymış gibi işlendiğini bildirir.
Objective-C Bağlama
Bağlamalarınızda özniteliğini
[Assembly: LinkerSafe]kullanmak zaman ve boyut tasarrufu sağlayabilir.Smartlink
- Yerel tarafta bitti
- özniteliğini
[LinkWith (SmartLink=true)]kullanma - Bu, yerel bağlayıcının bağlandığınız kitaplıktan yerel kodu ortadan kaldırmasına yardımcı olur.
- Simgelerin dinamik aramasının bununla çalışmayacağını unutmayın.
Özet
Bu kılavuzda, projenin derleme yapılandırmasına ve seçeneklerine bağımlı olan bir iOS uygulamasının ve seçeneklerinin nasıl zamanlandığını keşfedildi.


