Ios App Boyutunu İyileştirmek Ios App Size Varlık Zenginlik Kataloğu ve Kombinasyon Teknikleri
Table of Contents
iOS App Boyut Optimizasyonunun Büyütmesi
Bir iOS uygulamasının her megabay sadece disk kullanımının ötesinde ağırlık taşır. App Store'da blogged bir uygulama hızlarını artırır, zaman başlangıçını arttırır ve kullanıcıların cihaz depolamanın düşük olduğunda yüklemelerini zorlayabilir. Apple, 200 MB'ye kadar limit verir ve hatta Appning'e baskı yapan geliştiriciler, daha düşük bir kullanıcı algısını etkiler.Uygulama boyutunu azaltmak bir kez görev değildir.
Asset Catalogs: Verimli Kaynak Yönetiminin Vakfı
Asset Catalogs, görüntülerinizi organize etmek için standart bir yoldur, ikonlar ve Xcode 5.'dan beri tek, yapılandırılmış bir dosya () Xcode, her hedef cihaz için optimize etmek için kullanır.
Varlık Kataloğu Nasıl Bir İkiliyi Alıyor
- [FONT=0)Automatic çözünürlük seçimi[[Dönetici:0)[Dönetici:0)Automatic solution Selection[[Dönetici:0)[Dönetici:0)|Otomatik bir cihaz için gerekli olan en yüksek çözünürlük görüntüsü, bir iPhone XR (2x) üzerinde çalışan bir iPhone XR'da çalışan evrensel bir uygulama aynı görüntüyü indirmeyecek.
- [[Dönetici Değeri Desteği[[[Dönetici:0)) * PDF veya SVG vektör görüntüleri tek çözünürlüklü varlıklar olarak kullanılabilir. Xcodebulizes bunları gerekli ölçeklere zamanında inşa etmek, birden fazla PNG kopyalarına ihtiyaç ortadan kaldırmak için.
- [FONT:0]Slice uzaklaştırma[[Dönetici 1] – Varlıktan vazgeçtiğiniz zaman, bir görüntünün görünmez kısımlarını kaldırabilirsiniz, dosya boyutunu azaltır.
- [FONT=0)Compact depolama[Dönetici:0)[Döneticileri)[FONT=0)) Uygulama paketinde, bir Apple-proprietary kompresyonu kullanan bir uygulama paketinde bireysel PNG'leri depolamaktan daha verimlidir.
Bu avantajları en üst düzeye çıkarmak için, her görüntü set sadece gerekli ölçekleri içermelidir. Retina veya Retina HD ekranlarıyla sadece cihazlar hedefleniyorsanız, iPad'i desteklemezseniz, aynı zamanda deyim-özel modları da devre dışı bırakabilirsiniz.
Optimal Kombinasyon için Up Asset Catalogs for Optimal Import
- [[0)Bir adı Varlık Kataloğu[[Dönetici: 1) Xcode otomatik olarak bir algFLT:3) klasörü oluşturabilirsiniz. modüler bileşen kütüphaneleri için ek kataloglar ekleyebilirsiniz.
- [FONT:0) Attributes Inspector[[Dönetici: 1 ) – Her görüntü setinde doğru Gamut (sRGB veya Ekran P3) ve Promosyon (Automatic, Lostless, veya Modey) için fotoğraf, bir kalite ayarı ile kaybı dramatik bir şekilde azaltılabilir.
- [FONT=0)Enable "Preserve Vector Data" ) - Küresel ikonlar veya UI elemanları için bu ölçek, PDF vektör verilerini tut ve iOS'u çalıştırmada kullanmayı bırakın.Bu, her varış için büyük bir lekeli dosyalar yaratıyor.
- [FONT:0]Leverage Asset Slicing[[Döntilmiş görüntüler için, kapakları ve eğimleri tanımlamak ve kullanılmamış kenar alanları ortadan kaldırılmıştır.
Apple'sFL:0)Asset Kataloğu Belgeleri[Dönetici: 1) Her seçeneğin tükenen bir kılavuzu sunar. Ayrıca WWDC seanslarını gerçek dünya vaka çalışmaları için uygulama büyüklüğü optimizasyonunda izleyin.
Image Promosyon: En Bytes Nerede Kurtarılır
Görüntüler genellikle bir uygulamanın toplam büyüklüğünin% 40-60'ını hesaplar.Malcolnops ile bile, ham görüntü dosyaları sıkıştırma için birincil hedef olarak kalır. format ve sıkıştırma akışı doğrudan son uygulama boyutunu belirler.
Doğru Görüntü Biçimini Seçin
- [DÜDÜ:0)HEIC (Yüksek Verimlilik Görüntü Konteyneri)) - Hedef cihazı desteklediği takdirde yaklaşık% 50 daha küçük dosya boyutunu JPEG'den elde eden iOS-native format.Fotoğraflar ve zengin renkler için kullanın. Xcode, PNGs'i o zaman inşa etmek için dönüştürebilir (iOS 11+)
- [FONT=0)JPEG - Yine de karmaşık fotoğraf görüntüleri için uygun. İyi bir ticaret için% 60-85. kesinlikle gerekli olmadıkça% 100 kullanmayın.
- [FONT=0)PNG[DÜDÜT:1) - Netlik ile UI elemanları için en iyi, ancak 8bit PNG (256 renk) için 8bit PNG (256 renk) kullanarak fotoğraf için PNG kullanmaktan kaçın.
- [FONT:0)WebP[DÜT:1] – İOS'ta yerli olarak desteklenmez, ancak üçüncü taraf kütüphaneler onu kodlayabilir.
İş akışınıza entegre etmek için optimizasyon araçları
Asset Catalogs'a eklemeden önce manuel sıkıştırma, bu araçlarla süreci otomatikleştirmek yerine ortak bir hatadır:
- [FONT=0]ImageOptim[[[Dönetici: 1 ) – PNG, JPEG ve GIF için kayıp ve baskı. It strips metadata ve optimal ölçümleme uygular.Kaynak ekle it on your entire assets before add to the catalog.
- [FONT:0]TinyPNG / TinyJPG) – PNG ve JPEG için akıllı kayıp sıkıştırma kullanan Web tabanlı hizmet. API önceden inşa edilmiş bir senaryoya dahil edilebilir.
- [FONT:0]SVGO (SVG Optimizer)) - vektör varlıklar için, gereksiz görüş verilerini, reddant gruplarını ortadan kaldırır ve kullanılmamış kimlikler. Küçük SVG dosyaları daha küçük çıktılara çevirir.
- [FONT:0) Apple'ın [[Dönetici] komut satırı aracı[[Dönetici:0)[>)[[>)))[[[>))) - görüntüleri doğrudan bir yapım aşamasından kompresyon ayarlarına dönüştürebilir.
Otomatik bir çözüm için, Xcode'da bir koşu senaryo aşaması oluşturmak, tüm yeni eklenen görüntüleri GörüntüOptim veya özel bir senaryo kullanarak sıkıştırır.0)ImageOptim'in resmi sitesi).
Downsampling ve Çözümü Bütçeleme
Tasarımcılar genellikle aşırı kararlarda varlıklar tedarik eder. Örneğin, en büyük görüntü bir iPhone 15 Pro Max (1290 x 2796 piksel ekranı) ihtiyaçlar 3x'te 1290 puandır - bu 3870 pikseldir. herhangi bir görüntü, bu, aile başına tam ekran arka plan görüntülerine göre daha geniş bir şekilde ifade edilir.
Görüntülerin Ötesinde: Kod ve Zengin Kombinasyon
App boyutu, derlenen binerler, çerçeveler, fontlar, ses, video ve veri dosyaları içerir. Her kategori eşsiz optimizasyon stratejileri vardır.
Kod Boyutu Optimizasyonu
- [FONT=0)Enable Dead Code Stripping[[Dönemli: 1) Xcode yapılandırılabilir ayarları: [[FONTD:5) ve [[FONTD:6) Bu, asla çağrılanamayan işlevleri ve yöntemleri ortadan kaldırır.
- [FONT:0)Remove Un used Frameworks[[Dönetici: 1 ) – Çok yaygın bloat kaynağı. UseETHFLT:7 veya Xcode'un raporu navigator statik kütüphaneler ve çerçeveler bulmak için ama asla gerekli olduğunda dinamik çerçevelere geçiş yapmak için.
- [FONT=0]Swift Protokolü ve Genric Özelleştirme) – Swift derleyici her beton türü için kod üretir ve kod çoğaltmayı önlemek için nadiren adlandırılmış işlevleri tercih eder.
- [FONT=0) Hedef-C Kategoriler ve C++ Şablonları[[Dönetici:0) Ayrılma, ikiliyi birbirine bağlayabilirler çünkü kullanımınızı anlık olarak inceleyebilirler.
Ses, Video ve Fonts
- [FONT=0) ISSo[[DÜDÜDÜDÜDÜDÜDÜDÜDÜSÜDÜSÜSÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜye Olmayanlar İçin AAC (Advanced Audio Coding) Kullanın, WAV veya AIFF yerine Apple'ın CAF formatını IMA4 sıkıştırma ile düşünün.
- [FONT:0]Video) - HEVC (H.265) Apple A9 veya daha sonra cihazlar üzerinde destekleniyor.Gücretsiz tüm video varlıkları, dosya boyutunu azaltmak için (projektif değil) ayarlar.
- [FONT=0)Fonts[[Döncüler:0))[[Döncüler için:0)|kullanıcılar (öncükler) veya [[Döncüler)) için, özel fontlar için, alt setler, uygulamanızın aslında kullandığı karakterleri içerir. Tools like [[Ücretsizler) veya [[Döncülükler:2|FontSquirrel'in web font jeneratörü).
- [FONT:0)Data Files (JSON, PLIST, SQLite)[Dönetici:0)[değiştir | kaynağı değiştir], Azure'dan gelen ikili plistleri kullanın. Compress SQLite databases with.FLT:11 ve WAL modlarını daha küçük sayfa boyutlarıyla kullanmayı düşünün.
Gelişmiş Teknikler: İnceleme, On-Demand Kaynakları ve Bitcode
Apple'ın App İnceleme hizmeti, her cihaza özel olarak değişken yükleme paketleri oluşturur. Bir geliştirici olarak, Xcode'da incelik ve biraz kod oluşturmakla incelenebilirsiniz. Sonuç: kullanıcılar sadece ihtiyaç duydukları kaynakları indirin.
Slicing
Xcode'da yer alan App Store, uygulama paketinizin birden fazla versiyonunu üretir:0) Uygulama İnceleme[DÜT:1).
- Cihaz değişkeni - sadece cihazın deyimleri için Varlık Kataloğu varlıklarını içerir (iPhone, iPad).
- GPU değişkeni - Metal veya OpenGL gölgers kullanıyorsanız, sadece uygun versiyon dahil edilir.
- Çözüm değişkeni - sadece gerekli ölçek faktörleri (2x veya 3x) mevcut.
Varlık Kataloğunuzun tüm varyantlarla düzgün bir şekilde yapılandırıldığı zaman otomatik olarak çalışır. doğru bir şekilde katalog olmadan, incelenen kaynakları kaldıramazsınız.Malzeme Kataloğu dışındaki görüntü dosyaları koymadığınızı sağlayın - bunlar asla dilimlemez.
On-Demand Kaynakları (ODR)
ODR, oyun seviyelerini, öğretici görüntüleri veya nadiren Apple'ın sunucularında ses kullanmanıza olanak sağlar. Kullanıcılar bu kaynakları ilk erişime indirmeye çalışır, sonra iOS onları depolamanın düşük olduğunda da otomatik olarak yüklenebilir.Bu, ilk yükleme boyutunu azaltır.The Asset Catalog'daki varlıklarınızı farklı etiketlerle azaltır (e.g., "Level1", "yardım" ve bunları talep etmek için $ 1'i kullanır.
Bitcode ve Relevance
Bitcode, derleme uygulamanızın orta bir gösterimidir. App Store, yeni cihaz aileleri için ikiliyi yeniden optimize edebilir. ancak, Xcode 14, bitcode ([Döneticileri için gerekli değildir) ve bazı uygulamalar uygulama boyutunu doğrudan azaltmanıza olanak sağlar.Uygulamada, uygulamanızda, biraz daha küçük ince varyantlara yol açabilir.
Ölçme ve İzleme App Boyutlarını
Ölçüm olmadan optimizasyon tahmin etmeye yol açıyor. Uygulama boyutunu erken ve sık takip ediyor.
Xcode Reports ve Archive Analysis
- [FONT=0]Ürün → Archive[[Dönetici: 1 ) – Bir arşiv inşa ettikten sonra, Organize pencereyi açın ve inşaınızı seçin. Xcode, her dilime kadar toplam sıkıştırılmamış büyüklükte ve indirme boyutunu gösterir (iPhone, iPad, vb.).
- [FONT=0]App İnceleme Boyutu Raporu[[[Dönetici: 1)[Dönder) ve "Export"e tıklayın ve "App İnceleme Boyut Raporu" seçeneğini seçin. Bu, ODR etiketleri dahil olmak üzere her türlü değişkenin boyutunu kıran bir CSV oluşturur.
- [FONT=0)Link Map File[[Dönetici:0)[[değiştir | kaynağı değiştir] – Bu, her nesne dosyasının ve sembolün boyutunu gösterir. büyük kod segmentlerini ve çerçevelerini tanımlayın.
Üçüncü bölüm Analiz Araçları
- [FONT=0)AppKomnun Boyut Müfettiş (IYGÜN)[0) Uygulama Kodu (Görüngeler, kod, kaynaklar) tarafından görsel boyut bozulması sağlar.
- [FONT:0]In-App Ölçümü[[Dönetici: 1) - Uygulamanızın belge ve önbellek yönetmenlerinizi giriş için [[Döneticileri kullanın.This help detect runtime bloat from download content.
- [FONT:0)Fastlane[[[Dönetici: 1) Automate arşiv nesli ve boyut raporunu parlar.Eğer boyut bir eşiği aşıyorsa inşa edemez.
Bir Akışkanlıklı İş Akışı için En İyi Uygulamalar
String, yukarıda tekrarlanabilir bir boru hattına açıklanan teknikleri bir araya getiriyor. İşte önerilen bir yaklaşım:
- [FONT=0) Tasarım eloff standartları[[Dönetici: 1) Tasarımcıların vektör varlıkları sağlamasını gerektirir (SVG veya PDF) ki, eğer kir kaçınılmazdır.
- [FONT:0)Öyle inşa edilen sıkıştırma aşaması[[Dönetici:0))[Dönetici:0)))))))))))) veya [[Döneticileri için kullanılan bir iş senaryosu (D))
- [FONT=0)Komş her sprint[Döneticileri kontrol edin – Eski sınıfları gözden geçirin ve derleyici optimizasyonlara dönün.Sadece sürüm oluşturmadan kod çıkarın.
- [FONT=0)Enable App İncening ve ODR) – Yürüyüş, ders kitapları ve promosyon videoları gibi büyük ikincil içerik için ODR kullanın.
- [FONT=0]Yönekiz boyut kapısı[Dönetici: 1) CI boru hattınızda, öncekine karşı yeni inşa boyutunu karşılaştırır.Eğer karşılanmamış ikili bir bütçeyi aşırsa (örneğin, 50 MB).
- [[Kategori:0) Kullanıcı merkezli son test[[Dönetici:0)[Dönetici:0))[Dönetici son test[[Dönetici:0)) – Yavaş bir ağ (e.g., 3G throttling) ve sadece 16 GB depolama ile bir cihazda. Ön ekran ve kullanıcı tutma.
Sonuç: Devam eden bir Süreç Olarak Optimizasyon
iOS uygulama boyutunu azaltmak tek bir görev değil, ancak her takım üyesine tasarımcıdan geri dönüş mühendisine dokunan devam eden bir disiplindir.Malcolnlar yapısal temel, sıkıştırma teknikleri, bireysel dosyaları azaltır ve İnceletici Kaynakları ile birlikte uygulamanızı azaltır.Ürünler düzenli olarak ölçümleyin ve bütçeleri ölçerek, bloatın şarj edilmesinden önce gelen etkinin doğrudan değiştirilmesini önler.