ข่าวสารเกี่ยวกับผลิตภัณฑ์

Android 17 รุ่นเบต้าที่ 2

อ่าน 6 นาที
ดูโปรไฟล์ของ Matthew McCullough
Matthew McCullough รองประธานฝ่ายการจัดการผลิตภัณฑ์ นักพัฒนาแอป Android

วันนี้เราจะเปิดตัวเบต้าเวอร์ชันที่ 2 ของ Android 17 ซึ่งเป็นการสานต่องานของเราในการสร้างแพลตฟอร์มที่ให้ความสำคัญกับความเป็นส่วนตัว ความปลอดภัย และประสิทธิภาพที่ดียิ่งขึ้น การอัปเดตนี้จะมอบความสามารถใหม่ๆ มากมาย รวมถึง EyeDropper API และเครื่องมือเลือกรายชื่อติดต่อที่รักษาความเป็นส่วนตัว นอกจากนี้ เรายังเพิ่ม API การวัดระยะขั้นสูง, การส่งต่อข้ามอุปกรณ์ และอื่นๆ อีกด้วย

การเปิดตัวครั้งนี้ยังคงเป็นการเปลี่ยนแปลงจังหวะการเปิดตัวของเรา โดยหลังจากเปิดตัว SDK เวอร์ชันหลักประจำปีในไตรมาสที่ 2 แล้ว เราจะเปิดตัวการอัปเดต SDK เวอร์ชันรอง

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

ฟองอากาศ

ฟองเป็นฟีเจอร์โหมดการแสดงหน้าต่างที่มอบประสบการณ์ UI แบบลอยใหม่แยกจาก API ฟองข้อความ ผู้ใช้สามารถสร้างบับเบิลแอปในโทรศัพท์ อุปกรณ์พับได้ หรือแท็บเล็ตได้โดยกดไอคอนแอปใน Launcher ค้างไว้ ในหน้าจอขนาดใหญ่จะมีแถบบับเบิลเป็นส่วนหนึ่งของแถบงาน ซึ่งผู้ใช้สามารถจัดระเบียบ ย้ายไปมาระหว่างบับเบิล และย้ายบับเบิลไปยังและจากจุดที่ตรึงไว้บนหน้าจอได้

Bubbles.gif

คุณควรปฏิบัติตามหลักเกณฑ์ในการรองรับโหมดหลายหน้าต่างเพื่อให้แน่ใจว่าแอปจะทำงานเป็นบับเบิลได้อย่างถูกต้อง

ฟองยังไม่พร้อมใช้งานอย่างเต็มรูปแบบใน Beta 2 ฟีเจอร์นี้จะพร้อมใช้งานใน Android 17 เวอร์ชันในอนาคต

EyeDropper API

EyeDropper API ระดับระบบใหม่ช่วยให้แอปขอสีจากพิกเซลใดก็ได้บนจอแสดงผลโดยไม่ต้องใช้สิทธิ์การจับภาพหน้าจอที่มีความละเอียดอ่อน

Eyedropper_Tester.webp
val eyeDropperLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
  result -> if (result.resultCode == Activity.RESULT_OK) {
    val color = result.data?.getIntExtra(Intent.EXTRA_COLOR, Color.BLACK)
    // Use the picked color in your app
  }
}

fun launchColorPicker() {
  val intent = Intent(Intent.ACTION_OPEN_EYE_DROPPER)
  eyeDropperLauncher.launch(intent)
}

เครื่องมือเลือกรายชื่อติดต่อ

เครื่องมือเลือกรายชื่อติดต่อระดับระบบใหม่ผ่าน ACTION_PICK_CONTACTS จะให้สิทธิ์การอ่านชั่วคราวตามเซสชันเฉพาะฟิลด์ข้อมูลที่ผู้ใช้ขอเท่านั้น ซึ่งช่วยลดความจำเป็นในการใช้สิทธิ์ READ_CONTACTS แบบกว้าง นอกจากนี้ ยังอนุญาตให้เลือกจากโปรไฟล์ส่วนตัวหรือโปรไฟล์งานของอุปกรณ์ได้ด้วย

android-17-contact-picker.gif
val contactPicker = rememberLauncherForActivityResult(StartActivityForResult()) {
    if (it.resultCode == RESULT_OK) {
        val uri = it.data?.data ?: return@rememberLauncherForActivityResult
        // Handle result logic
        processContactPickerResults(uri)
    }
}

