Table of Contents
L'importanza crescente di iOS App ottimizzazione
Ogni megabyte di un'applicazione iOS porta peso oltre l'utilizzo del disco. Un'app bloated colpisce i tassi di conversione sull'App Store, aumenta il tempo di primo livello e può spingere gli utenti a disinstallare quando lo storage del dispositivo è basso. Apple ha ottimizzato il limite di download over-the-air a 200 MB, e anche con App Thinning, il binario non compresso influenza ancora la percezione del cliente.
Catalogo delle risorse: Fondazione di Gestione delle risorse efficienti
I Catalogo delle risorse sono il modo standard per organizzare immagini, icone e altre risorse visive da Xcode 5. Essi forniscono un singolo file strutturato () che Xcode utilizza per generare l'output ottimizzato per ogni dispositivo di destinazione. Invece di spargimento dei file PNG sciolti attraverso il modello, li in bundle in un catalogo dove ogni set di immagini può contenere più varianti per diverse scale dello schermo (1x, 2x, 3x), identico.
Come i cataloghi di attività Shrink Your Binary
- Selezione automatica della risoluzione[[] – Solo l'immagine di risoluzione più alta necessaria per un dispositivo è inclusa nel binario finale. Un'applicazione universale in esecuzione su un iPhone XR (2x) non scaricherà la versione 3x della stessa immagine.
- Supporto per il vettore[[] – Le immagini vettoriali PDF o SVG possono essere utilizzate come attività a risoluzione singola. Xcode le rasterizza al momento della costruzione della scala richiesta, eliminando la necessità di più copie PNG.
- Slitta rimozione[ – Quando si utilizza l'affare che si affligge, è possibile rimuovere porzioni invisibili di un'immagine, riducendo la dimensione del file.
- Ripristinazione completa[] – I cataloghi di attività vengono memorizzati come file [] [[[]]]]) nel fascio dell'app, che utilizza un formato di compressione proprietario Apple più efficiente rispetto alla memorizzazione dei singoli PNG.
Per massimizzare questi vantaggi, ogni set di immagini dovrebbe includere solo le scale necessarie. Evitare di includere un'immagine 1x se si sta bersagliando solo dispositivi con display Retina o Retina HD. Allo stesso modo, se la tua applicazione non supporta iPad, è possibile omettere le varianti specifiche di idioma.
Impostazione di cataloghi di asset per compressione ottimale
- Crea un nome Asset Catalog[] – Xcode genera automaticamente una cartella []. È possibile aggiungere cataloghi aggiuntivi per librerie modulari dei componenti.
- Utilizza l'ispettore degli attributi[[[] – Per ogni set di immagini, specificare la corretta Gamut (sRGB o Display P3) e la compressione (Automatic, Lossless o Lossy).Per le fotografie, la compressione perduta con un'impostazione di qualità può ridurre drasticamente le dimensioni.
- Abilita "Preserve Vector Data"[] – Per icone universali o elementi UI che scalano, mantenere i dati vettoriali PDF e lasciare che iOS rasterize in runtime.
- Leverage Asset Slicing[[] – Per pulsanti e immagini allungabili, definire insiemi di cappuccio e slicing in modo che le aree di bordo non utilizzate vengano eliminate.
La documentazione di Apple Asset Catalog[[]] offre una guida esaustiva a ogni opzione.
Compressione immagine: Dove la maggior parte dei Bytes sono salvati
Le immagini spesso rappresentano il 40–60% della dimensione totale di un’app. Anche con i Catalogo delle risorse, i file delle immagini grezze rimangono l’obiettivo primario per la compressione. La scelta del formato e del flusso di lavoro di compressione determinano direttamente la dimensione finale dell’app.
Selezione del formato immagine giusto
- HEIC (High Efficiency Image File Container)[] – formato nativo iOS che offre circa il 50% di dimensione di file più piccola rispetto a JPEG con qualità paragonabile.
- JPEG[] – Ancora appropriato per immagini fotografiche complesse. Utilizzare il livello di qualità 60–85% per un buon trade-off. Mai usare il 100% a meno che non sia assolutamente necessario.
- PNG[] – Migliore per gli elementi UI con trasparenza, ma evitare di usare PNG per le fotografie. Optare per PNG a 8 bit (256 colori) per icone semplici piuttosto che 24-bit.
- WebP[] – Non supportata in modo nativo su iOS, ma le librerie di terze parti possono decodificare.
Strumenti di compressione per integrare il flusso di lavoro
La compressione manuale prima di aggiungere ai Catalogo delle Attività è un errore comune, ma automatizzare il processo con questi strumenti:
- ImageOptim[[] – compressione persa e persa per PNG, JPEG e GIF. Scollega i metadati e applica una quantizzazione ottimale.
- TinyPNG / TinyJPG[[]] – Servizio basato sul Web che utilizza la compressione intelligente per perdite per PNG e JPEG. L'API può essere incorporata in uno script pre-build.
- SVGO (SVG Optimizer)[] – Per le attività vettoriali, rimuovere i dati di viewport inutili, i gruppi ridondanti e gli ID non utilizzati.
- Apple []] strumento riga di comando[[] – Può convertire le immagini in HEIC e regolare le impostazioni di compressione direttamente da uno script di fase di costruzione.
Per una soluzione automatizzata, creare una fase di script di esecuzione in Xcode che comprime tutte le immagini appena aggiunte utilizzando ImageOptim o uno script personalizzato. Ulteriori dettagli su Sito ufficiale di ImageOptim.
Utilizzo di Downsampling e Risoluzione Budgeting
I progettisti spesso forniscono risorse a risoluzioni eccessive. L'attuazione di un bilancio di risoluzione: per esempio, l'immagine più grande di un iPhone 15 Pro Max (1290 x 2796 pixel display) ha bisogno di 1290 punti di larghezza a 3x – che è 3870 pixel. Qualsiasi immagine più ampia di quella è sprecata. Allo stesso modo, considerare downsampling immagini di sfondo a schermo intero per la dimensione massima effettiva necessaria.
Oltre le immagini: Codice e compressione dei beni
Le dimensioni dell'app includono binari compilati, framework, font, audio, video e file di dati.
Ottimizzazione delle dimensioni del codice
- Abilita la rimozione del codice morto[[] – Impostazioni di configurazione di Xcode: [ e . Questo rimuove funzioni e metodi che non vengono mai chiamati.
- Rimuovi i Quadri non utilizzati[[] – Fonte molto comune di bloat. Usa [] o il navigatore di report di Xcode per trovare librerie e quadri statici collegati ma mai utilizzati.
- Protocollo di scambio e specializzazione generica[] – Il compilatore Swift genera codice per ogni tipo di calcestruzzo. Evitare l'uso generico estremo e preferiscono su funzioni raramente chiamate per prevenire la duplicazione di codice.
- Minimizzare le categorie Obiettivo-C e i modelli C++[ – Entrambi possono bloat il binario perché possono essere istanziati molte volte.
Comprimere Audio, Video e Fonts
- Audio[] – Utilizzare AAC (Advanced Audio Coding) invece di WAV o AIFF. Per brevi effetti sonori, considerare il formato CAF di Apple con compressione IMA4. Convertire da fonti ad alto bitrate utilizzando .
- Video[ – HEVC (H.265) è supportato su dispositivi con Apple A9 o versioni successive. codificare tutti i beni video utilizzando HEVC e sintonizza per lo streaming (non trasmesso) per ridurre le dimensioni dei file. Se si mirano a dispositivi più vecchi, fornire un ritorno a H.264 ma limitarne il bitrate.
- Fonts[] – Utilizzare i font del sistema quando possibile. Per i font personalizzati, sottoimpostarli per includere solo i caratteri che la tua app utilizza in realtà. Strumenti come (da fonttools) o ] Il generatore di font web di FontSquirrel può produrre file di font minimi.
- Data Files (JSON, PLIST, SQLite)[] – Rimuovere lo spazio bianco e commenti da JSON durante la costruzione. Utilizzare liste binarie invece di XML. Comprimere database SQLite con e considerare l'utilizzo della modalità WAL con dimensioni pagina più piccole.
Tecniche avanzate: App Thinning, On-Demand Risorse, e Bitcode
Il servizio App Thinning di Apple crea automaticamente pacchetti di installazione variante su misura per ogni dispositivo. Come sviluppatore, si abilita App Thinning configurando slicing e bitcode in Xcode. Il risultato: gli utenti scaricano solo le risorse di cui hanno bisogno.
Affettare
Quando si attiva App Thinning[] in Xcode, l'App Store genera più varianti del bundle app:
- Dispositivo-variante – include solo le attività del Catalogo Asset per l’idioma del dispositivo (iPhone, iPad).
- variante GPU – se si utilizza Metal o OpenGL shaders, solo la versione appropriata è inclusa.
- Variante di risoluzione – sono presenti solo i fattori di scala necessari (2x o 3x).
La licenza funziona automaticamente quando il tuo Catalogo di attività è configurato correttamente con tutte le varianti. Senza un catalogo correttamente impostato, la slicing non può rimuovere risorse non utilizzate. Assicurarsi di non aver messo i file di immagine allentati al di fuori del Catalogo di attività – quelli non sono mai tagliati.
Risorse on-Demand (ODR)
ODR ti permette di ospitare livelli di gioco, immagini tutorial o audio raramente utilizzati sui server di Apple. Gli utenti scaricano queste risorse sul primo accesso, quindi iOS può eliminarle quando lo storage è basso. Questo riduce notevolmente la dimensione iniziale di installazione. Tag i tuoi beni nel Catalogo delle risorse con diversi tag (ad esempio, "Level1", "Tutorial") e utilizzare per richiederli.
Bitcode e la sua importanza
Bitcode è una rappresentazione intermedia della tua app compilata. L'App Store può riottizzare il binario per le architetture future del processore. Abilitare bitcode ([) non riduce direttamente la dimensione dell'app, ma consente a Apple di applicare le ottimizzazioni non disponibili allo sviluppatore. In pratica, bitcode può portare a varianti sottili leggermente più piccole per le nuove famiglie del dispositivo. Tuttavia, come Xcode 14, applicazioni bitcode non è più necessario per vedere
Misura e monitoraggio Dimensioni App
L'ottimizzazione senza misura porta a indovinare. Integrare il monitoraggio delle dimensioni delle app presto e spesso.
Xcode Reports e analisi archivio
- Product → Archive[[] – Dopo aver costruito un archivio, aprire la finestra dell'organizzatore e selezionare la vostra build. Xcode mostra dimensioni e dimensioni non compresse totali.
- App Thinning Size Report[[] – Nell'organizzatore, fare clic su "Esporta" e scegliere "App Thinning Size Report", che genera un CSV che rompe le dimensioni di ogni variante, compresi i tag ODR.
- Link Map File[]] – Generare un file di mappa impostando []. Questo mostra le dimensioni di ogni file e simbolo di oggetto.
Strumenti di analisi di terze parti
- AppCode’s Size Inspector[] (JetBrains) – Fornisce una ripartizione delle dimensioni visive per categoria (immagini, codice, risorse).
- In-App Measurement[] – Usa per registrare le directory di documenti e cache della tua app.
- Fastlane[[] – Automatizzare la generazione di archivi e eseguire uno script personalizzato che parses the size report.
Migliori Pratiche per un flusso di lavoro semplificato
String insieme le tecniche sopra descritte in un condotto ripetibile. Ecco un approccio raccomandato:
- Progetto standard di consegna[[] – Richiedere progettisti per fornire beni vettoriali (SVG o PDF) a meno che il raster non sia inevitabile.
- Primo passo di compressione [[] – Utilizzare una fase di script di esecuzione per comprimere tutte le immagini in arrivo con [ o ]. Questo può essere integrato con API di sviluppo di TinyPNG[] per PNG/JPEG.
- Codice audit ogni sprint[[] – Review frameworks linked, delete obsoleti classi, e attivare le ottimizzazioni dei compilatori.
- Abilita app Thinning e ODR[[]] – Utilizzare ODR per grandi contenuti secondari come walkthrough, tutorial e video promozionali.
- Cancello di dimensione regolare[[ – Nel vostro canale CI, confrontare la nuova dimensione di costruzione rispetto al precedente. Avvertire il team se il binario non compresso supera un budget (ad esempio, 50 MB per l'app di base).
- User-centric test finale[[[] – Testare l'esperienza di download su una rete lenta (ad esempio, 3G throttling) e su un dispositivo con solo 16 GB di storage.
Conclusione: Ottimizzazione delle dimensioni come processo in corso
Ridurre le dimensioni dell'app iOS non è un compito unico ma una disciplina continua che tocca ogni membro del team dal designer al backend ingegnere. I cataloghi di asset forniscono la fondazione strutturale, le tecniche di compressione si restringono i singoli file, e App Thinning combinato con On-Demand Resources personalizza la consegna per dispositivo. Misurando le dimensioni e rafforzando i budget, si impedisce bloat dall'accumulazione.