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

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

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

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

הכינו את האפליקציות, הספריות, הכלים ומנועי המשחקים שלכם!

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

large_Android17Timeline01.png

הבדיקה כוללת התקנה של אפליקציית הפקה או אפליקציית בדיקה שמשתמשת בספרייה או במנוע שלכם באמצעות Google Play או אמצעים אחרים במכשיר או באמולטור שמופעלים ב-Android 17 Beta 3. בודקים את כל התהליכים באפליקציה ומחפשים בעיות פונקציונליות או בעיות בממשק המשתמש. כדאי לבדוק את השינויים בהתנהגות כדי להתמקד בבדיקות. כל גרסה של Android כוללת שינויים בפלטפורמה שמשפרים את הפרטיות, האבטחה וחוויית המשתמש הכוללת, והשינויים האלה יכולים להשפיע על האפליקציות שלכם. הנה כמה שינויים שכדאי להתמקד בהם:

  • שינוי גודל במסכים גדולים: אחרי שמגדירים טירגוט ל-Android 17, אי אפשר יותר לבטל את ההסכמה לשמירה על הגבלות הכיוון, שינוי הגודל ויחס הגובה-רוחב במסכים גדולים.
  • טעינה דינמית של קוד: אם האפליקציה מיועדת ל-Android 17 ואילך, ההגנה על טעינה דינמית של קוד (DCL) שהוצגה ב-Android 14 לקובצי DEX ו-JAR, חלה עכשיו גם על ספריות Native. כל הקבצים המקוריים שנטענו באמצעות System.load()‎ חייבים להיות מסומנים כקריאה בלבד. אחרת, המערכת תציג את השגיאה UnsatisfiedLinkError.
  • הפעלת CT כברירת מחדל: שקיפות אישורים (CT) מופעלת כברירת מחדל. (ב-Android 16, התכונה CT זמינה אבל האפליקציות צריכות להביע הסכמה לשימוש בה).
  • הגנות על הרשת המקומית: אפליקציות שמטרגטות ל-Android 17 ואילך חוסמות כברירת מחדל את הגישה לרשת המקומית. אם אפשר, כדאי לעבור לשימוש בכלי בחירה ששומרים על הפרטיות, ולהשתמש בהרשאה החדשה ACCESS_LOCAL_NETWORK לגישה רחבה ומתמשכת.

שיפורים במדיה ובמצלמה

אפשרויות ההתאמה האישית של כלי בחירת התמונות

ב-Android אפשר עכשיו להתאים את ההצגה החזותית של כלי לבחירת תמונות כך שתתאים יותר לממשק המשתמש של האפליקציה. באמצעות ה-API החדש PhotoPickerUiCustomizationParams, אפשר לשנות את יחס הגובה-רוחב של תצוגת המשבצות מהריבוע הרגיל 1:1 לתצוגה אנכית של 9:16. הגמישות הזו חלה גם על כוונת ACTION_PICK_IMAGES וגם על כלי בחירת התמונות המוטמע, ומאפשרת לכם לשמור על אסתטיקה מגובשת כשהמשתמשים יוצרים אינטראקציה עם מדיה.

large_(Default)11aspectratio.png

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

val params = PhotoPickerUiCustomizationParams.Builder()
.setAspectRatio(PhotoPickerUiCustomizationParams.ASPECT_RATIO_PORTRAIT_9_16)
.build()
val intent = Intent(MediaStore.ACTION_PICK_IMAGES).apply {
putExtra(MediaStore.EXTRA_PICK_IMAGES_UI_CUSTOMIZATION_PARAMS, params)
}
startActivityForResult(intent, REQUEST_CODE)

תמיכה בפורמט התמונה RAW14: ב-Android 17 נוספה תמיכה בפורמט התמונה RAW14 – שהוא תקן התעשייה דה-פקטו לצילום דיגיטלי מתקדם – באמצעות הקבוע החדש ImageFormat.RAW14. ‫RAW14 הוא פורמט חד-ערוצי של 14 ביט לכל פיקסל, שמשתמש בפריסה צפופה שבה כל ארבעה פיקסלים עוקבים נארזים בשבעה בייטים.

תוספים למצלמה שמוגדרים על ידי הספק: ב-Android 17 נוספו תוספים שמוגדרים על ידי הספק, כדי לאפשר לשותפי חומרה להגדיר ולהטמיע מצבי תוספים מותאמים אישית למצלמה. כך תוכלו לקבל גישה לתכונות המצלמה הכי טובות והכי עדכניות, כמו 'סופר רזולוציה' או שיפורים מתקדמים מבוססי-AI. אפשר לשלוח שאילתה לגבי המצבים האלה באמצעות API ‏isExtensionSupported(int).

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

תמיכה במכשירי שמיעה עם Bluetooth LE Audio

מערכת Android כוללת עכשיו קטגוריה ספציפית של מכשירים למכשירי שמיעה עם Bluetooth Low Energy ‏ (BLE) Audio. עם הוספת הקבוע AudioDeviceInfo.TYPE_BLE_HEARING_AID, האפליקציה יכולה להבחין בין מכשירי שמיעה לבין אוזניות רגילות.

val audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
val devices = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS)
val isHearingAidConnected = devices.any { it.type == AudioDeviceInfo.TYPE_BLE_HEARING_AID }

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

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

מקודד תוכנה HE-AAC מורחב

ב-Android 17 נוסף מקודד תוכנה מורחב של HE-AAC שסופק על ידי המערכת. המקודד הזה תומך בקצב העברת נתונים נמוך וגבוה באמצעות קידוד מאוחד של דיבור ואודיו. אפשר לגשת למקודד הזה דרך MediaCodec API באמצעות השם c2.android.xheaac.encoder או באמצעות שאילתה על סוג ה-MIME‏ audio/mp4a-latm.