val dataFields = arrayListOf(Email.CONTENT_ITEM_TYPE, Phone.CONTENT_ITEM_TYPE)
val intent = Intent(ACTION_PICK_CONTACTS).apply {
    putStringArrayListExtra(EXTRA_PICK_CONTACTS_REQUESTED_DATA_FIELDS, dataFields)
    putExtra(EXTRA_ALLOW_MULTIPLE, true)
    putExtra(EXTRA_PICK_CONTACTS_SELECTION_LIMIT, 5)
}

contactPicker.launch(intent)

รองรับการจับเคอร์เซอร์กับทัชแพดได้ง่ายขึ้น

ก่อนหน้านี้ ทัชแพดจะรายงานเหตุการณ์ในลักษณะที่แตกต่างจากเมาส์อย่างมากเมื่อแอปจับเคอร์เซอร์ โดยจะรายงานตำแหน่งของนิ้วบนแพดแทนการเคลื่อนไหวสัมพัทธ์ที่เมาส์จะรายงาน ซึ่งทำให้การรองรับทัชแพดอย่างเหมาะสมในเกมมุมมองบุคคลที่หนึ่งเป็นเรื่องยาก ตอนนี้โดยค่าเริ่มต้น ระบบจะจดจำการเคลื่อนที่ของเคอร์เซอร์และท่าทางการเลื่อนเมื่อมีการจับภาพทัชแพด และรายงานท่าทางเหล่านั้นเหมือนกับเหตุการณ์ของเมาส์ คุณยังคงขอข้อมูลตำแหน่งนิ้วแบบละเอียดแบบเดิมได้โดยขอให้บันทึกในโหมด "สัมบูรณ์" ใหม่อย่างชัดแจ้ง 

// To request the new default relative mode (mouse-like events)
// This is the same as requesting with View.POINTER_CAPTURE_MODE_RELATIVE
view.requestPointerCapture()

// To request the legacy absolute mode (raw touch coordinates)
view.requestPointerCapture(View.POINTER_CAPTURE_MODE_ABSOLUTE)

ขอบเขตการพักของตัวเลือกแบบอินเทอร์แอกทีฟ

การเรียกใช้ getInitialRestingBounds ใน ChooserSession ของ Android จะช่วยให้แอปของคุณระบุตำแหน่งเป้าหมายที่ Chooser ครอบครองหลังจากที่ภาพเคลื่อนไหวและการโหลดข้อมูลเสร็จสมบูรณ์ ซึ่งจะช่วยให้ปรับ UI ได้ดียิ่งขึ้น

การเชื่อมต่อและข้ามอุปกรณ์

การส่งต่อแอปข้ามอุปกรณ์

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

API การวัดระยะขั้นสูง

เรากำลังเพิ่มการรองรับเทคโนโลยีการวัดระยะใหม่ 2 เทคโนโลยี ได้แก่ 

  1. UWB DL-TDOA ซึ่งช่วยให้แอปใช้ UWB สำหรับการนำทางในอาคารได้ พื้นผิว API นี้เป็นไปตามข้อกำหนด DL-TDOA ของ FIRA (Fine Ranging Consortium) 4.0 และช่วยให้การนำทางในอาคารรักษาความเป็นส่วนตัวได้  (หลีกเลี่ยงการติดตามอุปกรณ์โดยแองเคอร์)
  2. การตรวจหาฮาร์ดแวร์ใกล้เคียงซึ่งช่วยให้แอปใช้ข้อกำหนดการวัดระยะใหม่ที่ WFA (WiFi Alliance) นำมาใช้ได้ เทคโนโลยีนี้ช่วยเพิ่มความน่าเชื่อถือและความแม่นยำเมื่อเทียบกับข้อกำหนดการวัดระยะตาม Wi-Fi Aware ที่มีอยู่

การปรับปรุงแพ็กเกจอินเทอร์เน็ต

ตอนนี้แอปสามารถเรียกข้อมูลอัตราการรับส่งข้อมูลสูงสุดที่ผู้ให้บริการจัดสรรให้สำหรับแอปพลิเคชันการสตรีมได้แล้วโดยใช้ getStreamingAppMaxDownlinkKbps และ getStreamingAppMaxUplinkKbps เพื่อเพิ่มประสิทธิภาพคุณภาพสื่อ

ฟังก์ชันหลัก ความเป็นส่วนตัว และประสิทธิภาพ

การเข้าถึงเครือข่ายภายใน

