วันนี้ Android 17 ได้เข้าสู่แพลตฟอร์มที่เสถียรอย่างเป็นทางการแล้วในรุ่นเบต้า 3 ซึ่งหมายความว่าพื้นผิว API จะถูกล็อก คุณสามารถทำการทดสอบความเข้ากันได้ขั้นสุดท้ายและพุชแอปที่กำหนดเป้าหมายเป็น Android 17 ไปยัง Play Store ได้ นอกจากนี้ Beta 3 ยังมาพร้อมความสามารถใหม่ๆ มากมายที่จะช่วยให้คุณสร้างแอปพลิเคชันที่ดีขึ้น ปลอดภัยยิ่งขึ้น และผสานรวมได้ดียิ่งขึ้น
เตรียมแอป ไลบรารี เครื่องมือ และเกมเอนจินให้พร้อม
หากคุณพัฒนา SDK, ไลบรารี, เครื่องมือ หรือเกมเอนจิน การเตรียมการอัปเดตที่จำเป็นในตอนนี้จะยิ่งสำคัญมากขึ้น เพื่อป้องกันไม่ให้นักพัฒนาแอปและเกมที่ใช้ SDK ของคุณถูกบล็อกเนื่องจากปัญหาความเข้ากันได้ และช่วยให้นักพัฒนาเหล่านั้นกำหนดเป้าหมายไปยังฟีเจอร์ล่าสุดของ SDK ได้ โปรดแจ้งให้นักพัฒนาแอปดาวน์สตรีมทราบหากจำเป็นต้องอัปเดตเพื่อให้รองรับ Android 17 ได้อย่างเต็มที่
การทดสอบเกี่ยวข้องกับการติดตั้งแอปเวอร์ชันที่ใช้งานจริงหรือแอปทดสอบที่ใช้ประโยชน์จากไลบรารีหรือเอนจินของคุณโดยใช้ 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 และเครื่องมือเลือกรูปภาพแบบฝัง ซึ่งช่วยให้คุณรักษาความสวยงามที่สอดคล้องกันได้เมื่อผู้ใช้โต้ตอบกับสื่อ
ทั้งหมดนี้เป็นส่วนหนึ่งของความพยายามของเราที่จะช่วยให้เครื่องมือเลือกรูปภาพของ 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
)
ข้อมูลอัปเดตเกี่ยวกับความเป็นส่วนตัว
ปุ่มตำแหน่งที่ระบบมีให้
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 )
ป้ายกำกับแอปที่ซ่อนไว้ในหน้าจอหลัก
ตอนนี้ 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) {}
}
)
แถบเครื่องมือบันทึกหน้าจอที่ออกแบบใหม่
ฟังก์ชันหลัก
การตั้งค่าการยกเว้นแอป 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
อ่านต่อ
-
ข่าวสารผลิตภัณฑ์
วันนี้เราจะยกระดับการพัฒนา Android ด้วย Gemma 4 ซึ่งเป็นโมเดลโอเพนซอร์สที่ล้ำสมัยที่สุดของเราที่ออกแบบมาพร้อมความสามารถในการให้เหตุผลที่ซับซ้อนและการเรียกใช้เครื่องมือแบบอัตโนมัติ
Matthew McCullough • ใช้เวลาอ่าน 2 นาที
-
ข่าวสารผลิตภัณฑ์
เสาหลักของระบบนิเวศ Android คือความมุ่งมั่นร่วมกันในการสร้างความไว้วางใจจากผู้ใช้ เมื่อภูมิทัศน์ของอุปกรณ์เคลื่อนที่พัฒนาไป แนวทางในการปกป้องข้อมูลที่ละเอียดอ่อนของเราก็พัฒนาตามไปด้วย
Robert Clifford • ใช้เวลาอ่าน 3 นาที
-
ข่าวสารผลิตภัณฑ์
เราต้องการช่วยให้คุณสร้างแอป Android คุณภาพสูงได้เร็วขึ้นและง่ายขึ้น และวิธีหนึ่งที่เราใช้เพื่อช่วยให้คุณมีประสิทธิภาพการทำงานมากขึ้นคือการนำ AI มาไว้ที่ปลายนิ้วของคุณ
Matthew McCullough • ใช้เวลาอ่าน 2 นาที
รับข่าวสาร
รับข้อมูลเชิงลึกด้านการพัฒนาแอป Android ล่าสุดส่งตรงถึงกล่องจดหมายของคุณทุกสัปดาห์