חדשות על המוצר

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

משך הקריאה: 7 דקות
הצגת הפרופיל של מתיו מקאלו
Matthew McCullough סגן נשיא, ניהול מוצר, מפתח של Android

היום אנחנו משיקים את גרסת הבטא הראשונה של 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, היא צריכה להיות מוכנה להתאמה. המשתמשים מצפים שהאפליקציות שלהם יפעלו בכל מקום – בין אם הם מבצעים כמה משימות בו-זמנית בטאבלט, פותחים מכשיר מתקפל או משתמשים בסביבת ממשק מחשב – והם מצפים שממשק המשתמש ימלא את המרחב ויתאים למצב המכשיר.

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

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

מאפייני מניפסט/APIערכים שהמערכת מתעלמת מהם
screenOrientation‫portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
setRequestedOrientation()‎‫portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
resizeableActivityהכול
minAspectRatioהכול
maxAspectRatioהכול

פטורים ואמצעי בקרה למשתמשים

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

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

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

כדי לשפר את התאימות של האפליקציה ולצמצם את ההפרעות בהפעלת סרטונים, את אובדן הקלט וסוגים אחרים של אובדן מצב, אנחנו מעדכנים את פעולת ברירת המחדל ליצירה מחדש של Activity. החל מ-Android 17, המערכת לא תפעיל מחדש פעילויות כברירת מחדל בגלל שינויים ספציפיים בהגדרות שבדרך כלל לא דורשים יצירה מחדש של ממשק המשתמש, כולל CONFIG_KEYBOARD, CONFIG_KEYBOARD_HIDDEN, CONFIG_NAVIGATION, CONFIG_UI_MODE (כשרק UI_MODE_TYPE_DESK משתנה), CONFIG_TOUCHSCREEN ו-CONFIG_COLOR_MODE. במקום זאת, פעילויות שפועלות פשוט יקבלו את העדכונים האלה דרך onConfigurationChanged. אם האפליקציה שלכם מסתמכת על הפעלה מחדש מלאה כדי לטעון מחדש משאבים לשינויים האלה, עכשיו אתם צריכים להביע הסכמה באופן מפורש באמצעות מאפיין המניפסט החדש android:recreateOnConfigChanges. המאפיין הזה מאפשר לכם לציין אילו שינויים בהגדרות האישיות אמורים להפעיל מחזור חיים מלא של פעילות (מעצירה, להשמדה וליצירה מחדש), יחד עם הקבועים הקשורים mcc,‏ mnc, והקבועים החדשים keyboard,‏ keyboardHidden,‏ navigation,‏ touchscreen ו-colorMode.

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

כדי להקל עליכם, פרסמנו כלים ומסמכי תיעוד. בפוסט הממוקד בבלוג שלנו יש הנחיות נוספות, עם אסטרטגיות לטיפול בבעיות נפוצות. האפליקציות יצטרכו לתמוך בפריסות לרוחב ולאורך לגדלים של חלונות בכל טווח יחסי הגובה-רוחב, כי לא תהיה יותר אפשרות להגביל את הכיוון או את יחס הגובה-רוחב. מומלץ לבדוק את האפליקציה באמצעות גרסת בטא 1 של Android 17 עם אמולטורים של 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 נוסף איסוף זבל בחלוקה לדורות לאוסף Concurrent Mark-Compact של ART. האופטימיזציה הזו מציגה איסוף אשפה תכוף יותר של הדור הצעיר, שדורש פחות משאבים, לצד איסוף אשפה של כל הערימה. המטרה היא להפחית את עלות המעבד (CPU) ואת משך הזמן הכולל של איסוף האשפה. השיפורים ב-ART זמינים גם ליותר ממיליארד מכשירים עם Android מגרסה 12 (רמת API‏ 31) ומעלה, דרך עדכוני המערכת של Google Play.

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

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

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

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

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

הוספנו כמה טריגרים חדשים של המערכת ל-ProfilingManager כדי לעזור לכם לאסוף נתונים מעמיקים לצורך ניפוי באגים בבעיות בביצועים. הטריגרים האלה הם TRIGGER_TYPE_COLD_START, TRIGGER_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()‎ ולקבל מידע מפורט יותר שיאפשר לכם לבצע אופטימיזציה של השימוש במשאבים באפליקציות המצלמה.

תמיכה ב-Versatile Video Coding‏ (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.

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

הוצאה משימוש של מאפיין התנועה בטקסט לא מוצפן

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

קריפטוגרפיה היברידית של HPKE

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

קישוריות וטלקום

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

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

מדידת טווח וקרבה באמצעות Wi-Fi

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

כותב/ת המסמך:
להמשך קריאה