Android 17 เปิดตัวสิทธิ์รันไทม์ ACCESS_LOCAL_NETWORK เพื่อปกป้องผู้ใช้จากการเข้าถึงเครือข่ายภายในโดยไม่ได้รับอนุญาต เนื่องจากสิทธิ์นี้อยู่ภายใต้กลุ่มสิทธิ์ NEARBY_DEVICES ที่มีอยู่ ผู้ใช้ที่ให้สิทธิ์ NEARBY_DEVICES อื่นๆ ไปแล้วจะไม่ได้รับข้อความแจ้งอีก การประกาศและขอสิทธิ์นี้จะช่วยให้แอปค้นหาและเชื่อมต่อกับอุปกรณ์ในเครือข่ายเฉพาะที่ (LAN) ได้ เช่น อุปกรณ์สมาร์ทโฮมหรือเครื่องรับการแคสต์ ซึ่งจะช่วยป้องกันไม่ให้แอปที่เป็นอันตรายใช้ประโยชน์จากการเข้าถึงเครือข่ายภายในแบบไม่จำกัดเพื่อการติดตามผู้ใช้และการเก็บลายนิ้วมืออย่างลับๆ ตอนนี้แอปที่กำหนดเป้าหมายเป็น Android 17 ขึ้นไปจะมี 2 เส้นทางในการรักษาการสื่อสารกับอุปกรณ์ LAN ได้แก่ ใช้ตัวเลือกอุปกรณ์ที่ระบบเป็นสื่อกลางซึ่งรักษาความเป็นส่วนตัวเพื่อข้ามข้อความแจ้งขอสิทธิ์ หรือขอสิทธิ์ใหม่นี้อย่างชัดเจนในรันไทม์เพื่อรักษาการสื่อสารในเครือข่ายภายใน

การออกอากาศการเปลี่ยนแปลงออฟเซ็ตเขตเวลา

ตอนนี้ Android มีเจตนาในการออกอากาศที่เชื่อถือได้ ACTION_TIMEZONE_OFFSET_CHANGED ซึ่งจะทริกเกอร์เมื่อออฟเซ็ตเขตเวลาของระบบเปลี่ยนแปลง เช่น ในช่วงเปลี่ยนเวลาออมแสง ซึ่งจะช่วยเสริมเจตนาการออกอากาศที่มีอยู่ ACTION_TIME_CHANGED และ ACTION_TIMEZONE_CHANGED ซึ่งจะทริกเกอร์เมื่อการประทับเวลา Unix เปลี่ยนแปลงและเมื่อรหัสเขตเวลาเปลี่ยนแปลงตามลำดับ

การจัดการและการจัดลำดับความสำคัญของ NPU

แอปที่กำหนดเป้าหมายเป็น Android 17 ซึ่งจำเป็นต้องเข้าถึง NPU โดยตรงต้องประกาศ FEATURE_NEURAL_PROCESSING_UNIT ในไฟล์ Manifest เพื่อไม่ให้ถูกบล็อกไม่ให้เข้าถึง NPU ซึ่งรวมถึงแอปที่ใช้ LiteRT NPU delegate, SDK เฉพาะของผู้ให้บริการ รวมถึง NNAPI ที่เลิกใช้งานแล้ว

การรองรับ ICU 78 และ Unicode 17

ไลบรารีการปรับให้เป็นสากลหลักได้รับการอัปเดตเป็น ICU 78 ซึ่งขยายการรองรับสคริปต์ อักขระ และบล็อกอิโมจิใหม่ๆ รวมถึงเปิดใช้การจัดรูปแบบโดยตรงของออบเจ็กต์เวลา

การป้องกัน OTP ทาง SMS

Android กำลังขยายการป้องกัน OTP ทาง SMS โดยการหน่วงเวลาการเข้าถึงข้อความ SMS ที่มี OTP โดยอัตโนมัติ ก่อนหน้านี้ การป้องกันมุ่งเน้นที่รูปแบบ SMS Retriever เป็นหลัก ซึ่งการนำส่งข้อความที่มีแฮช SMS Retriever จะล่าช้าสำหรับแอปส่วนใหญ่เป็นเวลา 3 ชั่วโมง อย่างไรก็ตาม แอปบางแอป เช่น แอป SMS เริ่มต้น ฯลฯ และแอปที่ตรงกับแฮชจะได้รับการยกเว้นจากความล่าช้านี้ การอัปเดตนี้จะขยายการปกป้องไปยังข้อความ SMS ทั้งหมดที่มี OTP สำหรับแอปส่วนใหญ่ คุณจะเข้าถึงข้อความ SMS ที่มี OTP ได้หลังจากผ่านไป 3 ชั่วโมงเท่านั้น เพื่อช่วยป้องกันการลักลอบใช้ OTP ระบบจะระงับการออกอากาศ SMS_RECEIVED_ACTION และจะกรองการค้นหาฐานข้อมูลของผู้ให้บริการ SMS แอปเหล่านี้จะได้รับข้อความ SMS หลังจากที่เกิดความล่าช้า 

