חדשות על מוצרים

גרסת הבטא הראשונה של Android 17

משך הקריאה: 7 דקות
Matthew McCullough
סמנכ"ל ניהול מוצר, Android Developer

היום אנחנו משיקים את גרסת הבטא הראשונה של Android 17, וממשיכים בעבודה שלנו לבניית פלטפורמה ששמה דגש על פרטיות, אבטחה וביצועים משופרים. הגרסה הזו היא המשך של העבודה שלנו ליצירת אפליקציות Android שניתנות להתאמה רבה יותר, והיא כוללת שיפורים משמעותיים ביכולות המצלמה והמדיה, כלים חדשים לאופטימיזציה של הקישוריות ופרופילים מורחבים למכשירים נלווים. בנוסף, הגרסה הזו מדגישה שינוי מהותי בדרך שבה אנחנו משיקים גרסאות חדשות לקהילת המפתחים, מהמודל המסורתי של תצוגה מקדימה למפתחים לתוכנית Android Canary

מעבר לתצוגה המקדימה למפתחים

ב-Android, במקום הגרסה המסורתית 'תצוגה מקדימה למפתחים', יש ערוץ Canary רציף. למודל החדש הזה, שפועל תמיד, יש שלושה יתרונות עיקריים:

  • גישה מהירה יותר: תכונות וממשקי API מגיעים ל-Canary ברגע שהם עוברים בדיקות פנימיות, במקום לחכות לגרסה רבעונית.
  • יציבות טובה יותר: בדיקות מוקדמות ב-Canary מובילות לחוויית בטא משופרת עם ממשקי API חדשים ושינויים בהתנהגות שקרובים יותר לגרסה הסופית.
  • בדיקות קלות יותר: גרסת Canary תומכת בעדכוני OTA (אין יותר צורך בהתקנה ידנית), וכערוץ עדכון נפרד, היא משתלבת בקלות רבה יותר בתהליכי עבודה של CI ומאפשרת לכם לתת משוב מיידי על שינויים פוטנציאליים עתידיים.

לוח הזמנים של Android 17

אנחנו מתכננים לעבור במהירות מגרסת הבטא הזו לאבן הדרך של יציבות הפלטפורמה, שאמורה להתרחש במרץ. בשלב הזה, נספק ממשקי API סופיים של SDK/NDK והתנהגויות סופיות ברובן שפונות לאפליקציות. מהרגע הזה יהיו לכם כמה חודשים עד לגרסה הסופית כדי להשלים את הבדיקה.

timeline1.png

שנה של פריטי תוכן

אנחנו מתכננים להמשיך לעדכן את Android 17 בסדרת גרסאות רבעוניות. הגרסה הקרובה ברבעון השני היא היחידה שבה אנחנו מציגים שינויים מתוכננים בהתנהגות שעלולים לגרום לבעיות באפליקציות. אנחנו מתכננים להשיק גרסה משנית של ה-SDK ברבעון הרביעי עם ממשקי API ותכונות נוספים.

timeline2.png

הגבלות על כיוון ושינוי גודל

עם השקת גרסת הבטא של Android 17, אנחנו עוברים לשלב הבא במפת הדרכים האדפטיבית שלנו: ב-Android 17 (רמת API 37) אין יותר אפשרות להשבית את ההגבלות על כיוון ושינוי גודל במכשירים עם מסך גדול (sw > 600 dp).

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

השינויים העיקריים בגרסה 37 של ה-SDK

אפליקציות שמטרגטות ל-Android 17 צריכות להיות תואמות להוצאה משימוש של מאפייני מניפסט וממשקי API של זמן ריצה שהוצגו ב-Android 16. כשמריצים את האפליקציה במסך גדול (המימד הקטן יותר הוא ‎≥ 600dp), המערכת מתעלמת ממאפיינים ומממשקי ה-API הבאים:

מאפיינים/API של קובץ המניפסטערכים שמתעלמים מהם
screenOrientationלאורך, לאורך הפוך, לאורך לפי חיישן, לאורך לפי משתמש, לרוחב, לרוחב הפוך, לרוחב לפי חיישן, לרוחב לפי משתמש
setRequestedOrientation()לאורך, לאורך הפוך, לאורך לפי חיישן, לאורך לפי משתמש, לרוחב, לרוחב הפוך, לרוחב לפי חיישן, לרוחב לפי משתמש
resizeableActivityהכל
minAspectRatioהכל
maxAspectRatioהכל

