Android System WebView הוא מנוע דפדפן מובנה בכל מכשיר אנדרואיד. Mozilla GeckoView הוא מנוע הדפדפן שעומד בבסיס דפדפן פיירפוקס. בפוסט הזה נסביר קצת על כל אחד מהם, ומתי בחרתי להשתמש בכל אחד מהם.

למה בעצם צריך מנוע דפדפן מובנה במכשיר?

בפשטות, מנוע דפדפן הוא מה שמעבד את קוד הHTML, CSS, JS וכדומה למה שאתם רואים על המסך. בהרבה אפליקציות, יש קישורים - למשל לדף מדיניות הפרטיות של החברה, לדף עזרה, או סתם ככה לדף הבית. בחלק מהאפליקציות שולחים את המשתמש לדפדפן המוגדר כברירת מחדל שלו, ושם הקישור נפתח. אבל בחלק מהאפליקציות, הקישור נפתח בתוך האפליקציה עצמה. האם האפליקציה מיישמת בעצמה דפדפן? כמובן שלא. היא בסך הכל שולחת פקודות למנוע המובנה של המכשיר. משהו בסגנון הזה

mWebView.loadUrl("https://example.com/privacy.html");

והדפדפן הפנימי פותח את הקישור. כמו בהרבה דברים מובנים, WebView די בסיסי, עם תמיכה מינמלית מאוד בדברים כמו JS. אפשר להוסיף תמיכה בכל מיני פונקציות על ידי הוספת Flagים מסויימים לקוד. בתמונה, הFlagים שהוספתי לאפליקציית “דפדפן מוגן” שלי

(כל אפליקציית דפדפן מוגן שלי מתבססת על WebView.)

אז למה צריך מנוע דפדפן נפרד?

WebView הוא פיתרון נהדר, אבל יש לו חסרונות.

א. הוא די בסיסי וללא הרבה פונקציות - גם אחרי הFlagים.

ב. בכל גרסת אנדרואיד הוא קצת שונה, ואפילו בין מכשירים באותה גרסת אנדרואיד, מה שגורם הרבה פעמים, בטח באתרים מורכבים, לתצוגה שונה במכשירים שונים.

משתמש הקצה, שמשתמש בדפדפן רגיל, למשל כרום, לא מושפע מכך, כי לכרום יש מנוע דפדפן משלו, מוצלח (וכבד…) בהרבה. אבל כשאני, כמפתח אפליקציה שמשתמשת במנוע דפדפן רוצה להכין אפליקציה שתעבוד היטב, מה אני עושה?

לרוב מוחלט של המכשירים, WebView יספיק. הוא לא באמת בעייתי.

אבל… משתמשי פורום Jtech, שהוא פורום יהודי-אמריקאי לטכנולוגיה, נתקלו בבעיה. הם משתמשים בעיקר במכשירי אנדרואיד מתקפלים, עם מקשים, וגרסת אנדרואיד רזה מאוד. הWebView במכשירים אלו מוגבל מאוד ולא מוצלח בכלל. זה השפיע עליהם בעיקר כשניסו לפתח אפליקציה ייעודית לפורום שלהם. הפיתרון המקובל במקרים כאלו הוא להשתמש באפליקציות מבוססות WebView, אבל כאמור, זה לא מתאים במכשירים אלו. להשתמש באפליקציות מבוססות כרום גם לא התאים להם, כי זה מחייב כרום מותקן במכשיר, והם רצו מכשירים כשרים, ללא דפדפן.

כאן, נכנס לתמונה GeckoView. מנוע דפדפן של מוזילה, שעומד בבסיס הדפדפן המוכר של מוזילה - FireFox. GeckoView הוא עצמאי לחלוטין - עובד גם בלי FireFox מותקן במכשיר, וניתן להוספה כספריה לאפליקציה שלכם, ואז להשתמש בו כמנוע הדפדפן של האפליקציה. הוא גם נכתב מראש כמנוע אוניברסלי (בדומה לכרום), ולכן זה לא משנה באיזה מכשיר נעשה שימוש, הדף יוצג באופן תקין וזהה. אז כתבתי להם אפליקציה מבוססת GeckoView

https://github.com/AshiVered/Jtech-App

החיסרון, כמובן, הוא גודל האפליקציה - כי היא כוללת את מנוע הדפדפן כולו, מה שלא נדרש באפליקציות WebView. ככה שבמקום לשקול כ5MB, האפליקציה שקלה כ670MB!

הקטנתי אותה על ידי Split ABIs. מה זה אומר? שלכל ארכיטקטורת מעבד מתקמפל APK שונה, רק עם החלקים בספרייה שרלוונטיים אליו. זה כבר יותר טוב… קבצי הAPK השונים היו בגודל של כ170MB לכל אחד. גדול עדיין, אבל הגיוני בהרבה.