Table of Contents
החשיבות הגוברת של iOS App Size Optimization
כל מגה-ביטה של אפליקציית iOS נושאת משקל מעבר לשימוש בדיסק. אפליקציה נפוחה משפיעה על שיעורי המרה בחנות App, מגבירה את זמן-ל-להגות ראשונה, ויכולה לדחוף משתמשים להתקנה כאשר אחסון המכשיר פועל נמוך. Apple הפחיתה את הגבלת ההורדה האווירית ל-200 MB, ואפילו עם נספח, ההשפעות בינאריות עדיין לא מחוספסות של לקוחות.
קטלוג נכסים: הקרן לניהול משאבים יעיל
קטלוג נכסים הם הדרך הסטנדרטית לארגן תמונות, סמלים ומשאבים חזותיים אחרים מאז Xקוד 5.הם מספקים קובץ יחיד, מובנה (IRFLT:0) כי Xcode משתמש כדי לייצר פלט מותאם לכל מכשיר מטרה. במקום לפזר קבצים PNG רופפת על פני הפרויקט שלך, אתה אורז אותם לתוך קטלוג שבו כל תמונה יכולה להחזיק גרסאות מרובות עבור קשקשים שונים (1x, 2x, פורמט מקורי), iPad (מכשירים מקוריים, iPad) ו- iPhone (DOS), iPad).
כיצד קטלוג נכסים מנקה את בן/בת הזוג שלך
- (FLT:0) בחירה של פתרון אוטומטית (Automatic resolution Selection) 1 - רק התמונה הרזולוציה הגבוהה ביותר הנדרשת למכשיר נכללת ב-B בינארי הסופי. אפליקציה אוניברסלית הפועלת על אייפון XR (2x) לא תסיר את גרסת ה-3x של אותה תמונה.
- (FLT:0) Vector Asset SupportFLT:1 - PDF או תמונות וקטור SVG ניתן להשתמש כנכסים חד-פעמיים. Xcode מדגימה אותם בהקמה של זמן להיקף הנדרש, תוך חיסול הצורך במגוון עותקים של PNG.
- (ב) כאשר אתה משתמש בקידוד נכסים, אתה יכול להסיר חלקים בלתי נראים של תמונה, צמצום גודל הקובץ.
- (ב) ,0) אחסון אחסון של נכסים 1 (FLT:0) מאוחסנים כקובץ דחיסה של ה-FLT:1 (FLT:2) בחבילת האפליקציה, אשר משתמש בפורמט דחיסה של Apple-proprietary יותר יעיל מאשר אחסון של PNGs בודדים.
כדי למקסם את היתרונות האלה, כל תמונה להגדיר צריך לכלול רק את המאזניים הדרושים. להימנע כולל תמונה 1x אם אתה מכוון רק מכשירים עם רטינה או רטינה HD תצוגות.
קביעת קטלוג נכסים להורדת Optimal Compression
- (ב) ,0) לעיין בקטלוג נכסים (FLT:1 ), Xcode יוצר באופן אוטומטי תיקיה (FLT 3: 3 ).
- (FLT:0) השתמש במפקחים של ה- Attributes: 1) עבור כל תמונה להגדיר, לציין את הגמול הנכון (sRGB או להציג P3) ו Compression (Automatic, אובדן או אובדן).
- (FLT:0) ניתן "לשמור נתונים וקטור"(Preserve Vector Data)"(Preserve Vector Data)"(Preserve Vector Data)"(Preserve Vector Data)"(Preserve Vector Data)"(ה)"For Universal icons or UI Elements That scale, Keep the PDF and let the iOS rasterize at Runtime.
- (ב) [ה]] ל[דרוש מקור] [ב]] [ב]] [ב[[המאה ה-20], [ה[[1924]]], ו[[המאה ה-20]], ו[[1924]],]]
אפל (FLT:0) תיעוד קטלוג של אפל 1FLT מציע מדריך ממצה לכל אפשרות, כמו כן לצפות בפגישות WDC על אופטימיזציה בגודל של יישומים עבור מחקרים אמיתיים.
צילום: Where Most Bytes Are Saved
תמונות לעתים קרובות מהוות 40-60 אחוזים מהגודל הכולל של אפליקציה.גם עם קטלוגים של נכסים, קבצי תמונות גולמיות נשארים המטרה העיקרית לדחיסה.בחירה של פורמט ודחיסה של זרימת העבודה ישירות לקבוע את גודל האפליקציה הסופי.
בחירת תבנית התמונה הנכונה
- (FLT:0)heIC (High Efficiency Image File Container)FLT:1 - פורמט iOS-native המציע בערך 50% גודל הקובץ קטן יותר מ JPEG עם איכות דומה.שימוש בתמונות וצבעים עשירים. Xcode יכול להמיר PNGs כדי HEIC בעת בניית זמן אם המכשיר תומך בו (iOS 11+).
- (FLT:0)JPEGIRFLT:1 - עדיין מתאים לתמונות צילום מורכבות. השתמש ברמת איכות 60-85% עבור סחר טוב.
- (FLT:0)PNGIRLT:1 ; הטוב ביותר עבור אלמנטים UI עם שקיפות, אבל להימנע משימוש PNG עבור תמונות. Opt עבור 8 סיביות PNG (256 צבעים) עבור סמלים פשוטים ולא 24bit.
- (ב) ,0WebPigFLT:1) - לא נתמך על ידי iOS, אבל ספריות של צד שלישי יכולות לפענח אותו.
כלי דיכוי כדי לחדור לתוך זרימת העבודה שלך
דחיסה ידנית לפני הוספת קטלוג נכסים היא טעות נפוצה.במקום, להתאים את התהליך עם כלים אלה:
- (FLT:0) ImageOptimigmFLT:1 - דחיסה חסרת אובדן והפסד עבור PNG, JPEG ו- GIF.It פס metadata ויישם קוונטיזציה אופטימלית.ריץ אותו על התיקיה שלך לפני הוספת הקטלוג.
- (FLT:0)TinyPNG / TinyJPGPGFIRLT:1) - שירות מבוסס אינטרנט המשתמש דחיסה אובדן חכם עבור PNG ו- JPEG. ה- API יכול להיות משולב לתוך תסריט טרום-בנייה.
- (FLT:0SVGO (SVG Optimizer)OVAFLT:1) - עבור נכסים וקטוריים, להסיר נתונים מיותרים של תצוגה, קבוצות מחוספסות, ותעודות זהות קטנות יותר SVG מתרגמים לתפוקה קטנה יותר.
- (ב) [15] ,5 ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
עבור פתרון אוטומטי, ליצור שלב תסריט רצוף ב- Xcode המחסן את כל התמונות החדשות באמצעות ImageOptim או תסריט מותאם אישית.
שימוש ב- Downsampling and Decision Budgeting
מעצבים לעתים קרובות לספק נכסים בהחלטות מוגזמות.מיישם תקציב החלטה: לדוגמה, התמונה הגדולה ביותר אייפון 15 Pro מקס (1290 x 2796 פיקסל להציג) הצרכים היא 1290 נקודות רחב ב 3x - כלומר 3870 פיקסלים. כל תמונה רחבה יותר מאשר זה מבוזבז. בדומה, לשקול ירידה תמונות רקע מסך מלא לממד המקסימלי הנדרש בפועל.
תמונות: קוד ודיכוי נכסים
גודל האפליקציה כולל בינאריות, מסגרות, גופן, אודיו, וידאו וקבצי נתונים.לכל קטגוריה יש אסטרטגיות אופטימיזציה ייחודיות.
המונחים: code Size Optimization
- (ב) ,5 ,5 , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) [ה] [ה]] [ה]]], מקור נפוץ מאוד של נפיחות. השתמש ב- 7 או דוח קוד על מנת למצוא ספריות ומסגרות סטטיות הקשורות אך מעולם לא השתמשו בהן.
- (ב) [הפרוטוקול]:0 [הפרוטוקול] ו- Generic SpecializationFLT:1] – המאגד סוויפט יוצר קוד לכל סוג קונקרטי.
- (FLT:0) ,100 קטגוריות אובייקטיביות ו- C++ תבניותsphsFLT 1:1 - שניהם יכולים לקרוע את בינארי כי הם יכולים להיות מיידיים פעמים רבות.
עקבו אחרי Audio, Video and Fonts
- (FLT:0)AudioveFLT:1) - השתמש ב-AAC (המתקדמים אודיו Coding) במקום WAV או AIFF. for Short Voice Effects, שקול את פורמט CAF עם IMA4 דחיסה.
- (FLT:0)VideoigtureFLT:1 ; HEVC (H.265) נתמך על מכשירים עם Apple A9 או מאוחר יותר. Encode את כל נכסי הוידאו באמצעות HEVC וכוונון עבור הזרמת (לא שידור) כדי להפחית את גודל הקובץ.אם מיקוד מכשירים ישנים יותר, לספק H.264 נפילה אבל להגביל את ה bitrate שלה.
- (ב) (ב) ,0) ,(FontsFLT:1) - השתמש בפונטים של מערכת כאשר ניתן. עבור גופנים מותאמים אישית, מצע אותם לכלול רק את הדמויות שהאפליקציות שלך משתמשות בפועל.
- (ב) [ה]:0] קבצים (JSON, PLIST, SQLite)FLT:1 - Remove Whitespace and Notes from JSON במהלך הבנייה. השתמש ב- Bary plists במקום XML.compress SQLite מסדי נתונים עם קונסולת 11 וחשב באמצעות מצב WAL עם גדלים בעמוד קטן יותר.
טכניקות מתקדמות: App Thinning, On-Demand Resources, ו- bitcode
שירות App Thinning של Apple יוצר באופן אוטומטי חבילות התקנה וריאנט המותאמות לכל מכשיר.כמפתח, אתה מאפשר App Thinning על ידי תצורת סליקה ו bitcode ב Xcode. התוצאה: משתמשים רק להוריד את המשאבים שהם באמת צריכים.
Slicing
כאשר אתה מאפשר ל-FLT:0 (ראה להלן) ב- Xcode, חנות האפליקציות מייצרת גרסאות מרובות של חבילת האפליקציות שלך:
- השחלות של המכשיר - כולל רק נכסים של קטלוג נכסים עבור ה-iPhone, iPad.
- GPU - אם אתה משתמש מתכת או OpenGL צלrs, רק את הגרסה המתאימה נכלל.
- וריאנטת החלטות – רק הגורמים המשתנים הדרושים (2x או 3x) נמצאים כיום.
החלת עבודה באופן אוטומטי כאשר קטלוג הנכסים שלך מוגדר כראוי עם כל הגרסאות.ללא קטלוג מוגדר כראוי, סליקה לא יכול להסיר משאבים לא בשימוש.לוודא שלא התקנת קבצים תמונות רופפת מחוץ לקטלוג הנכסים - אלה לעולם לא פורקו.
על משאבים (ODR)
(אוDR מאפשר לך לארח רמות משחק, תמונות הדרכות, או לעתים רחוקות בשימוש אודיו בשרתים של אפל.משתמשים להוריד את המשאבים האלה על גישה ראשונה, אז iOS יכול לטהר אותם כאשר האחסון נמוך.זה מפחית באופן דרמטי את גודל ההתקנה הראשוני.com הנכסים שלך בקטלוג הנכסים עם תגים שונים (למשל, "רמה1", "Tuel1", "Tutorial") ולהשתמש בהם כדי לבקשה ODR יכול להיות מודגש באופן אוטומטי על ידי יישום של אפל.
Bitcode and Its Relevance
Bitcode הוא ייצוג ביניים של האפליקציה המקובצימת שלך.App Store יכול לשחזר את בינארי עבור ארכיטקטורות מעבד עתידי. Enabling bitcode (FLT:13) לא להפחית את גודל האפליקציה ישירות, אבל זה מאפשר ל-Apple ליישם אופטימיזציה לא זמין למפתח.In בפועל, bitcode יכול להוביל לגרסאות קטנות במקצת עבור משפחות חדשות מכשיר.
מדידה והערכה של גודל
אופטימיזציה ללא מדידה מובילה לנחשות. גודל אפליקציה Integrate מעקב מוקדם ולעתים קרובות.
Xcode דוחות וניתוח הארכיון
- (FLT:0) מוצר (ארכיון) 1 (לאחר בניית ארכיון, פתח את החלון המארגנת ובחר את הבניין שלך. Xcode מראה גודל לא מודחק לחלוטין וגודל ההורדה לתוך כל פרוסה (iPhone, iPad וכו ').
- (FLT:0App Thinning Size ReportFLT:1) - במארגן, לחץ על "Export" ובחר "App Thinning Size Report" זה יוצר CSV אשר שובר את גודל כל גרסה, כולל תגי ODR.
- (ב) [ה]ה']: [ה'], [ה']'[ה]', [ה']'[ה']'[ה]'[ה]']'[ה']'[ה]']'[ה']'[ה']'[ה']'[ה']']''[ה']'[ה']'[ה'[ה']']'[ה'[ה']']'[ה']']'[ה'[ה'[ה'[ה'[ה'[ה']']'[ה'[ה'[ה'[ה']']']']'[ה']']'[ה'[ה'[ה'[ה']']']']']'[ה'[ה']']'[ה'[ה'[ה'[ה']']'[ה']']'[ה'[ה'[ה'[ה']'[ה']']'[ה'[ה'[ה']'[ה'[
כלי ניתוח צד שלישי
- (ב) ,0) ,(המפקח על גודלו של נספח 1 (JetBrains) - מספק התמוטטות בגודל חזותי על ידי קטגוריה (תמונות, קוד, משאבים).
- (ב) [15] ,9.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.
- (ב) ,0) ,FastlaneFLT:1 - דור ארכיון אוטומטי ולנהל תסריט מותאם אישית המשווה את הדו"ח בגודל.
Best Practices for a Streamlined Workflow
שילוב הטכניקות המתוארות לעיל לתוך צינור חוזר.כאן היא גישה מומלצת:
- (FLT:0)עיצוב תקני ההנעה של קונסולת 1 - נדרשים מעצבים לספק נכסים וקטוריים (SVG או PDF) אלא אם כן סטר הוא בלתי נמנע.
- (ב) [ה]ה'] ב'[[1924]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]]]]]]
- (FLT:0) ביקורת כל ⁇ FLT:1 - סקירה מסגרות מקושרות, למחוק שיעורים מיושנים, והפך אופטימיזציה של מפרש.
- (FLT:0) ניתן לייחס ול-ODRFIRLT:1) – השתמש ב-ODR עבור תוכן משני גדול כגון Walkthroughs, הדרכות וסרטונים פרסומיים.
- (FLT:0) ,Rregular size GateveFLT:1 - בצנרת CI שלך, להשוות את גודל הבנייה החדש נגד הקודם, מזהיר את הצוות אם בינארי לא מדוכא עולה על תקציב (למשל, 50 MB עבור יישום הבסיס).
- (FLT:0User-centric testFLT:1) - בדוק את חוויית ההורדה ברשת איטית (למשל, 3G throttling) ועל מכשיר עם רק 16 GB של אחסון.
מסקנה: אופטימיזציה של גודל כתהליך מתמשך
הקטנת גודל אפליקציית iOS אינה משימה חד פעמית, אלא משמעת מתמשכת נוגעת כל חבר צוות ממעצב כדי להחזיר מהנדס.קטלוג הנכסים לספק את הבסיס המבני, טכניקות דחיסה מכווץ קבצים בודדים, ו App Thinning בשילוב עם משאבים על-Demand להתאים אישית את המשלוח למכשיר.על ידי מדידה של גודל באופן קבוע ואכיפת תקציבים, אתה מונע נפיחות מתוספתן הוא מוחשי: הורדות מהירות יותר, הורדת מחירים מיידיות של קבצים, והורדת ביצועים, כדי להפוך את האפליקציות שלך, כלומר, כלומר, לחץ על ידי הפעלת לחץ על גודל האחסון שלך, הוא פחות סטנדרטי, הוא פחות.