การเข้าถึงข้อความ SMS รูปแบบ WebOTP ที่ล่าช้า

หากแอปมีสิทธิ์อ่านข้อความ SMS แต่ไม่ใช่ผู้รับ OTP ที่ต้องการ (ตามที่กำหนดโดยการยืนยันโดเมน) คุณจะเข้าถึงข้อความ SMS รูปแบบ WebOTP ได้หลังจากผ่านไป 3 ชั่วโมงแล้วเท่านั้น การเปลี่ยนแปลงนี้ออกแบบมาเพื่อปรับปรุงความปลอดภัยของผู้ใช้โดยตรวจสอบว่ามีเพียงแอปที่เชื่อมโยงกับโดเมนที่ระบุในข้อความเท่านั้นที่อ่านรหัสยืนยันโดยอัตโนมัติได้ การเปลี่ยนแปลงนี้จะมีผลกับแอปทั้งหมดไม่ว่าจะมีระดับ API เป้าหมายใดก็ตาม

การเข้าถึง SMS มาตรฐานที่มี OTP ล่าช้า

สำหรับข้อความ SMS ที่มี OTP ซึ่งไม่ได้ใช้รูปแบบ WebOTP หรือ SMS Retriever แอปส่วนใหญ่จะเข้าถึง SMS ที่มี OTP ได้หลังจากผ่านไป 3 ชั่วโมงเท่านั้น การเปลี่ยนแปลงนี้จะมีผลกับแอปที่กำหนดเป้าหมายเป็น Android 17 (API ระดับ 37) ขึ้นไปเท่านั้น

แอปบางแอป เช่น SMS เริ่มต้น แอปผู้ช่วย รวมถึงแอปคู่ของอุปกรณ์ที่เชื่อมต่อ ฯลฯ จะได้รับการยกเว้นจากการหน่วงเวลานี้

แอปทั้งหมดที่ต้องอ่านข้อความ SMS เพื่อดึง OTP ควรเปลี่ยนไปใช้ API ของ SMS Retriever หรือ SMS User Consent เพื่อให้มั่นใจว่าฟังก์ชันการทำงานจะยังคงดำเนินต่อไป

กำหนดการของ Android 17

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

Android Release Timeline.png

ผลงานตลอดทั้งปี

เราวางแผนที่จะให้ Android 17 ได้รับการอัปเดตต่อไปในการเผยแพร่รายไตรมาส การเปิดตัวในไตรมาสที่ 2 ที่กำลังจะมาถึงนี้เป็นการเปิดตัวเพียงครั้งเดียวที่เราจะแนะนำการเปลี่ยนแปลงลักษณะการทำงานที่วางแผนไว้ซึ่งอาจทำให้แอปหยุดทำงาน เราวางแผนที่จะเปิดตัว SDK เวอร์ชันย่อยในไตรมาสที่ 4 พร้อม API และฟีเจอร์เพิ่มเติม

Android Release Timeline_2.png

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

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

หากปัจจุบันคุณอยู่ในโปรแกรม Android เบต้า ระบบจะเสนอการอัปเดตผ่านอากาศเป็นเบต้า 2 ให้คุณ

หากคุณใช้ Android 26Q1 เบต้าและต้องการใช้รุ่นเสถียรสุดท้ายของ 26Q1 และออกจากเบต้า คุณต้องไม่สนใจการอัปเดตผ่านอากาศเป็น 26Q2 เบต้า 2 และรอการเปิดตัว 26Q1

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

เราขอแนะนำให้คุณใช้ตัวอย่างล่าสุดของ Android Studio (Panda) เพื่อให้ได้รับประสบการณ์การพัฒนาแอป Android 17 ที่ดีที่สุด เมื่อตั้งค่าเรียบร้อยแล้ว สิ่งที่คุณควรทำมีดังนี้

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

เราจะอัปเดตอิมเมจระบบรุ่นตัวอย่าง/เบต้าและ SDK เป็นประจำตลอดรอบการเผยแพร่ Android 17 เมื่อติดตั้งบิลด์เบต้าแล้ว คุณจะได้รับการอัปเดตในอนาคตโดยอัตโนมัติ 

แบบไร้สายสำหรับการแสดงตัวอย่างและเวอร์ชันเบต้าทั้งหมดในอนาคต

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

เข้าร่วมสนทนา

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

เขียนโดย:
อ่านต่อ