ข่าวสารผลิตภัณฑ์

Android 17 เบต้าเวอร์ชันที่ 3

ใช้เวลาอ่าน 5 นาที
Matthew McCullough
รองประธานฝ่ายการจัดการผลิตภัณฑ์ของ Android Developer

วันนี้ Android 17 ได้เข้าสู่แพลตฟอร์มที่เสถียรอย่างเป็นทางการแล้วในรุ่นเบต้า 3 ซึ่งหมายความว่าพื้นผิว API จะถูกล็อก คุณสามารถทำการทดสอบความเข้ากันได้ขั้นสุดท้ายและพุชแอปที่กำหนดเป้าหมายเป็น Android 17 ไปยัง Play Store ได้ นอกจากนี้ Beta 3 ยังมาพร้อมความสามารถใหม่ๆ มากมายที่จะช่วยให้คุณสร้างแอปพลิเคชันที่ดีขึ้น ปลอดภัยยิ่งขึ้น และผสานรวมได้ดียิ่งขึ้น

เตรียมแอป ไลบรารี เครื่องมือ และเกมเอนจินให้พร้อม

หากคุณพัฒนา SDK, ไลบรารี, เครื่องมือ หรือเกมเอนจิน การเตรียมการอัปเดตที่จำเป็นในตอนนี้จะยิ่งสำคัญมากขึ้น เพื่อป้องกันไม่ให้นักพัฒนาแอปและเกมที่ใช้ SDK ของคุณถูกบล็อกเนื่องจากปัญหาความเข้ากันได้ และช่วยให้นักพัฒนาเหล่านั้นกำหนดเป้าหมายไปยังฟีเจอร์ล่าสุดของ SDK ได้ โปรดแจ้งให้นักพัฒนาแอปดาวน์สตรีมทราบหากจำเป็นต้องอัปเดตเพื่อให้รองรับ Android 17 ได้อย่างเต็มที่

large_Android17Timeline01.png

การทดสอบเกี่ยวข้องกับการติดตั้งแอปเวอร์ชันที่ใช้งานจริงหรือแอปทดสอบที่ใช้ประโยชน์จากไลบรารีหรือเอนจินของคุณโดยใช้ Google Play หรือวิธีการอื่นๆ ลงในอุปกรณ์หรือโปรแกรมจำลองที่ใช้ Android 17 Beta 3 ตรวจสอบโฟลว์ทั้งหมดของแอปและมองหาปัญหาด้านฟังก์ชันการทำงานหรือ UI ตรวจสอบการเปลี่ยนแปลงลักษณะการทํางานเพื่อมุ่งเน้นการทดสอบ Android แต่ละรุ่นมีการเปลี่ยนแปลงแพลตฟอร์มที่ช่วยปรับปรุงความเป็นส่วนตัว ความปลอดภัย และประสบการณ์ของผู้ใช้โดยรวม ซึ่งการเปลี่ยนแปลงเหล่านี้อาจส่งผลต่อแอปของคุณ การเปลี่ยนแปลงบางอย่างที่คุณควรให้ความสนใจมีดังนี้

  • ความสามารถในการปรับขนาดบนหน้าจอขนาดใหญ่: เมื่อกำหนดเป้าหมายเป็น Android 17 แล้ว คุณจะเลือกไม่ใช้ข้อจำกัดด้านการวางแนว ความสามารถในการปรับขนาด และสัดส่วนภาพบนหน้าจอขนาดใหญ่ไม่ได้อีกต่อไป
  • การโหลดโค้ดแบบไดนามิก: หากแอปกำหนดเป้าหมายเป็น Android 17 ขึ้นไป การป้องกันการโหลดโค้ดแบบไดนามิก (DCL) ที่ปลอดภัยยิ่งขึ้นซึ่งเปิดตัวใน Android 14 สำหรับไฟล์ DEX และ JAR จะขยายไปถึงไลบรารีแบบเนทีฟด้วย ต้องทำเครื่องหมายไฟล์เนทีฟทั้งหมดที่โหลดโดยใช้ System.load() เป็นแบบอ่านอย่างเดียว มิฉะนั้น ระบบจะแสดงข้อผิดพลาด UnsatisfiedLinkError
  • เปิดใช้ CT โดยค่าเริ่มต้น: ระบบจะเปิดใช้การตรวจสอบความโปร่งใสของใบรับรอง (CT) โดยค่าเริ่มต้น (ใน Android 16 จะมี CT แต่แอปต้องเลือกใช้)
  • การป้องกันเครือข่าย LAN: แอปที่กำหนดเป้าหมายเป็น Android 17 ขึ้นไปจะถูกบล็อกไม่ให้เข้าถึงเครือข่าย LAN โดยค่าเริ่มต้น เปลี่ยนไปใช้เครื่องมือเลือกที่รักษาความเป็นส่วนตัวหากเป็นไปได้ และใช้ ACCESS_LOCAL_NETWORK ใหม่เพื่อการเข้าถึงแบบถาวรในวงกว้าง

การเพิ่มประสิทธิภาพสื่อและกล้อง

ตัวเลือกการปรับแต่งเครื่องมือเลือกรูปภาพ

ตอนนี้ Android ให้คุณปรับแต่งการนำเสนอภาพของเครื่องมือเลือกรูปภาพให้เข้ากับอินเทอร์เฟซผู้ใช้ของแอปได้ดียิ่งขึ้น การใช้ประโยชน์จาก API PhotoPickerUiCustomizationParams ใหม่จะช่วยให้คุณปรับเปลี่ยนสัดส่วนภาพของมุมมองตารางกริดจากสี่เหลี่ยมจัตุรัส 1:1 มาตรฐานเป็นจอแสดงผลแนวตั้ง 9:16 ได้ ความยืดหยุ่นนี้ครอบคลุมทั้ง Intent 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 บิตต่อพิกเซลแบบช่องเดียวที่ใช้เลย์เอาต์แบบแพ็กแน่น ซึ่งจะแพ็กทุกๆ 4 พิกเซลติดต่อกันเป็น 7 ไบต์

