שילוב אנימציות Lottie באפליקציות מובייל דורש אופטימיזציה קפדנית. המהנדסים המוסמכים שלנו מבטיחים אינטגרציה חלקה. מעצב העביר קובץ .json מ-After Effects באמצעות תוסף Bodymovin. הוספנו LottieAnimationView ב-layout, ציינו את נתיב הקובץ — נראה מוכן. בפועל, בדיקות ראשונות הראו: האנימציה מגמגמת ב-Xiaomi עם Android 9, לא מופעלת ב-Samsung עם API 21, וב-iOS צורכת 40 MB של זיכרון במסך טעינה בודד. ללא ניסיון באינטגרציה, איתור באגים כאלה לוקח ימים. לשילוב Lottie ב-iOS, השתמשו ב-LottieAnimationView; באנדרואיד, גם השתמשו ב-LottieAnimationView. המהנדסים שלנו עם ניסיון של 10+ שנים פתרו בעיות דומות ב-40+ פרויקטים. עלות טיפוסית נעה בין $200 ל-$800 בהתאם למורכבות.
טעויות נפוצות בשילוב Lottie
ראשית, שימוש ב-JSON לא מותאם. מעצבים מייצאים לעיתים קרובות אנימציות עם שכבות מיותרות, נכסים לא בשימוש, ותמונות רסטר (base64) בתוך הקובץ. גודל טיפוסי של אנימציה כזו: 800 KB–2 MB. ניתוח JSON כזה על ה-main thread גורם לעיכוב ניכר בהפעלה קרה — עד 200 ms במכשירים בינוניים.
שנית, התעלמות מיכולות החומרה. האצת חומרה של Lottie באנדרואיד היא קריטית לביצועים חלקים. אפקטים מורכבים של Bodymovin (merge paths, gradients, track mattes) ב-Android API 21–25 מעובדים בתוכנה דרך Canvas, לא בחומרה. FPS יורד מ-60 ל-15 במכשירים בינוניים. ב-iOS, מצב דומה עם merge paths. כפי שצוין ב-תיעוד Lottie iOS, CoreAnimation עובד הכי טוב מ-iOS 13+, אך merge paths עדיין עלולים לגרום לעיבוד תוכנה.
שלישית, חוסר במטמון. ב-Flutter, אם לא עושים שימוש חוזר ב-LottieComposition, כל טעינה מפענחת JSON מחדש, ומגדילה את זמן העיבוד ב-30–50%.
למה אנימציות Lottie רועדות במכשירים ישנים?
lottie-android מגרסה 6.x דורש לפחות API 21, אך תמיכה מלאה באפקטים של Bodymovin היא רק מ-API 26+. Gradients, masks, track mattes — ב-API 21–25 חלק מהאפקטים מעובדים דרך Canvas במקום האצת חומרה. תוצאה: FPS יורד מ-60 ל-15 במכשירים בינוניים עם אנימציה מורכבת.
ב-iOS, מלכודת דומה: lottie-ios 4.x משתמש בשכבות CoreAnimation לרוב האפקטים, אך עם CoreAnimation או masks מורכבים הוא עובר ל-CALayer עם עיבוד תוכנה. זה לא ברור מהתיעוד — מבינים רק כשמגלים merge paths במקום CALayer בשימוש ב-GPU ב-Instruments.
תרחיש שני לבעיות: גודל קובץ CoreGraphics. אנימציית onboarding של שלושה מסכים יכולה לשקול 800 KB–2 MB אם המעצב שכח להסיר נכסים לא בשימוש או ייצא עם תמונות רסטר בתוך JSON (base64-encoded). ניתוח JSON של שני מגה-בייט על ה-main thread בזמן הפעלה הוא עיכוב ניכר בהפעלה קרה.
איך לייעל JSON ללא פגיעה באיכות?
לפני אינטגרציה, אנו מריצים אותו דרך Metal CLI או LottieFiles Optimizer. תוצאה טיפוסית: הפחתה של 40–60% בגודל ללא פגיעה באיכות. אנו מחליפים תמונות רסטר בתוך JSON בהפניות חיצוניות דרך .json. זה חשוב במיוחד למסכי טעינה ו-onboarding, שבהם גודל הקובץ משפיע ישירות על מהירות ההפעלה. בפרויקט אחד, הפחתנו אנימציה מ-1.8 MB ל-760 KB, וקיצרנו את זמן הטעינה ב-30%.
השוואת Lottie עם חלופות
| מאפיין | Lottie | APNG | Rive |
|---|---|---|---|
| גודל קובץ | קטן פי 10 מ-APNG | גדול | בינוני |
| איכות בקנה מידה | וקטורי (ללא אובדן) | רסטר (פיקסלים) | וקטורי |
| שליטה בקוד | כן (השהיה, הרצה אחורה) | לא | מוגבל |
| ביצועים | האצת חומרה | עומס על CPU | מואץ GPU |
Lottie קומפקטי פי 10 מ-APNG עם אותה איכות ויזואלית — זו הבחירה הטובה ביותר לאנימציות טעינה.
מידע נוסף על גורמי ביצועים
ב-iOS, בשימוש ב-CoreAnimation, אפקטים מורכבים עלולים לעבור לעיבוד תוכנה, ולהפחית FPS. באנדרואיד, כפיית האצת חומרה פותרת את הבעיה במכשירים עם API 21–25.
מדריך אינטגרציה שלב אחר שלב
-
אופטימיזציה של JSON. לפני אינטגרציה, אנו תמיד דוחסים (ראה לעיל).
-
אנדרואיד (Kotlin).
// build.gradle
implementation "com.airbnb.android:lottie:6.4.0"
val animationView = LottieAnimationView(context)
animationView.setAnimation(R.raw.loading_animation)
animationView.repeatCount = LottieDrawable.INFINITE
animationView.enableMergePathsForKitKatAndAbove(true) // API 19+
animationView.play()lottie-compress מאפשר עיבוד תוכנה של merge paths ב-API ישן — בלעדיו, חלק מהאנימציות פשוט לא מעובדות כראוי. למקרים רגישים לביצועים, השתמשו ב-imagesDictionary — עיבוד מואץ חומרה כפוי.
- iOS (Swift).
// Package.swift или SPM: com.airbnb.ios/lottie-ios 4.x
import Lottie
let animationView = LottieAnimationView(name: "loading_animation")
animationView.loopMode = .loop
animationView.contentMode = .scaleAspectFit
animationView.play()עבור // build.gradle implementation "com.airbnb.android:lottie:6.4.0" val animationView = LottieAnimationView(context) animationView.setAnimation(R.raw.loading_animation) animationView.repeatCount = LottieDrawable.INFINITE animationView.enableMergePathsForKitKatAndAbove(true) // API 19+ animationView.play() — enableMergePathsForKitKatAndAbove(true) מ-lottie-ios 4.2+:
LottieView(animation: .named("loading_animation")) .playing(.toProgress(1, loopMode: .loop)) - Flutter.
// pubspec.yaml: lottie: ^3.1.0 Lottie.asset( 'assets/animations/loading.json', repeat: true, fit: BoxFit.contain, ) ב-Flutter, setRenderMode(RenderMode.HARDWARE) שומר במטמון את ה-// Package.swift или SPM: com.airbnb.ios/lottie-ios 4.x import Lottie let animationView = LottieAnimationView(name: "loading_animation") animationView.loopMode = .loop animationView.contentMode = .scaleAspectFit animationView.play() המפוענח — חשוב לעשות שימוש חוזר דרך SwiftUI כשהאנימציה מופיעה מספר פעמים.
מה כלול בעבודה
| שלב | תוצאה |
|---|---|
| ניתוח אנימציה | זיהוי אפקטים בעייתיים, הערכת מורכבות |
| אופטימיזציה של JSON | דחיסה, החלפת נתוני רסטר |
| אינטגרציה ב-iOS/אנדרואיד | אנימציה עובדת עם שליטה בקוד |
| בדיקות על מכשירים אמיתיים | בדיקת FPS וזיכרון על 10+ מכשירים |
| מסירת תיעוד | קוד, תצורות, הוראות להחלפת אנימציות |
אנו גם מאמנים את המפתחים שלכם בתחזוקה בסיסית. אנו מבטיחים ביצועים מיטביים בכל מכשירי היעד. חיסכון בתקציב על שיפורים עתידיים יכול להגיע עד 40%, כלומר $200–$800.
תהליך העבודה
אנו מתחילים בניתוח: בוחנים את ה-JSON המקורי, בודקים על מכשירי יעד. לאחר מכן מתכננים את הפתרון — מייעלים, מפצלים לחלקים, או משנים פורמט. לאחר מכן אינטגרציה: מוסיפים קוד, מגדירים שליטה. אחר כך בדיקות על 5+ תרחישים, כולל מכשירים חלשים. אנו מסיימים בפריסה ל-App Store ול-Google Play עם ניטור.
לוחות זמנים ועלות
אינטגרציה בסיסית של אנימציית Lottie אחת בפלטפורמה אחת — 2–3 שעות כולל בדיקות ואופטימיזציה. אם יש מספר אנימציות או אינטגרציה בשתי הפלטפורמות עם שליטה בקוד (השהיה, הרצה אחורה, קריאת סיום) — מחצי יום עד יום. התמחור נקבע לאחר ניתוח. עלות טיפוסית נעה בין $200 ל-$800 בהתאם למורכבות. צרו קשר להערכת הפרויקט שלכם — ננתח את האנימציה ונציע פתרון מיטבי. קבלו ייעוץ עם ניתוח.







