paint-brush
iPhone 15’iniz Varsa Boyut Önemli mi?ile@marcushaldd
637 okumalar
637 okumalar

iPhone 15’iniz Varsa Boyut Önemli mi?

ile Daria Leonova7m2023/11/10
Read on Terminal Reader

Çok uzun; Okumak

Uygulama boyutumuza hâlâ göz kulak olmamızın bazı önemli nedenleri var: - App Store sınırları; - Başlatma hızlarını indirin; - Cihazın pil ömrüne etkisi; Uygulama boyutunu küçültmenin bazı yöntemleri de vardır: - Görüntüler için HEIC ve SVG formatları; - Varlık Katalogları; - Dinamik bağlantı; - Fazla dosyaların filtrelenmesi;
featured image - iPhone 15’iniz Varsa Boyut Önemli mi?
Daria Leonova HackerNoon profile picture
0-item

Apple her yıl yeni bir iPhone piyasaya sürüyor, RAM ve ana belleğin boyutunu kademeli olarak artırarak çipe güç katıyor. Bugün iPhone 15'te "Resident Evil 4" gibi konsol oyunlarını zaten çalıştırabiliyorsunuz. Ve mantıklı bir soru ortaya çıkabilir: Uygulamamın boyutunu optimize etmeli miyim yoksa üzerinde daha fazla zaman harcayamaz mıyım?


Kısacası, yine de boyutu optimize etmeye değer. Bu makalede, bunu yapmanın neden gerekli olduğuna dair nedenleri bir araya getirdim ve bazı yararlı optimizasyon yöntemleri sundum.

Sorunlar ve Tanımlar

Öyleyse “Boyut neden önemlidir?” sorusunun en banal cevabıyla başlayalım. - App Store'un sınırlamaları. App Store Connect, belirtilen boyut sınırını aşan bir dosyayı indirmenize izin vermez.


iOS ve tvOS uygulamaları için uygulamanızın, desteklenen işletim sistemlerindeki maksimum dosya boyutlarını aşmadığını doğrulayın. Uygulamanızın toplam sıkıştırılmamış boyutu 4 GB'tan az olmalıdır.


Apple Watch uygulamalarının boyutu 75 MB'tan az olmalıdır. Ayrıca, her bir Mach-O çalıştırılabilir dosyası (örneğin, uygulama_adı.app/uygulama_adı) bu maksimum dosya boyutlarını aşmamalıdır. Bağlantı


Bahsettikleri belirli dosyalar biraz kafa karıştırıcı olabilir. Bunu daha iyi anlamak için başvurunuzu App Store Connect'e gönderme sürecini inceleyelim.


.xcarchive

Product -> Archive

İlk adım bir arşiv oluşturmaktır. Bu arşiv, bir iOS, macOS, watchOS veya tvOS uygulamasına ilişkin derleme yapıtlarının ve ilgili bilgilerin bir koleksiyonunu saklar.



.xcarchive right click -> Show Package Contents

Arşivde tam olarak neyin, hangi biçimde yer aldığını inceleme fırsatımız var.




Ana dosyalar arasında şunları bulacaksınız:


  • Uygulamanızın bulunduğu Ürünler klasörü;

  • dSYM'ler ("hata ayıklama sembollerinin kısaltması"), hata ayıklama için gerekli bilgileri içeren Xcode tarafından oluşturulan özel dosyalar, kısacası kilitlenme günlükleri;

  • Info.plist;


Bu arada, Uygulama dosyası "Paket içeriğini göster" seçeneğiyle de açılabilir ve dosyalar arasında kod imzalamanın bir sonucu olan yürütülebilir dosyayı ve CodeResources'u bulacaksınız; çeşitli uygulama kaynaklarının (resimler vb.) dijital imzalarını takip eder.


.ipa

Xcode'a döndüğümüzde, Arşivi oluşturduktan sonra Distribute App düğmesini kullanabilirsiniz. Bu aşamada .xcarchive .ipa’ya dönüşüyor.


Bir .ipa dosyası, bir "Payload" klasörü içeren sıkıştırılmış bir paket olarak düşünülebilir. Bu "Payload" klasörünün içinde temel "YourApp.app" paketi bulunur. ".app" paketi içinde, aşağıdaki gibi kaynaklar da dahil olmak üzere uygulamanızın tüm kritik bileşenlerini bulacaksınız:


  • Görüntüler;
  • plist dosyaları;
  • sıkıştırılmış uç dosyaları;
  • yürütülebilir dosya ;


Ayrıca uygulamanın bütünlüğünü ve güvenliğini sağlamak için kod imzalama kaynaklarını da barındırır.


.ipa dosyanızın iç kısmına bakmak için Dağıtımdan sonra Export tıklayın, türü .ipa'dan .zip'e dönüştürün ve çıkartın.