פטורים ושליטה של המשתמשים

השינויים האלה ספציפיים למסכים גדולים, והם לא חלים על מסכים קטנים מ-sw600dp (כולל טלפונים מסוג slate). בנוסף, האפליקציות שמסווגות כמשחקים (על סמך הדגל android:appCategory) פטורות מההגבלות האלה.

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

עדכונים בשינויים בהגדרות

כדי לשפר את התאימות של האפליקציות ולצמצם את הסיכון להפרעות בהפעלת סרטונים, להפסקת קלט ולסוגים אחרים של אובדן נתונים שעלול לשבש את השימוש, אנחנו מעדכנים את התנהגות ברירת המחדל של יצירה מחדש של פעילות. החל מ-Android 17, המערכת לא תפעיל מחדש פעילויות כברירת מחדל עבור שינויים ספציפיים בהגדרות, שבדרך כלל לא דורשים יצירה מחדש של ממשק המשתמש, כולל CONFIG_KEYBOARDCONFIG_KEYBOARD_HIDDENCONFIG_NAVIGATIONCONFIG_UI_MODE (כאשר משתנה רק UI_MODE_TYPE_DESK), CONFIG_TOUCHSCREEN ו-CONFIG_COLOR_MODE. במקום זאת, פעילויות שמתבצעות יקבלו את העדכונים האלה דרך onConfigurationChanged. אם האפליקציה שלך מסתמכת על הפעלה מחדש מלאה כדי לטעון מחדש משאבים לשינויים האלה, עכשיו צריך להביע הסכמה מפורשת באמצעות מאפיין המניפסט החדש android:recreateOnConfigChanges, שמאפשר לציין אילו שינויים בהגדרות צריכים להפעיל מחזור חיים מלא של פעילות (מהפסקה, לכיבוי סופי וליצירה מחדש), יחד עם הקבועים הקשורים mccmnc, והקבועים החדשים keyboardkeyboardHiddennavigationtouchscreen ו- colorMode.

הכנת האפליקציה

פרסמנו כלים ומסמכים כדי להקל עליכם. בפוסט הזה בבלוג שלנו יש הנחיות נוספות, כולל אסטרטגיות לטיפול בבעיות נפוצות. האפליקציות יצטרכו לתמוך בפריסות לרוחב ולאורך עבור גדלי חלונות בטווח המלא של יחסי הגובה-רוחב, כי הגבלת הכיוון או יחס הגובה-רוחב לא תהיה יותר אפשרות. מומלץ לבדוק את האפליקציה באמצעות Android 17 Beta 1 עם אמולטורים של Pixel Tablet או Pixel Fold (שהוגדרו ל- targetSdkPreview = "CinnamonBun") או באמצעות מסגרת התאימות של האפליקציה כדי להפעיל UNIVERSAL_RESIZABLE_BY_DEFAULT במכשירי Android 16.

ביצועים

Lock-free MessageQueue

ב-Android 17, אפליקציות שמטרגטות SDK בגרסה 37 ומעלה יקבלו הטמעה חדשה של android.os.MessageQueue שבה ההטמעה לא דורשת נעילה. ההטמעה החדשה משפרת את הביצועים ומפחיתה את מספר הפריימים החסרים, אבל היא עלולה לגרום לשיבוש בלקוחות שמשקפים שדות ושיטות פרטיים של MessageQueue.

איסוף אשפה דורי

ב-Android 17 נוסף איסוף אשפה דורי ל-ART's Concurrent Mark-Compact collector. האופטימיזציה הזו מציגה איסופי garbage collection תכופים יותר של דור צעיר, שצורכים פחות משאבים, לצד איסופים מלאים של ערימה, במטרה לצמצם את העלות הכוללת של garbage collection ב-CPU ואת משך הזמן שלו. שיפורים ב-ART זמינים גם ליותר ממיליארד מכשירים עם Android 12 (רמת API 31) ומעלה, באמצעות עדכוני המערכת של Google Play.

שדות סופיים סטטיים הם עכשיו באמת סופיים