val encoder = MediaCodec.createByCodecName("c2.android.xheaac.encoder")
val format = MediaFormat.createAudioFormat(MediaFormat.MIMETYPE_AUDIO_AAC, 48000, 1)
format.setInteger(MediaFormat.KEY_BIT_RATE, 24000)
format.setInteger(MediaFormat.KEY_AAC_PROFILE, MediaCodecInfo.CodecProfileLevel.AACObjectXHE)
encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE)

שיפורים בביצועים ובסוללה

הפחתת נעילות מעוררות באמצעות תמיכה בהאזנה להתרעות מסוג allow-while-idle

ב-Android 17 מוצגת גרסה חדשה של AlarmManager.setExactAndAllowWhileIdle שמקבלת OnAlarmListener במקום PendingIntent. המנגנון החדש הזה מבוסס על קריאות חוזרות (callback) והוא אידיאלי לאפליקציות שמסתמכות כרגע על נעילות השכמה רציפות כדי לבצע משימות תקופתיות, כמו אפליקציות להעברת הודעות ששומרות על חיבורי שקע.

val alarmManager = getSystemService(AlarmManager::class.java)
val listener = AlarmManager.OnAlarmListener {
// Do work here
}
alarmManager.setExactAndAllowWhileIdle(
AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 60000,
listener,
null
)

עדכונים בנושא פרטיות

כפתור המיקום שסופק על ידי המערכת

localcafe.jpg

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

הגדרות נפרדות לחשיפת סיסמאות במקלדות מגע ובמקלדות פיזיות

התכונה הזו מפצלת את הגדרת המערכת הקיימת 'הצגת סיסמאות' לשתי העדפות משתמש נפרדות: אחת להזנות מבוססות מגע ואחת להזנות ממקלדת פיזית (חומרה). התווים שמוזנים באמצעות מקלדות פיזיות מוסתרים עכשיו באופן מיידי כברירת מחדל.

val isPhysical = event.source and InputDevice.SOURCE_KEYBOARD == InputDevice.SOURCE_KEYBOARD
val shouldShow = android.text.ShowSecretsSetting.shouldShowPassword(context, isPhysical)

אבטחה

טעינה של קוד דינמי לקריאה בלבד

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

val libraryFile = File(context.filesDir, "my_native_lib.so")
// Mark the file as read-only before loading to comply with Android 17+ security requirements
libraryFile.setReadOnly()
System.load(libraryFile.absolutePath)

חתימת APK היברידית באמצעות קריפטוגרפיה פוסט-קוונטית (PQC)

כדי להתכונן להתפתחויות עתידיות בתחום המחשוב הקוונטי, אנחנו מציגים ב-Android תמיכה בקריפטוגרפיה פוסט-קוונטית (PQC) באמצעות פורמט החתימה החדש v3.2 APK Signature Scheme. הסכמה הזו מבוססת על גישה היברידית, שמשלבת חתימה קלאסית עם חתימת ML-DSA.

חוויית המשתמש וממשק המשתמש של המערכת

תמיכה טובה יותר בווידג'טים במסכים חיצוניים

התכונה הזו משפרת את העקביות החזותית של הווידג'טים של האפליקציות כשהם מוצגים במסכים מחוברים או חיצוניים עם רמות שונות של צפיפות פיקסלים באמצעות יחידות DP או SP.

val options = appWidgetManager.getAppWidgetOptions(appWidgetId)
val displayId = options.getInt(AppWidgetManager.OPTION_APPWIDGET_DISPLAY_ID)
val remoteViews = RemoteViews(context.packageName, R.layout.widget_layout)
remoteViews.setViewPadding(
R.id.container,
16f, 8f, 16f, 8f,
TypedValue.COMPLEX_UNIT_DIP
)

תוויות מוסתרות של אפליקציות במסך הבית

Hiddenapplabelsonthehomescreen.png

ב-Android יש עכשיו הגדרת משתמש להסתרה של שמות האפליקציות (תוויות) בסביבת העבודה של מסך הבית. חשוב לוודא שסמל האפליקציה ייחודי וקל לזיהוי.

תמונה אינטראקטיבית בתוך תמונה במחשב

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

val appTask: ActivityManager.AppTask = activity.getSystemService(ActivityManager::class.java).appTasks[0]
appTask.requestWindowingLayer(
ActivityManager.AppTask.WINDOWING_LAYER_PINNED,
context.mainExecutor,
object : OutcomeReceiver<Int, Exception> {
override fun onResult(result: Int) {
if (result == ActivityManager.AppTask.WINDOWING_LAYER_REQUEST_GRANTED) {
// Task successfully moved to pinned layer
}
}
override fun onError(error: Exception) {}
}
)

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

large_Recording-redesign.png

פונקציונליות עיקרית

הגדרות החרגה של אפליקציית VPN

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

val intent = Intent(Settings.ACTION_VPN_APP_EXCLUSION_SETTINGS)
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent)
}

עדכוני API ב-OpenJDK 25 וב-OpenJDK 21

העדכון הזה כולל תכונות רבות ושיפורים מ-OpenJDK 21 ומ-OpenJDK 25, כולל תמיכה ב-Unicode העדכני ותמיכה משופרת ב-SSL לקבוצות בעלות שם ב-TLS.

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

אתם יכולים להירשם לכל מכשיר Pixel נתמך או להשתמש בקובצי אימג' של המערכת בגרסת 64 ביט עם אמולטור Android.

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

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

נכתב על ידי:

להמשך הקריאה