Özetle .ipa dosyası, son kullanıcıların iOS cihazlarına yükledikleri paketli uygulamadır; .xcarchive ise uygulamaya yönelik çeşitli varlıkları ve derleme bilgilerini içeren geliştirici odaklı bir arşivdir.


.ipa dağıtım için kullanılırken .xcarchive hata ayıklama, arşivleme ve daha fazla geliştirme amacıyla kullanılır. Yürütülebilir dosya ise uygulamanın işlevlerini gerçekleştiren merkezi koddur ve .ipa paketinde bulunur.


Böylece AppStore'un sınırlamaları aşağıdaki gibi gösterilebilir.

OS sürümü

.ipa boyutu

.ipa -> Yük -> Uygulama -> exe boyutu

iOS 9.0 ve üzeritvOS 9.0 ve üzeri

4 CİGABAYT

500 MB

iOS 7.X'ten iOS 8.X'e

2GB

60 MB


Ancak, son uygulamanızın boyutunu, yani belirli bir kullanıcının cihazına kaç bayt yüklemesi gerektiğini tahmin etmek için, uygulama boyutu raporu oluşturmak gibi ek işlemlere ihtiyacınız olacaktır. Belgeler onu oluşturma prosedürünü iyi bir şekilde açıklıyor, bu yüzden bir bırakacağım bağlantı Burada.


Uygulamanızın boyutunu düşünmenin bir sonraki nedeni… yine AppStore, ancak şimdi sistem kısıtlamalarından değil indirme hızından bahsediyoruz. Burada her şey ortadadır; boyut ne kadar küçükse oran da o kadar yüksek olur.


Üstelik kullanıcıların uygulamayı yüklemek için bir Wi-Fi ağına bağlanması gereken 200 MB sınırı da bulunuyor. Gecikme kullanıcıların cesaretini kırabilir ve daha yüksek vazgeçme oranlarına yol açabilir.


Apple'ın App Store arama ve keşif algoritmaları, kullanıcıların indirmesi ve denemesi daha kolay olduğundan genellikle daha küçük uygulamaları tercih eder. Daha küçük uygulama boyutları, uygulamanızın arama sonuçları ve önerilerdeki görünürlüğünü potansiyel olarak artırabilir.


Uygulama cihaza yüklendikten sonra boyutu hala önemlidir. Daha küçük uygulamalar daha hızlı başlatılarak daha iyi bir kullanıcı deneyimi sağlanır. Bir uygulama depolamayı optimize ettiğinde, pil ömrünün uzamasına, uygulama ayak izinin azaltılmasına ve cihazın sağlığının iyi olmasına katkıda bulunur. Sonuç olarak, iPhone'dan ne kadar çok kişi memnun olursa, o kadar çok potansiyel kullanıcıya sahip olursunuz.

Çözümler

Geliştirme sırasında uygulamanızın boyutunu gereksiz yere büyütmekten kaçınmak için bazı basit ipuçları vardır. Bunlardan ilki imgelerle bilinçli çalışmadır.

Görüntüler

Öncelikle JPEG yerine HEIC'i seçin. HEIC, benzer görüntü kalitesini korurken, JPEG'e kıyasla yüzde 50 daha küçük dosyalar sağlar. Bu, cihazınızdaki depolama alanının azalmasına neden olur. Daha küçük dosyaların ağlar arasında aktarılması daha kolaydır, ayrıca daha hızlı yüklenir ve diske kaydedilir.


HEIC'ler görüntü şeffaflığını ve derinlik ve farklılık bilgileri içeren tamamlayıcı görüntüleri saklama yeteneğini destekler. Kayıpsız sıkıştırmayı destekler ve birden fazla görüntüyü tek bir kapta saklamanıza olanak tanır.



İkinci olarak, PDF ve PNG yerine SVG'yi (iki boyutlu vektör grafiklerini görüntülemek için kullanılan XML tabanlı bir vektör görüntü formatı) benimsemeye çalışın. Raster görüntülerin aksine, vektör grafikler genellikle daha küçük dosya boyutları sergiler çünkü tek tek pikselleri depolamak yerine şekilleri ve eğrileri tanımlayan matematiksel denklemlerle karakterize edilir.


Başlangıçta, önekli 3 resim eklemek gerekiyordu (her piksel yoğunluğu için). Daha sonra PNG desteği eklendi (=belirli bir boyuta sahip vektör görüntüsü), ancak yine de “projeyi birleştirdiğimizde PDF'den 3 PNG kes” düzeyinde çalıştı.


Ve ancak o zaman SVG'yi kullanmak ve varlık kataloğuna "vektör tarihini kullan" onay kutusunu eklemek mümkün hale geldi, böylece kullanılan görsellerin boyutu gerçekten küçültüldü ve kalite kaybı olmadan sonsuz ölçeklendirme olanağı eklendi.