החל מ-Android 17, אפליקציות שמטרגטות ל-Android 17 ואילך לא יוכלו לשנות שדות מסוג static final, מה שיאפשר לסביבת זמן הריצה להחיל אופטימיזציות של ביצועים בצורה אגרסיבית יותר. ניסיון לעשות זאת באמצעות רפלקציה (reflection) (ורפלקציה עמוקה) תמיד יוביל להשלכת IllegalAccessException. שינוי שלהם באמצעות משפחת המתודות SetStatic<Type>Field של JNI יגרום לקריסה מיידית של האפליקציה.

הגבלות על הצגת התראות בהתאמה אישית

כדי לצמצם את השימוש בזיכרון, אנחנו מגבילים את הגודל של תצוגות מותאמות אישית של התראות. העדכון הזה סוגר פרצה שמאפשרת לאפליקציות לעקוף מגבלות קיימות באמצעות URI. ההתנהגות הזו מוגבלת על ידי גרסת ה-SDK לטירגוט, והיא מתרחשת באפליקציות שמטרגטות API ברמה 37 ומעלה.

טריגרים חדשים של ProfilingManager לניפוי באגים בביצועים

הוספנו כמה טריגרים חדשים למערכת ProfilingManager כדי לעזור לכם לאסוף נתונים מפורטים לניפוי באגים בבעיות ביצועים. הטריגרים האלה הם TRIGGER_TYPE_COLD_STARTTRIGGER_TYPE_OOM ו- TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE.

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

מדיה ומצלמה

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

עדכונים דינמיים של סשן המצלמה

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

fun updateCameraSession(session: CameraCaptureSession, newOutputConfigs:  List<OutputConfiguration>)) {
    // Dynamically update the session without closing and reopening
    try {
        
        // Update the output configurations
        session.updateOutputConfigurations(newOutputConfigs)
    } catch (e: CameraAccessException) {
        // Handle error
    }
}

מטא-נתונים של מכשיר לוגי עם כמה מצלמות

כשעובדים עם מצלמות לוגיות שמשלבות כמה חיישני מצלמה פיזיים, אפשר עכשיו לבקש מטא-נתונים נוספים מכל המצלמות הפיזיות הפעילות שמשתתפות בצילום, ולא רק מהמצלמה הראשית. בעבר, כדי לקבל מטא נתונים ממצלמות משניות פעילות (למשל, במהלך החלפת עדשה לזום שבו מצלמה עוקבת פעילה), היה צריך להטמיע פתרונות עקיפים, ולפעמים להקצות זרמים פיזיים מיותרים. התכונה הזו מציגה מפתח חדש, LOGICAL_MULTI_CAMERA_ADDITIONAL_RESULTS, ב- CaptureRequest וב- CaptureResult. אם מגדירים את המפתח הזה למצב ON ב-CaptureRequest, ‏ TotalCaptureResult יכלול מטא-נתונים מהמצלמות הפיזיות הפעילות הנוספות האלה. אתם יכולים לגשת למטא-נתונים המקיפים האלה באמצעות TotalCaptureResult.getPhysicalCameraTotalResults() כדי לקבל מידע מפורט יותר שיכול לעזור לכם לבצע אופטימיזציה של השימוש במשאבים באפליקציות המצלמה שלכם.

תמיכה בקידוד וידאו רב-תכליתי (VVC)

ב-Android 17 נוספה תמיכה בתקן Versatile Video Coding (VVC). זה כולל הגדרה של סוג ה-MIME‏ video/vvc ב- MediaFormat, הוספה של פרופילי VVC חדשים ב- MediaCodecInfo ושילוב של תמיכה ב- MediaExtractor. התכונה הזו תהיה זמינה בקרוב במכשירים עם תמיכה בפענוח חומרה ובדרייברים מתאימים.

איכות קבועה להקלטת וידאו

הוספנו את setVideoEncodingQuality() אל MediaRecorder. כך תוכלו להגדיר מצב איכות קבוע (CQ) למקודדי וידאו, ולקבל שליטה מדויקת יותר באיכות הווידאו מעבר להגדרות פשוטות של קצב העברת הנתונים.

הגברת האבטחה של אודיו ברקע

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

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

פרטיות ואבטחה

הוצאה משימוש של המאפיין Cleartext Traffic