ส่วนขยายกล้องที่ผู้จำหน่ายกำหนด: Android 17 เพิ่มส่วนขยายที่ผู้จำหน่ายกำหนดเพื่อให้พาร์ทเนอร์ด้านฮาร์ดแวร์กำหนดและใช้โหมดส่วนขยายกล้องที่กำหนดเองเพื่อให้คุณเข้าถึงฟีเจอร์กล้องที่ดีที่สุดและล่าสุด เช่น "ความละเอียดสูงพิเศษ" หรือการปรับปรุงที่ล้ำสมัยซึ่งขับเคลื่อนด้วย AI คุณสามารถค้นหาโหมดเหล่านี้ได้โดยใช้ API isExtensionSupported(int)

API ประเภทอุปกรณ์กล้อง: API ใหม่ของ Android 17 ช่วยให้คุณค้นหาประเภทอุปกรณ์พื้นฐานเพื่อระบุว่ากล้องเป็นฮาร์ดแวร์ในตัว เว็บแคม USB ภายนอก หรือกล้องเสมือน

การรองรับเครื่องช่วยฟัง Bluetooth LE Audio

ตอนนี้ Android มีหมวดหมู่อุปกรณ์เฉพาะสำหรับเครื่องช่วยฟังที่ใช้บลูทูธพลังงานต่ำ (BLE) การเพิ่มค่าคงที่ 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 เปิดตัวโปรแกรมเปลี่ยนไฟล์ซอฟต์แวร์ Extended HE-AAC ที่ระบบจัดเตรียมให้ ตัวเข้ารหัสนี้รองรับทั้งอัตราบิตต่ำและสูงโดยใช้การเข้ารหัสเสียงและคำพูดแบบรวม คุณเข้าถึงตัวเข้ารหัสนี้ได้ผ่าน API MediaCodec โดยใช้ชื่อ c2.android.xheaac.encoder หรือโดยการค้นหาaudio/mp4a-latmประเภท MIME

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)

การปรับปรุงประสิทธิภาพและแบตเตอรี่

ลดการปลุกด้วยการรองรับ Listener สำหรับการปลุกที่อนุญาตขณะไม่ได้ใช้งาน

Android 17 เปิดตัว AlarmManager.setExactAndAllowWhileIdle รูปแบบใหม่ที่ยอมรับ OnAlarmListener แทน PendingIntent กลไกใหม่ที่อิงตามการเรียกกลับนี้เหมาะสำหรับแอปที่ปัจจุบันใช้ Wakelock อย่างต่อเนื่องเพื่อทำงานเป็นระยะๆ เช่น แอปรับส่งข้อความที่รักษาการเชื่อมต่อซ็อกเก็ต

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

การตั้งค่าการแสดงรหัสผ่านที่แยกกันสำหรับแป้นพิมพ์แบบสัมผัสและแป้นพิมพ์จริง

ฟีเจอร์นี้จะแยกการตั้งค่าระบบ "แสดงรหัสผ่าน" ที่มีอยู่เป็นค่ากำหนดของผู้ใช้ 2 รายการที่แตกต่างกัน ได้แก่ รายการหนึ่งสำหรับการป้อนข้อมูลแบบสัมผัส และอีกรายการหนึ่งสำหรับการป้อนข้อมูลด้วยแป้นพิมพ์จริง (ฮาร์ดแวร์) ตอนนี้ระบบจะซ่อนอักขระที่ป้อนผ่านแป้นพิมพ์จริงทันทีโดยค่าเริ่มต้น

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) ผ่าน APK Signature Scheme v3.2 ใหม่ เพื่อเตรียมพร้อมสำหรับการพัฒนาคอมพิวเตอร์ควอนตัมในอนาคต โดยรูปแบบนี้ใช้แนวทางแบบผสมผสาน ซึ่งรวมลายเซ็นแบบคลาสสิกเข้ากับลายเซ็น ML-DSA

ประสบการณ์ของผู้ใช้และ UI ของระบบ

รองรับวิดเจ็ตบนจอแสดงผลภายนอกได้ดียิ่งขึ้น

ฟีเจอร์นี้ช่วยปรับปรุงความสอดคล้องของภาพวิดเจ็ตแอปเมื่อแสดงบนจอแสดงผลที่เชื่อมต่อหรือจอแสดงผลภายนอกที่มีความหนาแน่นของพิกเซลต่างกันโดยใช้หน่วย 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 และ 21

การอัปเดตนี้มาพร้อมฟีเจอร์และการปรับแต่งมากมายจาก OpenJDK 21 และ OpenJDK 25 ซึ่งรวมถึงการรองรับ Unicode ล่าสุดและการรองรับ SSL ที่ได้รับการปรับปรุงสำหรับกลุ่มที่มีชื่อใน TLS

เริ่มต้นใช้งาน Android 17

คุณสามารถลงทะเบียนอุปกรณ์ Pixel ที่รองรับหรือใช้อิมเมจระบบ 64 บิตกับโปรแกรมจำลองของ Android

  • คอมไพล์กับ SDK ใหม่และรายงานปัญหาในหน้าความคิดเห็น
  • ทดสอบแอปปัจจุบันเพื่อดูความเข้ากันได้ และดูว่าแอปได้รับผลกระทบจากการเปลี่ยนแปลงใน Android 17 หรือไม่

ดูข้อมูลทั้งหมดได้ที่เว็บไซต์ของนักพัฒนาแอป Android 17

เขียนโดย

อ่านต่อ