Üçüncü olarak, Varlık Kataloglarının yeteneklerinden en iyi şekilde yararlanın. Varlık Katalogları, aynı görüntünün birden fazla çözünürlüğü için kullanımı kolay bir depolama alanı sağlar. Üstelik kataloglar, tüm görüntü varlıklarını tek tek dosyalar yerine meta verilerle optimize edilmiş tek bir formatta saklar.


App Store'un yalnızca belirli cihazlar için gerekli varlıkları sağlamasına olanak tanır. Bu da indirme hızının artmasına neden oluyor ve kullanıcıların beklemekten hoşlanmadığını zaten biliyoruz.


Varlık Katalogları

Kaynağı "isteğe bağlı" olarak ayarlamak mümkündür, yani kaynak yalnızca gerekirse cihaza indirilecek ve bir süre kullanılmadığında kaldırılacaktır. Bağlantı


Büyük bir “ücretsiz” resim kataloğunuz olduğunu unutmayın - SF Sembolleri . Apple sürekli olarak karakterleri artırmak, renkleri ve hatta animasyonları kişiselleştirme yeteneği eklemek için çalışıyor.


Yani resimler ve diğer grafik kaynaklarıyla her şey net görünüyor; doğru formatları kullanıyoruz ve Varlıklar aracılığıyla bir katalog ekliyoruz. Her zaman büyük kaynakları son derlemeye dahil etmeme, ancak gerektiğinde sadece İnternetten yükleme yapma fırsatı vardır. Şimdi kodlardan ve kütüphanelerin kullanımından bahsedelim.

Çerçeve Yönetimi

Linkleme konusunu hızlıca hatırlatayım. Bunun iki türü vardır: statik ve dinamik.


Statik

Dinamik

Bağlantı oluştuğunda

Yapım Zamanı

Çalışma süresi

Bağımlılıkların depolandığı yer

Son yürütülebilir dosyada

Ayrı dinamik kitaplıklarda

Bağımlılıklar nasıl paylaşılır?

Aynı kopya, uygulamanın tüm örnekleri tarafından kullanılır

Uygulamanın her örneğinin kendi kopyası vardır

Bağımlılıklardaki güncellemeler nasıl işlenir?

Uygulamayı yeniden oluşturun

Dinamik kitaplığı güncelleyin


Bu makalenin temasına göre, bağımlılıkların depolanması bizim için özellikle önemlidir ve dinamik bağlantı bizim favorimiz gibi görünüyor.


Dinamik kitaplıklar istemci uygulamalarına statik olarak bağlı değildir; yürütülebilir dosyanın parçası haline gelmezler. Bunun yerine dinamik kitaplıklar, uygulama başlatıldığında veya çalışırken bir uygulamaya yüklenebilir (ve bağlanabilir). Bağlantı


Uzun lafın kısası, statik kitaplıklar yerine dinamik kitaplıkları tercih etmek, daha küçük uygulama dosyası boyutlarına ve daha düşük başlangıç bellek kullanımına neden olur. Ancak, uygulamanın başlatılması sırasında performansta gecikmeye neden olabileceğinden, bir denge kurmak ve dinamik kitaplıkların aşırı kullanımından kaçınmak yine de önemlidir.


Apple ayrıca uygulamanızda modüler bir kod tabanı ( SPM ) oluşturmanızı da önerir; bu, örneğin App Clipps gibi diğer hedeflerle kod paylaşırken kullanışlı olabilir.


Swift Paket Yöneticisi, Swift projelerinizdeki bağımlılıkları yönetmenin kolaylaştırılmış ve yerel bir yolunu sunar.

Fazla Dosya

Uygulamanızın boyutunu küçültmenin en etkili yollarından biri tüm gereksiz dosyaları kaldırmaktır. Bu ekstra dosyalar örneğin Read.me veya kalan resimler olabilir. Aslında, .ipa'nın ne olduğunu anladığımız makalenin en başında, AppStore'a girecek tüm dosyaları nasıl bulacağımızı zaten öğrenmiştik: .ipa -> .zip -> Uygulama -> paketi göster içindekiler.


İhtiyacınız olmayan tüm kaynakları öğrenin ve bunları uygulamanızdan silmekten çekinmeyin .


Çözüm

Sadece özetlemek gerekirse. Uygulama boyutumuza dikkat etmemizin hâlâ bazı önemli nedenleri var:

  • App Store sınırları;
  • İndirme ve başlatma hızları;
  • Cihazın pil ömrüne etkisi;


Uygulama boyutunu küçültmenin bazı yöntemleri de vardır:

  • Görüntüler için HEIC ve SVG formatları;
  • Varlık Katalogları;
  • Dinamik bağlantı;
  • Fazla dosyaların filtrelenmesi;


Bu nedenle rutin gelişiminiz sırasında bunu unutmayın; her gün daha akıllı ol 🙃