המאפיין android:usesCleartextTraffic הוצא משימוש. אם האפליקציה שלך מטרגטת ל-Android 17 ומעלה ומסתמכת על usesCleartextTraffic="true" ללא תצורה תואמת של אבטחת רשת, ברירת המחדל תהיה איסור של תעבורת נתונים שאינה מוצפנת. מומלץ לעבור לקבצים של הגדרת אבטחת רשת כדי לקבל שליטה פרטנית.

HPKE Hybrid Cryptography

אנחנו משיקים ממשק ציבורי של ספק שירותים (SPI) ליישום של הצפנה היברידית מסוג HPKE, שמאפשרת תקשורת מאובטחת באמצעות שילוב של מפתח ציבורי והצפנה סימטרית (AEAD).

קישוריות ותקשורת

היסטוריית שיחות משופרת ב-VoIP

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

טווח וקרבה של Wi-Fi

התכונה Wi-Fi Ranging שופרה באמצעות יכולות חדשות של זיהוי קרבה, והיא תומכת בטווח רציף ובגילוי מאובטח של מכשירים עמיתים. העדכונים לטווח Wi-Fi Aware כוללים ממשקי API חדשים לטיפול בעמיתים ולשמירת PMKID במטמון לטווח מאובטח של 11az.

פרודוקטיביות וכלים למפתחים

עדכונים לאפליקציות במכשיר המשני

הוספנו שני פרופילים חדשים ל-CompanionDeviceManager כדי לשפר את ההבחנה בין מכשירים ואת הטיפול בהרשאות:

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

בנוסף, CompanionDeviceManager מציע עכשיו תיבת דו-שיח מאוחדת לשיוך מכשירים ולבקשות הרשאה לגישה למכשירים בקרבת מקום. אתם יכולים להשתמש בשיטה החדשה setExtraPermissions ב-AssociationRequest.Builder כדי לאגד הנחיות למתן הרשאות בסביבה הקרובה בתהליך השיוך הקיים, וכך לצמצם את מספר תיבות הדו-שיח שמוצגות למשתמש.

איך מתחילים להשתמש ב-Android 17

אתם יכולים לרשום כל מכשיר Pixel נתמך כדי לקבל את העדכון הזה ועדכוני בטא עתידיים של Android דרך OTA. אם אין לכם מכשיר Pixel, אתם יכולים להשתמש בקובצי אימג' של מערכת 64 ביט עם אמולטור Android ב-Android Studio.

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

אם יש לכם Android 26Q1 Beta ואתם רוצים לקבל את הגרסה היציבה הסופית של 26Q1 ולצאת מגרסת הבטא, אתם צריכים להתעלם מעדכון ה-OTA ל-26Q2 Beta 1 ולחכות לפרסום של 26Q1.

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

כדי ליהנות מחוויית הפיתוח הטובה ביותר עם Android 17, מומלץ להשתמש בגרסת הטרום-השקה (Preview) העדכנית של Android Studio (Panda). אחרי ההגדרה, הנה כמה דברים שכדאי לעשות:

  • קומפילציה מול ה-SDK החדש, בדיקה בסביבות CI ודיווח על בעיות בכלי המעקב שלנו בדף המשוב.
  • בודקים את התאימות של האפליקציה הנוכחית, בודקים אם האפליקציה מושפעת משינויים ב-Android 17, מתקינים את האפליקציה במכשיר או באמולטור עם Android 17 ומבצעים בדיקות מקיפות.

אנחנו נעדכן את תמונות המערכת של גרסאות טרום-השקה/בטא ואת ה-SDK באופן קבוע במהלך מחזור ההפצה של Android 17. אחרי שמתקינים גרסת בטא, מקבלים באופן אוטומטי עדכונים עתידיים דרך האוויר לכל גרסאות התצוגה המקדימה וגרסאות הבטא הבאות.

מידע מלא זמין באתר למפתחים של Android 17.

הצטרפות לשיחה

אנחנו מתקדמים לקראת יציבות הפלטפורמה והגרסה היציבה הסופית של Android 17 בהמשך השנה, והמשוב שלכם ממשיך להיות הנכס הכי חשוב שלנו. אם אתם משתמשים ראשונים בערוץ Canary או מפתחי אפליקציות שבודקים בגרסת Beta 1, כדאי לכם להצטרף לקהילות שלנו ולשלוח משוב. אנחנו מקשיבים.

נכתב על ידי:

להמשך הקריאה