Jedes Jahr bringt Apple ein neues iPhone auf den Markt, bei dem der Arbeitsspeicher und der Hauptspeicher schrittweise vergrößert werden, um dem Chip mehr Leistung zu verleihen. Schon heute können Sie auf dem iPhone 15 Konsolenspiele wie „Resident Evil 4“ ausführen. Und es stellt sich möglicherweise die logische Frage: Soll ich die Größe meiner Anwendung optimieren oder kann ich nicht mehr Zeit damit verbringen?
Kurz gesagt: Es lohnt sich immer noch, die Größe zu optimieren. In diesem Artikel habe ich Gründe zusammengestellt, warum dies so wichtig ist, und einige nützliche Optimierungsmethoden bereitgestellt.
Beginnen wir also mit der banalsten Antwort auf die Frage „Warum ist Größe wichtig?“ - Die Einschränkungen des App Store. App Store Connect erlaubt Ihnen einfach nicht, eine Datei herunterzuladen, die die angegebene Größenbeschränkung überschreitet.
Stellen Sie bei iOS- und tvOS-Apps sicher, dass Ihre App die maximale Dateigröße auf den unterstützten Betriebssystemen nicht überschreitet. Die gesamte unkomprimierte Größe Ihrer App muss weniger als 4 GB betragen.
Apple Watch-Apps müssen weniger als 75 MB groß sein. Darüber hinaus darf jede ausführbare Mach-O-Datei – zum Beispiel app_name.app/app_name – diese maximalen Dateigrößen nicht überschreiten.
Verknüpfung
Die spezifischen Dateien, auf die sie sich beziehen, könnten etwas verwirrend sein. Um dies besser zu verstehen, gehen wir den Prozess der Übermittlung Ihrer Bewerbung an den App Store Connect durch.
Der erste Schritt besteht darin, ein Archiv zu erstellen. Dieses Archiv speichert eine Sammlung von Build-Artefakten und zugehörigen Informationen für eine iOS-, macOS-, watchOS- oder tvOS-App.
Wir haben die Möglichkeit zu prüfen, was genau und in welcher Form im Archiv enthalten ist.
Unter den Hauptdateien finden Sie:
Produktordner mit Ihrer App;
dSYMs (kurz für „Debugging-Symbole“), von Xcode generierte spezielle Dateien mit den zum Debuggen erforderlichen Informationen, kurz Absturzprotokolle;
Info.plist;
Übrigens kann die Anwendungsdatei auch mit „Paketinhalt anzeigen“ geöffnet werden. Unter den Dateien finden Sie ausführbare Dateien und CodeResources, ein Ergebnis der Codesignatur. Es verfolgt die digitalen Signaturen verschiedener Anwendungsressourcen (Bilder usw.).
Wenn Sie zu Xcode zurückkehren, steht Ihnen nach dem Generieren des Archivs die Schaltfläche Distribute App
zur Verfügung. In diesem Stadium wird .xcarchive zu .ipa .
Eine .ipa- Datei kann man sich als komprimiertes Paket vorstellen, das einen „Payload“-Ordner enthält. In diesem „Payload“-Ordner befindet sich das wesentliche „YourApp.app“-Paket. Im Paket „.app“ finden Sie alle wichtigen Komponenten Ihrer Anwendung, einschließlich Ressourcen wie
Darüber hinaus enthält es Code-Signatur-Ressourcen, um die Integrität und Sicherheit der App zu gewährleisten.
Um sich das Innere Ihrer .ipa- Datei anzusehen, klicken Sie auf „Nach der Verteilung Export
“, konvertieren Sie den Typ von .ipa in .zip und extrahieren Sie ihn einfach.
Zusammenfassend lässt sich sagen, dass die IPA- Datei die gepackte Anwendung ist, die Endbenutzer auf ihren iOS-Geräten installieren, während das .xcarchive ein entwicklerorientiertes Archiv ist, das verschiedene Assets und Build-Informationen für die Anwendung enthält.
Die .ipa-Datei wird zur Verteilung verwendet, während die .xcarchive-Datei für Debugging-, Archivierungs- und Weiterentwicklungszwecke verwendet wird. Die ausführbare Datei hingegen ist der zentrale Code, der die Funktionen der App ausführt und im .ipa- Paket enthalten ist.
Somit lassen sich die Einschränkungen des AppStores wie folgt veranschaulichen.
OS Version | .ipa-Größe | .ipa -> Nutzlast -> App -> Exe-Größe |
---|---|---|
iOS 9.0 und höhertvOS 9.0 und höher | 4GB | 500 MB |
iOS 7.X bis iOS 8.X | 2 GB | 60 MB |
Um jedoch die Größe Ihrer endgültigen Anwendung abzuschätzen, also wie viele Bytes ein bestimmter Benutzer auf seinem Gerät installieren muss, sind zusätzliche Aktionen erforderlich, nämlich die Erstellung eines Berichts zur App-Größe. Die Dokumentation beschreibt das Verfahren zum Erstellen gut, daher lasse ich eine
Der nächste Grund, über die Größe Ihrer Anwendung nachzudenken, ist … wieder der AppStore, aber jetzt sprechen wir nicht über Systembeschränkungen, sondern über die Download-Geschwindigkeit . Hier ist alles klar: Je kleiner die Größe, desto höher die Rate.
Darüber hinaus gibt es eine Grenze von 200 MB, bei deren Erreichen Benutzer eine Verbindung zu einem Wi-Fi-Netzwerk herstellen müssen, um die App zu installieren. Die Verzögerung kann Benutzer abschrecken und zu höheren Abbruchraten führen.
Die App Store-Such- und Erkennungsalgorithmen von Apple bevorzugen häufig kleinere Apps, da sie für Benutzer einfacher herunterzuladen und auszuprobieren sind. Kleinere App-Größen können möglicherweise die Sichtbarkeit Ihrer App in Suchergebnissen und Empfehlungen verbessern.
Sobald die App auf dem Gerät installiert ist, spielt ihre Größe immer noch eine Rolle. Kleinere Apps werden schneller gestartet und bieten so ein besseres Benutzererlebnis. Wenn eine App den Speicher optimiert, trägt sie zu einer längeren Akkulaufzeit, einer Reduzierung des App-Fußabdrucks und einem guten Gerätezustand bei. Je mehr Menschen mit dem iPhone zufrieden sind, desto mehr potenzielle Nutzer haben Sie.
Es gibt einige einfache Tipps, um zu vermeiden, dass die Größe Ihrer Anwendung während der Entwicklung unnötig vergrößert wird. Die erste davon ist die bewusste Arbeit mit Bildern.
Wählen Sie zunächst HEIC anstelle von JPEG. HEIC bietet Dateien, die im Vergleich zu JPEG um 50 Prozent kleiner sind, bei gleichbleibender Bildqualität. Dadurch verringert sich der Speicherplatz auf Ihrem Gerät. Kleinere Dateien lassen sich einfacher über Netzwerke übertragen und schneller laden und auf der Festplatte speichern.
HEICs unterstützen Bildtransparenz und die Möglichkeit, Zusatzbilder mit Tiefen- und Disparitätsinformationen zu speichern. Es unterstützt verlustfreie Komprimierung und ermöglicht die Speicherung mehrerer Bilder in einem einzigen Container.
Versuchen Sie zweitens, SVG (ein XML-basiertes Vektorbildformat zur Anzeige zweidimensionaler Vektorgrafiken) anstelle von PDF und PNG zu übernehmen. Im Gegensatz zu Rasterbildern weisen Vektorgrafiken typischerweise kleinere Dateigrößen auf, da sie durch mathematische Gleichungen gekennzeichnet sind, die Formen und Kurven definieren, anstatt einzelne Pixel zu speichern.
Zunächst mussten 3 Bilder mit Präfixen (für jede Pixeldichte) hinzugefügt werden. Dann wurde PNG-Unterstützung hinzugefügt (= Vektorbild mit einer bestimmten Größe), aber es funktionierte immer noch auf der Ebene „3 PNGs aus PDF ausschneiden, wenn wir das Projekt zusammenstellen“.
Und erst dann wurde es möglich, SVG zu verwenden + das Kontrollkästchen „Vektordatum verwenden“ in den Asset-Katalog aufzunehmen, wodurch die Größe der verwendeten Bilder wirklich reduziert wurde und die Möglichkeit einer unendlichen Skalierung ohne Qualitätsverlust hinzugefügt wurde.
Drittens: Nutzen Sie die Möglichkeiten von Asset Catalogs optimal aus. Asset-Kataloge bieten einen benutzerfreundlichen Speicher für mehrere Auflösungen desselben Bildes. Darüber hinaus speichern Kataloge alle Bildressourcen in einem einzigen optimierten Format mit Metadaten anstelle einzelner Dateien.
Dadurch kann der App Store nur die für das jeweilige Gerät erforderlichen Ressourcen bereitstellen. Dies führt zu einer Erhöhung der Download-Geschwindigkeit und wir wissen bereits, dass Benutzer nicht gerne warten.
Es ist möglich, die Ressource auf „On-Demand“ zu setzen, d. h. die Ressource wird nur bei Bedarf auf das Gerät heruntergeladen und nach einiger Zeit der Nichtbenutzung entfernt.
Vergessen Sie nicht, dass Sie über einen riesigen Katalog „kostenloser“ Bilder verfügen – SF Symbols . Apple arbeitet ständig an der Erweiterung der Charaktere und bietet die Möglichkeit, Farben und sogar Animationen anzupassen.
Bei Bildern und anderen grafischen Ressourcen scheint also alles klar zu sein – wir verwenden die richtigen Formate und fügen über die Assets einen Katalog hinzu. Es besteht immer die Möglichkeit, keine großen Ressourcen in die Endmontage einzubeziehen, sondern sie bei Bedarf einfach aus dem Internet hochzuladen. Lassen Sie uns nun über den Code und die Verwendung von Bibliotheken sprechen.
Ich möchte Sie kurz an die Verlinkung erinnern. Es gibt zwei Arten davon: statisch und dynamisch.
| Statisch | Dynamisch |
---|---|---|
Wenn eine Verknüpfung erfolgt | Bauzeit | Laufzeit |
Wo Abhängigkeiten gespeichert werden | In der endgültigen ausführbaren Datei | In separaten dynamischen Bibliotheken |
Wie Abhängigkeiten geteilt werden | Die gleiche Kopie wird von allen Instanzen der App verwendet | Jede Instanz der App verfügt über eine eigene Kopie |
Wie Aktualisierungen von Abhängigkeiten gehandhabt werden | Erstellen Sie die App neu | Aktualisieren Sie die dynamische Bibliothek |
Entsprechend dem Thema dieses Artikels ist uns die Speicherung von Abhängigkeiten besonders wichtig, und die dynamische Verknüpfung scheint unser Favorit zu sein.
Dynamische Bibliotheken sind nicht statisch mit Client-Apps verknüpft. Sie werden nicht Teil der ausführbaren Datei. Stattdessen können dynamische Bibliotheken in eine App geladen (und verknüpft) werden, entweder wenn die App gestartet wird oder während sie ausgeführt wird.
Verknüpfung
Um es kurz zu machen: Die Entscheidung für dynamische Bibliotheken gegenüber statischen Bibliotheken führt zu kleineren App-Dateigrößen und einer geringeren anfänglichen Speichernutzung. Dennoch ist es wichtig, ein Gleichgewicht zu finden und den übermäßigen Einsatz dynamischer Bibliotheken zu vermeiden, da dies zu einer Leistungsverzögerung beim Start der App führen kann.
Apple empfiehlt außerdem, in Ihrer App eine modulare Codebasis ( SPM ) zu erstellen, die sich als praktisch erweisen kann, wenn Sie Code mit anderen Zielen, beispielsweise App Clipps, teilen.
Swift Package Manager bietet eine optimierte und native Möglichkeit, Abhängigkeiten in Ihren Swift-Projekten zu verwalten.
Eine der effektivsten Möglichkeiten, die Größe Ihrer App zu reduzieren, besteht darin, alle unnötigen Dateien zu entfernen. Bei diesen zusätzlichen Dateien kann es sich beispielsweise um Read.me-Dateien oder übrig gebliebene Bilder handeln. Tatsächlich haben wir ganz am Anfang des Artikels, als wir herausgefunden haben, was eine .ipa ist, bereits gelernt, wie man alle Dateien findet, die in den AppStore gelangen: .ipa -> .zip -> App -> Paket anzeigen Inhalt.
Finden Sie alle Ressourcen heraus, die Sie nicht benötigen, und löschen Sie sie gerne aus Ihrer App.
Nur um es auf den Punkt zu bringen. Es gibt dennoch einige wichtige Gründe, warum wir die Größe unserer App im Auge behalten sollten:
Und es gibt einige Methoden, um die App-Größe zu reduzieren:
Vergessen Sie es also bei Ihrer Routineentwicklung nicht. Werde jeden Tag schlauer 🙃