על פי קבוצת התחייבויות ב-AOSP, גוגל עשויה להתחיל להגביל את הגישה לממשקי API לא מתועדים או מוסתרים ב-Android P. אפליקציות מותג שמות רבות משתמשות בממשקי API נסתרים כדי להגביר את הפונקציונליות, כך שההשפעה עשויה להיות רחבה.
עדכון 28/2/18: גוגל פרסמה היום פוסט בבלוג המאשר את השינויים. פרטים נוספים בסוף המאמר.
בעוד כמה חובבי אנדרואיד כן ספקולציות על שמה תיקרא הקינוח הגרסה הבאה של אנדרואיד, יש כמה התפתחויות מעניינות שמתרחשות מאחורי הקלעים. ראינו א כמה ראויים לציון תכונות קרובות באנדרואיד P, אבל גילוי עדכני יותר בפרויקט הקוד הפתוח של אנדרואיד (AOSP) הוכיח את עצמו הרבה יותר מעניין. על פי ההתחייבויות האחרונות הללו, אפליקציות עשויות להיות מוגבלות לגשת לממשקי API שאינם מתועדים ב-Android SDK (כגון ממשקי API המסומנים על ידי התכונה @hide של javadoc).
למה זה חשוב
ערכת פיתוח התוכנה של אנדרואיד (SDK) מספקת למפתחים ספריות API וכלים שהם צריכים כדי לבדוק ולבנות יישומי אנדרואיד חדשים. עם כל מהדורה חדשה של אנדרואיד מגיעה שורה שלמה של ממשקי API חדשים הזמינים למפתחים דרך ה-SDK של Android. אילו ממשקי API זמינים לאפליקציה תלויים באיזו compileSDKVersion שהמפתח מגדיר. זו הסיבה של גוגל
דרישות חדשות של חנות Play הם כה משמעותיים - זה יאלץ יישומים לעדכן ולעבור לשימוש בממשקי API חדשים יותר.גוגל מארח דפי תיעוד עבור כל מחלקה וכל השיטות שלה הזמינות בכל רמת API. אלו הם קבוצת ממשקי ה-API המתועדים הזמינים ב-SDK הרשמי של Android. אתה יכול לעיין ברשימת השיעורים בקלות באמצעות אפליקציית אנדרואיד כגון אפליקציית החיפוש של Android SDK של Android של Android Engineer. ג'ייק וורטון.
מחיר: חינם.
4.1.
עם זאת, לא כל ממשקי ה-API הזמינים בכל מהדורת אנדרואיד מתועדים על ידי Google, או זמינים ב-SDK הרשמי של Android. לעתים קרובות יש ממשקי API שימושיים שכן לא מתועד, אבל הם בכל זאת שימושיים מאוד. לא מומלץ למפתחים לבנות את האפליקציות שלהם באמצעות ממשקי API לא מתועדים או נסתרים, אבל רבים עושים זאת כי פשוט אין ברירה אם הם רוצים להציע תכונה מסוימת. מפתחים שמשתמשים בממשקי API נסתרים או לא מתועדים יכולים לשים את עצמם גם ביתרון תחרותי, מכיוון שהם יכולים להציע תכונות שמתחרים שלהם - שנצמדים לממשקי ה-API שמציעה האנדרואיד SDK - לא יכול.
אמנם אני לא יכול לספק רשימה של אפליקציות שמשתמשות בממשקי API לא מתועדים (מפתחים כנראה לא משתפים באילו הם משתמשים כי זה ייתן למתחרים שלהם רגל למעלה), הרשימה היא כנראה די גָדוֹל. לפיכך, הייתי מסיק שאיסור גישה לממשקי API נסתרים יהיה משמעותי. מארק מרפי, מייסד Commonsware, מסכים:
אני מסכים עם ההערכה שאסור על גישה בכמויות גדולות לפריטים עם הערות @הסתר יהיה עניין גדול, אם זה יתממש. יש לקוות שמעט אפליקציות ניגשים לפריטים אלה כחלק מפונקציונליות מפתח. עם זאת, אני חושד שהרבה אפליקציות מותג שמות משתמשות בהן מדי פעם, ישירות או דרך ספרייה.
מה קורה באנדרואיד P?
השינויים הקרובים הללו צוינו לראשונה על ידי מפתח מוכר בכיר ב-XDA rovo89, היזם של ה Xposed Framework. הוא ציין בפניי שתי מחויבות, אחת מהן איזה היה התמזגו, שמציג כלי בנייה חדש בשם 'hiddenapi'. כלי זה משנה את דגלי הגישה של כל חברי הכיתה בתוך קובץ DEX if החתימות שלהם מופיעות ברשימה אפורה או ברשימה שחורה של קלט, ואם כן, השיטות המסומנות יטופלו כממשקי API פנימיים עם מוגבלות גִישָׁה. ההתחייבות האחרת מתארת כיצד פועלת הרשימה השחורה של API; זה מונע גישה ל שיעור אתחול שיטות ושדות המסומנים על ידי ה-'hiddenapi' הנ"ל שמפתחים יכולים לגשת אליהם באמצעות קישור סטטי, השתקפות ו-JNI.
לפי rovo89, התוצאה הסופית של שני השינויים הללו ב-Android P היא הבאה:
אם ההתחייבויות הללו יתמזגו, פירוש הדבר שאפליקציות לא יוכלו יותר להשתמש/לגשת לממשקי API נסתרים, כלומר מחלקות, שיטות ושדות שמוסמנים ב-@hide ב-AOSP ולכן אינם חלק מה- SDK רשמי. זו לא תהיה בעיה עבור מודולי Xposed מכיוון שאוכל בקלות להחזיר את ההתחייבויות האלה או לאפשר למודולים גם לגשת לממשקי API אלה. אבל יש אפליקציות רבות המנצלות ממשקי API נסתרים, ואלה ייכשלו ב עתיד.
ואכן, התחייבויות נוספות מראות כי ייתכן שזה מה שגוגל מתכננת. זֶה לְבַצֵעַ קובע את הדברים הבאים:
אמנם ההתחייבות הספציפית הזו לא מוזגה מכיוון שהיא נזנחה לטובת 3 התחייבויות קטנות יותר, אבל הודעת ההתחייבות מתארת את מטרת השינויים הללו. סט נוסף של מתחייב הראה ש-Google תציע חלופות למפתחים המבקשים להשתמש בממשקי API לא ציבוריים:
עם זאת, לעתים קרובות אין חלופות לממשקי API נסתרים מסוימים. אנחנו ב-XDA יכולים לדבר מניסיון כאן כמו למרבה הצער, שינוי זה עשוי לאיית את הסוף של כמה אפליקציות חדשניות, או שהוא עשוי לדרוש כמה אפליקציות עם שם גדול כדי להפחית את פונקציונליות. השינוי הקרוב נראה דומה ברוחו לזה האחרון פגיעה בשירותי נגישות (זה היה למרבה המזל הושהה כפי שגוגל העריכה שימושים חדשניים). בעוד שרוב האפליקציות שמשתמשות בממשקי API לא מתועדים עושות זאת מסיבות טובות, ייתכנו כמה אפליקציות שעשו בהן שימוש לרעה למטרות מרושעות.
בשל כך, ייתכן ש-Google נועלת את הגישה לכל ממשקי ה-API הנסתרים ב-Android P כדי להגן על המשתמשים מהמעטים שמתעללים בהם. קשה לומר עד כמה זה עשוי להשפיע על המשתמשים, אבל אם אתה מפתח שוקל לחפש דרך AOSP כדי למצוא שימוש חדשני ב-API נסתר, אז אולי תרצה לִשְׁקוֹל שׁוּב.
עדכון: גוגל מאשר
ב פוסט בבלוג שפורסמה היום, 28 בפברואר, Google אישרה את השינויים הללו. ציטוט סיכוני קריסה למשתמשים ובעקבות כך מאלץ מפתחים להפעיל תיקוני חירום, גוגל מציינת שהחברה עברה בהדרגה לכיוון להרתיע מפתחים מגישה שאינם SDK ממשקים. החל מ-Android P, ההגבלות יתרחבו כדי לכסות את ממשקי שפת ה-Java של ה-SDK.
החברה מצהירה כי "כמה שיטות ושדות שאינם SDK יוגבלו", אם כי הם לא פירטו אילו מהם יוגבלו. בתחילה ההגבלה תתמקד בממשקים שמשתמשים בהם לעיתים רחוקות, ולמשך זמן מה החברה תאפשר מפתחים להמשיך להשתמש בשיטות ובתחומים שאינם SDK שבהם המעבר לשיטת SDK הוא מבחינה טכנית מאתגר. עם זאת, בסופו של דבר ההגבלות יתרחבו, ולכן מפתחי אפליקציות המשתמשות בשיטות שאינן SDK צריכים לעבור בהקדם האפשרי לקראת אנדרואיד P. באשר לשיטות ללא אלטרנטיבה של SDK, גוגל מבקשת מהמפתחים לפרסם בהן עוקב אחר באגים עם מידע נוסף.
התצוגה המקדימה הבאה של המפתחים, שלכאורה תגיע בקרוב, תאפשר למפתחים לבדוק אפליקציות קיימות מול הרשימה השחורה או האפורה לפני השחרור הסופי.