Android 17 พร้อมใช้งานแล้ว
ใช้เวลาอ่าน 13 นาที
วันนี้เราจะเปิดตัว Android 17 และพร้อมให้บริการในอุปกรณ์ Pixel ส่วนใหญ่ที่รองรับ โปรดรอติดตามอุปกรณ์ใหม่ที่ใช้ Android 17 ในอีกไม่กี่เดือนข้างหน้า
Android 17 เป็นจุดเริ่มต้นของการเปลี่ยนไปใช้ระบบอัจฉริยะ โดยมีแอปของคุณเป็นศูนย์กลาง Android กำลังเปลี่ยนไปใช้มาตรฐานการพัฒนาแบบปรับได้เป็นอันดับแรกด้วยการเปิดตัวการปรับขนาดหน้าจอขนาดใหญ่ที่จำเป็น ในขณะเดียวกันก็มอบความเป็นส่วนตัว ความปลอดภัย สื่อ กล้อง และประสิทธิภาพรุ่นถัดไป เราจะกล่าวถึงเรื่องทั้งหมดนี้ในโพสต์นี้ รวมถึงวิธีที่เรากำลังรวบรวมเครื่องมือ ไลบรารี และทักษะของเอเจนต์รุ่นถัดไปเพื่อช่วยให้แอปของคุณคว้าโอกาสนี้ไว้
ตลอดปีที่ผ่านมา ตั้งแต่ช่อง Canary ไปจนถึงรุ่นเบต้า เราได้ทำงานร่วมกับคุณหลายๆ คนในชุมชนนักพัฒนาแอปเพื่อสร้างแพลตฟอร์มที่คุณและผู้ใช้ไว้วางใจได้ ด้วยเหตุนี้ การเปิดตัวครั้งนี้จึงเป็นการประกาศความพร้อมใช้งานของซอร์สโค้ดในโครงการโอเพนซอร์ส Android (AOSP) ซึ่งจะช่วยให้คุณตรวจสอบซอร์สโค้ดเพื่อทำความเข้าใจวิธีการทำงานของ Android ได้อย่างลึกซึ้งยิ่งขึ้น
มาเจาะลึกเกี่ยวกับ Android 17 กัน
ระบบข่าวกรอง
การผสานรวมฮาร์ดแวร์ ซอฟต์แวร์ และ AI อย่างลึกซึ้งทำให้เราเปลี่ยน Android จากระบบปฏิบัติการไปเป็นระบบอัจฉริยะ โดยมีเป้าหมายเพื่อมอบประสบการณ์ใหม่ๆ ที่มีประโยชน์ซึ่งตอบสนองความต้องการของผู้ใช้ และสร้างโอกาสในการมีส่วนร่วมกับแอปของคุณมากขึ้น ด้วยเหตุนี้ Android 17 จึงขยายความสามารถของ AppFunctions ซึ่งเป็น API ของแพลตฟอร์มที่มีไลบรารี Jetpack ที่เกี่ยวข้อง ซึ่งช่วยให้คุณสามารถมีส่วนร่วมในความสามารถเฉพาะของแอปในฐานะ "เครื่องมือ" ที่จัดระเบียบได้สำหรับ MCP ของ Android ซึ่งเป็นฟีเจอร์ที่เทียบเท่ากับ Model Context Protocol ในอุปกรณ์ เอเจนต์และผู้ช่วย AI (เช่น Google Gemini) สามารถค้นหาและเรียกใช้ AppFunctions เพื่อดำเนินการเวิร์กโฟลว์ในนามของผู้ใช้โดยมีสิทธิ์เข้าถึงสถานะภายในของแอปโดยตรง
ไลบรารี Jetpack ซึ่งปัจจุบันอยู่ในเวอร์ชันอัลฟ่าช่วยให้การเพิ่ม AppFunctions ง่ายเหมือนกับการใส่คำอธิบายประกอบในคลาสและการเพิ่มความคิดเห็น KDoc
/** * A note app's [AppFunction]s. */ class NoteFunctions( private val noteRepository: NoteRepository ) { /** * Adds a new note to the app. * * @param appFunctionContext The execution context. * @param title The title of the note. * @param content The note's content. */ @AppFunction(isDescribedByKDoc = true) suspend fun createNote( appFunctionContext: AppFunctionContext, title: String, content: String ): Note { return noteRepository.createNote(title, content) } }
นอกจากนี้ เรายังเปิดตัวทักษะเอเจนต์ AppFunctions ที่วิเคราะห์เวิร์กโฟลว์หลักของแอป สร้างโค้ด Kotlin ที่จำเป็นโดยอัตโนมัติ เพิ่มประสิทธิภาพ KDoc สำหรับการเรียกใช้เครื่องมือ LLM และให้คำสั่ง ADB สำหรับการทดสอบและการแก้ไขข้อบกพร่อง
ขณะนี้การผสานรวม Gemini อยู่ในเวอร์ชันตัวอย่างแบบส่วนตัวกับผู้ทดสอบที่เชื่อถือได้ แต่คุณเริ่มเตรียมแอปได้แล้ว นอกเหนือจากคำสั่ง ADB เพื่อเรียกใช้ AppFunction แล้ว เรายังมีแอปตัวแทนทดสอบซึ่งมีอินเทอร์เฟซสำหรับค้นหาและเรียกใช้ AppFunction รวมถึงจำลองการผสานรวม AI Agent เข้าร่วมโปรแกรมทดลองใช้ก่อนเปิดตัวได้ที่ goo.gle/eap-af เพื่อลุ้นเป็นแอปกลุ่มแรกๆ ที่จะนำ AppFunction ไปใช้งานจริง
ปรับขนาดได้เป็นอันดับแรก
ผู้ใช้ไม่ได้ใช้อุปกรณ์เพียงรูปแบบเดียวอีกต่อไป แต่เปลี่ยนไปใช้อุปกรณ์ต่างๆ เช่น โทรศัพท์ อุปกรณ์พับได้ แท็บเล็ต แล็ปท็อป จอแสดงผลในรถยนต์ และสภาพแวดล้อม XR ที่สมจริง ปัจจุบันผู้ใช้มีอุปกรณ์หน้าจอขนาดใหญ่กว่า 580 ล้านเครื่อง และการเปิดตัว Google Books ที่กำลังจะมาถึง ทำให้ ChromeOS รุ่นถัดไปที่สร้างขึ้นบนสแต็ก Android ไม่ได้มีเป้าหมายด้านเทคนิคเพียงอย่างเดียวอีกต่อไป ซึ่งเป็นโอกาสอันยิ่งใหญ่ในการเข้าถึงผู้ใช้ที่มีส่วนร่วมสูง ซึ่งเป็นเหตุผลหนึ่งที่เรากำลังเปลี่ยนไปใช้มาตรฐานการพัฒนาที่เน้นการปรับตัวเป็นอันดับแรก
ไม่มีข้อจำกัดด้านความสามารถในการปรับขนาด/การวางแนวบนหน้าจอขนาดใหญ่
Android 17 (API ระดับ 37) จะนำการเลือกไม่ใช้ของนักพัฒนาแอปสำหรับข้อจำกัดด้านการวางแนวและความสามารถในการปรับขนาดในอุปกรณ์หน้าจอขนาดใหญ่ (sw > 600 dp) สำหรับแอปที่กำหนดเป้าหมายเป็น API ระดับ 37 ออก เพื่อให้มั่นใจว่าแอปจะมอบประสบการณ์การใช้งานระดับพรีเมียมในรูปแบบของอุปกรณ์ทุกประเภท ซึ่งรวมถึงอุปกรณ์เคลื่อนที่ที่ทำงานในโหมดเดสก์ท็อปบนจอแสดงผลที่เชื่อมต่อ ระบบจะละเว้นแอตทริบิวต์ไฟล์ Manifest และ API รันไทม์เดิม ซึ่งรวมถึง screenOrientation, setRequestedOrientation(), resizeableActivity=false และข้อจำกัดของสัดส่วนภาพ (minAspectRatio/maxAspectRatio) เกม (อิงตามหมวดหมู่แอปใน Google Play) จะยังคงได้รับการยกเว้น แอปของคุณต้องพร้อมปรับให้เข้ากับขนาดหน้าต่างใดก็ได้ เคารพท่าทางของอุปกรณ์ที่ผู้ใช้ต้องการ และรองรับการแสดงหน้าต่างแบบอิสระโดยค่าเริ่มต้น
การทำงานหลายอย่างพร้อมกันรุ่นถัดไป: บับเบิลแอป แถบบับเบิล และ PiP แบบโต้ตอบบนเดสก์ท็อป
Android 17 มาพร้อมความสามารถใหม่ๆ ในการจัดการหน้าต่างที่ทรงพลัง ซึ่งจะเปลี่ยนวิธีที่ผู้ใช้ทำงานหลายอย่างพร้อมกัน และต้องการความยืดหยุ่นของเลย์เอาต์จากแอปของคุณมากยิ่งขึ้น
- บับเบิลแอป: ผู้ใช้สามารถเปลี่ยนแอปใดก็ได้ให้เป็นบับเบิลลอยได้โดยการกดไอคอนของแอปนั้นค้างไว้ในตัวเรียกใช้ ซึ่งเป็นฟีเจอร์ที่ต่อยอดจาก API บับเบิลข้อความ ฟีเจอร์นี้พร้อมใช้งานในโทรศัพท์ อุปกรณ์พับได้ และแท็บเล็ต ซึ่งช่วยให้ทำงานหลายอย่างพร้อมกันได้อย่างราบรื่นสำหรับเวิร์กโฟลว์ใดก็ได้
- แถบบับเบิล: ในหน้าจอขนาดใหญ่ (แท็บเล็ตและอุปกรณ์พับได้) แถบงานของระบบจะมีแถบบับเบิลเฉพาะเพื่อจัดระเบียบ สลับระหว่าง และตรึงบับเบิลแอปแบบลอยเหล่านี้
- PIP แบบอินเทอร์แอกทีฟบนเดสก์ท็อป: ในสภาพแวดล้อมของเดสก์ท็อป Android 17 ได้เปิดตัวการแสดงภาพซ้อนภาพ (PIP) แบบอินเทอร์แอกทีฟ ซึ่งแตกต่างจากหน้าต่าง PIP แบบเดิมที่อ่านได้อย่างเดียว โดยหน้าต่างที่ปักหมุดเหล่านี้จะยังคงโต้ตอบได้อย่างเต็มที่ในขณะที่อยู่เหนือหน้าต่างแอปพลิเคชันอื่นๆ เสมอ
ข้อมูลอัปเดตเกี่ยวกับการสร้างกิจกรรมใหม่
Android 17 จะอัปเดตลักษณะการทำงานเริ่มต้นสำหรับการสร้างกิจกรรมใหม่เพื่อป้องกันการสูญเสียสถานะที่รบกวนและการกระตุก โดยระบบจะไม่รีสตาร์ทกิจกรรมโดยค่าเริ่มต้นสำหรับการเปลี่ยนแปลงการกำหนดค่าทั่วไปที่ไม่ต้องวาด UI ใหม่ทั้งหมด (รวมถึง CONFIG_KEYBOARD, CONFIG_KEYBOARD_HIDDEN, CONFIG_NAVIGATION, CONFIG_TOUCHSCREEN และ CONFIG_COLOR_MODE)
แต่กิจกรรมที่กำลังทำงานจะได้รับการอัปเดตเหล่านี้ผ่าน onConfigurationChanged() ซึ่งช่วยให้การเปลี่ยนผ่านเป็นไปอย่างราบรื่น หากแอปพลิเคชันของคุณต้องอาศัยการรีสตาร์ทแบบเต็มเพื่อโหลดทรัพยากรสำหรับการเปลี่ยนแปลงเหล่านี้ คุณต้องเลือกใช้โดยชัดแจ้งโดยใช้แอตทริบิวต์ไฟล์ Manifest ใหม่ android:recreateOnConfigChanges
ดำเนินการต่อบน
Android 17 เพิ่มฟีเจอร์ "ทำต่อ" เพื่อช่วยให้ผู้ใช้เปลี่ยนงานระหว่างอุปกรณ์ Android ได้อย่างราบรื่น ผู้ใช้จะเห็นคำแนะนำสำหรับแอปที่เปิดล่าสุดจากอุปกรณ์เคลื่อนที่ในแถบงานของแท็บเล็ต ซึ่งช่วยให้แตะเพียงครั้งเดียวก็เปิดแอปและ Deep Link ไปยังตำแหน่งที่ผู้ใช้ค้างไว้ได้ ฟีเจอร์ "ทำต่อ" รองรับการเปลี่ยนจากแอปไปยังเว็บ รวมถึงการกลับไปใช้เว็บหากไม่ได้ติดตั้งแอป
class MyHandoffActivity : Activity() {
...
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Do stuff
...
// Enable handoff
setHandoffEnabled(true, null)
}
// Override and implement onHandoffActivityDataRequested
override fun onHandoffActivityDataRequested(handoffRequestInfo: HandoffActivityDataRequestInfo) : HandoffActivityData {
// Create and return handoff data
}
}สร้างแอปแบบปรับอัตโนมัติเป็นอันดับแรกด้วย Jetpack Compose
เราได้เปิดตัวทักษะการปรับตัวของ Jetpack Compose เพื่อช่วยให้คุณปรับแอปให้เป็นไปตามข้อกำหนดใหม่ของ Android 17 เวิร์กโฟลว์ของนักพัฒนาแอปที่ทำงานด้วยระบบ AI นี้จะช่วยให้คุณใช้แนวทางปฏิบัติที่ปรับเปลี่ยนได้ดีที่สุด
- การนำทางแบบปรับอัตโนมัติ: เปลี่ยนจากแถบนำทางด้านล่างบนอุปกรณ์เคลื่อนที่ไปยังแถบนำทางที่ยึดขอบบนหน้าจอขนาดใหญ่โดยอัตโนมัติโดยใช้
NavigationSuiteScaffoldจากไลบรารี Material 3 Adaptive - เลย์เอาต์หลายบานหน้าต่าง: ใช้เลย์เอาต์รายละเอียดรายการและเลย์เอาต์บานหน้าต่างสนับสนุนโดยตรงโดยใช้ Navigation 3 Scenes (
ListDetailSceneStrategyและSupportingPaneSceneStrategy) แทนการทำธุรกรรมแบบ Fragment ที่ไม่เสถียร - FlexBox และ Grid API: ใช้ประโยชน์จากคอมโพเนนต์เลย์เอาต์แบบไดนามิกของ Compose 1.11 เพื่อปรับช่วงแถวและคอลัมน์ได้อย่างง่ายดายในทันที เพื่อให้มั่นใจว่าเนื้อหาจะเติมเต็มพื้นที่ได้อย่างสวยงามเสมอ
- การป้อนข้อมูลขั้นสูงแบบไม่สัมผัส: ใช้ประโยชน์จากการรองรับแทร็กแพดและเมาส์ที่ดียิ่งขึ้นของ Compose 1.11 ซึ่งรวมถึงวงแหวนโฟกัสแบบเนทีฟและ API ใหม่ (เช่น
TrackpadInjectionScopeและperformTrackpadInput) เพื่อทดสอบและมอบประสบการณ์การใช้งานระดับ "แล็ปท็อป" อย่างแท้จริงใน Googlebooks และโหมดเดสก์ท็อปได้อย่างง่ายดาย - สถานะหน้าต่างแบบไดนามิก: ใช้ประโยชน์จากโมเดลสถานะแบบรีแอกทีฟของ Compose เพื่อปรับ UI อย่างราบรื่นเมื่อแอปเปลี่ยนจากโหมดเต็มหน้าจอเป็น App Bubble แบบลอยหรือหน้าต่าง PiP แบบอินเทอร์แอกทีฟบนเดสก์ท็อป เพื่อให้มั่นใจว่าจะได้รับประสบการณ์การใช้งานระดับพรีเมียมแม้จะมีขนาดเล็กที่สุด
Android ใช้ Compose เป็นหลัก
Compose เป็นวิธีที่ง่ายที่สุดในการสร้างแอปแบบปรับได้ และเป็นเพียงหนึ่งในหลายเหตุผลที่เราเชื่อว่าUI ของ Android ทั้งหมดควรสร้างด้วย Compose ด้วยเหตุนี้ การพัฒนา Android จึงเป็น Compose-first API, ไลบรารี, เครื่องมือ และคำแนะนำสำหรับนักพัฒนาซอฟต์แวร์ Android ใหม่ทั้งหมดจะสร้างขึ้นสำหรับ Jetpack Compose โดยเฉพาะ ส่วนคอมโพเนนต์ View เดิม (ในแพ็กเกจ android.widget) และไลบรารี Jetpack ที่อิงตาม View (เช่น Fragments, RecyclerView และ ViewPager) จะอยู่ในโหมดการบำรุงรักษาแล้ว โดยจะได้รับการแก้ไขข้อบกพร่องที่สำคัญเท่านั้น และจะไม่มีฟีเจอร์ใหม่
เคล็ดลับ หากพร้อมย้ายข้อมูลแล้ว ใช้ XML ที่ขับเคลื่อนด้วย AI เพื่อสร้างทักษะการย้ายข้อมูลเพื่อวิเคราะห์เลย์เอาต์ View เดิมโดยอัตโนมัติและแปลงเป็นโค้ด Compose ที่ปรับเปลี่ยนได้สูง
ประสิทธิภาพและประสิทธิผล
ประสิทธิภาพของแอปหมายถึงอินเทอร์เฟซผู้ใช้ที่ราบรื่น เวลาเริ่มต้นแอปที่รวดเร็ว และการทำงานแบบมัลติทาสก์ที่มีประสิทธิภาพ ซึ่ง Android 17 มีการปรับปรุงที่ส่งผลกระทบในทุกด้านเหล่านี้
การจำกัดการใช้หน่วยความจำของแอป
การใช้งานหน่วยความจำเป็นหนึ่งในรากฐานที่เงียบๆ ของประสิทธิภาพโดยรวม เมื่อแอปหรือบริการที่ทำงานอยู่เบื้องหน้าเติบโตขึ้นโดยไม่มีการตรวจสอบ การจัดการหน่วยความจำจะเพิ่มการใช้ CPU และแบตเตอรี่ และในที่สุดจะนำไปสู่การสิ้นสุดแอปอื่นๆ ที่แคชไว้และงานในเบื้องหลังซึ่งทำงานได้ดี ซึ่งจะทำให้การเริ่มต้นแบบเย็นช้าลงและมัลติทาสก์ทำงานได้ไม่ดี
ตั้งแต่ Android 17 เป็นต้นไป ระบบจะบังคับใช้ขีดจำกัดหน่วยความจำของแอปอย่างเข้มงวดตาม RAM ทั้งหมดของอุปกรณ์ โดยจะสิ้นสุดกระบวนการที่ละเมิดอย่างกะทันหัน สิ่งใหม่ๆ ที่จะช่วยให้คุณปฏิบัติตามข้อกำหนดที่เข้มงวดมากขึ้นเหล่านี้ได้
- เครื่องมือเพิ่มประสิทธิภาพ R8: เครื่องมือเพิ่มประสิทธิภาพ R8 จะช่วยลดหน่วยความจำที่ใช้ของไบต์โค้ดของแอปได้อย่างมากโดยการลดขนาดคลาส เมธอด และฟิลด์ให้มีชื่อสั้นลง รวมถึงนำโค้ดและทรัพยากรที่ไม่ได้ใช้ออก ใช้ R8 ในโหมดเต็มรูปแบบพร้อมกับเครื่องมือวิเคราะห์การกำหนดค่า R8 ใหม่เพื่อให้มั่นใจว่าแอปจะได้รับประโยชน์สูงสุดจาก R8
- LeakCanary ใน Android Studio Panda: ตอนนี้ Profiler มีการผสานรวม LeakCanary แบบเนทีฟเป็นงานเฉพาะ ซึ่งผสานรวมกับ IDE และซอร์สโค้ดของคุณอย่างเต็มรูปแบบ
- ApplicationExitInfo: หากแอปถูกปิดเนื่องจากขีดจำกัดเหล่านี้ getDescription() จาก ApplicationExitInfo จะแสดงผลเป็น "MemoryLimiter:AnonSwap"
- การตรวจจับความผิดปกติในอุปกรณ์: คุณสามารถใช้การสร้างโปรไฟล์ตามทริกเกอร์โดยใช้
TRIGGER_TYPE_ANOMALYซึ่งเป็นส่วนหนึ่งของ ProfilingManager เพื่อบันทึกฮีปดัมพ์โดยอัตโนมัติเมื่อถึงขีดจำกัดหน่วยความจำ
val profilingManager = applicationContext .getSystemService(ProfilingManager::class.java) val triggers = ArrayList<ProfilingTrigger>().apply { add(ProfilingTrigger.Builder( ProfilingTrigger.TRIGGER_TYPE_ANOMALY).build()) } profilingManager.addProfilingTriggers(triggers)
นอกจากนี้ เรายังกำลังดำเนินการเพื่อแสดงเมตริกหน่วยความจำในฟิลด์เพิ่มเติมให้คุณเห็นภายใน Google Play Console
ระบบจัดการหน่วยความจำที่ไม่ใช้แล้วแบบแบ่งรุ่น
Android 17 เปิดตัวการรวบรวมรุ่นใหม่ที่ใช้ทรัพยากรน้อยลงและถี่ขึ้นสำหรับตัวเก็บขยะ Concurrent Mark-Compact (GC) ของ ART การแยกออบเจ็กต์ที่มีอายุสั้นออกจากออบเจ็กต์ที่มีอายุยาวนานและเสถียรจะช่วยให้ระบบเรียกใช้การกวาด "รุ่นใหม่" ที่มีน้ำหนักเบาบ่อยๆ แทนที่จะเป็นการสแกนฮีปทั้งหมดที่มีค่าใช้จ่ายสูง ซึ่งจะช่วยลดการใช้งาน CPU, การใช้พลังงาน และการกระตุกของ UI ได้อย่างมาก การทดสอบของเราแสดงให้เห็นว่าการรบกวนของ GC กับเธรดแอปพลิเคชันดีขึ้นอย่างมีนัยสำคัญ และขนาดชุดหน่วยความจำสูงสุดที่พำนัก (RSS) ลดลง นอกจากนี้ การปรับปรุง ART ยังพร้อมให้บริการในอุปกรณ์กว่าพันล้านเครื่องที่ใช้ Android 12 (ระดับ API 31) ขึ้นไปผ่านการอัปเดตระบบ Google Play
Lock-Free MessageQueue
สำหรับแอปที่กำหนดเป้าหมายเป็น SDK 37 ขึ้นไป android.os.MessageQueue หลักจะใช้สถาปัตยกรรมแบบไม่มีการล็อก ซึ่งช่วยลดเฟรมที่พลาดไป ปรับปรุงเวลาเริ่มต้นของแอป และปรับปรุงประสิทธิภาพของคิวที่ทำงานหนักในสถานการณ์แบบมัลติเธรดได้อย่างมาก โปรดทราบว่าการดำเนินการนี้อาจทำให้แอปที่ใช้การสะท้อนในฟิลด์และเมธอด MessageQueue ส่วนตัวใช้งานไม่ได้ เราได้เพิ่ม API peekWhen และ poll ลงใน TestLooperManager สำหรับการทดสอบเครื่องมือโดยไม่ต้องอาศัยส่วนประกอบภายในของ MessageQueue
ฟิลด์สุดท้ายแบบคงที่กลายเป็นฟิลด์สุดท้ายอย่างแท้จริง
ตั้งแต่ Android 17 เป็นต้นไป แอปที่กำหนดเป้าหมายเป็น SDK 37 ขึ้นไปจะแก้ไขฟิลด์ "static final" ไม่ได้ ซึ่งจะช่วยให้รันไทม์ใช้การเพิ่มประสิทธิภาพได้อย่างมีประสิทธิภาพมากขึ้น การพยายามดำเนินการดังกล่าวผ่านการสะท้อน (หรือการสะท้อนอย่างละเอียด) จะทำให้เกิดการโยน IllegalAccessException
การแก้ไขผ่านกลุ่มเมธอด SetStatic<Type>Field ของ JNI จะทำให้แอปพลิเคชันขัดข้องทันที
การจำกัดมุมมองการแจ้งเตือนที่กำหนดเอง
เราจะจำกัดขนาดของ มุมมองการแจ้งเตือนที่กำหนดเองเพิ่มเติมเพื่อลดการใช้หน่วยความจำ การอัปเดตนี้จะปิดช่องโหว่ที่อนุญาตให้แอปหลีกเลี่ยงขีดจำกัดที่มีอยู่โดยใช้ URI ลักษณะการทำงานนี้จะได้รับการควบคุมโดยเวอร์ชัน SDK เป้าหมาย และจะมีผลกับแอปที่กำหนดเป้าหมายเป็น API 37 ขึ้นไป
ความเป็นส่วนตัวและความปลอดภัย
การรักษาความเชื่อมั่นของผู้ใช้เป็นหัวใจสำคัญของระบบนิเวศ Android Android 17 มาพร้อมฟีเจอร์ที่แข็งแกร่งซึ่งปกป้องข้อมูลที่ละเอียดอ่อนไปพร้อมๆ กับการทำให้ประสบการณ์ของผู้ใช้เป็นเรื่องง่าย
ตัวเลือกการรักษาความเป็นส่วนตัว
ในอดีต แอปต้องมีสิทธิ์แบบถาวรและครอบคลุมเพื่อเข้าถึงข้อมูล เช่น รายชื่อติดต่อ ตำแหน่งที่แน่นอน และไฟล์สื่อ Android 17 ยังคงมุ่งเน้นไปที่ตัวเลือกที่รักษาความเป็นส่วนตัวซึ่งให้สิทธิ์เข้าถึงแบบชั่วคราวตามเซสชันเฉพาะข้อมูลที่ผู้ใช้เลือกอย่างชัดเจน
- เครื่องมือเลือกรายชื่อติดต่อระดับระบบ: การใช้
ACTION_PICK_CONTACTSช่วยให้แอปขอสิทธิ์เข้าถึงแบบชั่วคราวเฉพาะฟิลด์ที่ผู้ใช้เลือก (เช่น อีเมลหรือหมายเลขโทรศัพท์) ได้ ซึ่งไม่จำเป็นต้องใช้สิทธิ์READ_CONTACTSแบบกว้าง นอกจากนี้ยังรองรับการแยกโปรไฟล์งาน/โปรไฟล์ส่วนตัวอย่างเต็มรูปแบบด้วย - สัดส่วนภาพของเครื่องมือเลือกรูปภาพที่ปรับแต่งได้: คุณสามารถใช้ PhotoPickerUiCustomizationParams เพื่อปรับแต่งเครื่องมือเลือกรูปภาพของระบบให้แสดงภาพขนาดย่อในโหมดแนวตั้งได้ ซึ่งเหมาะสำหรับแอปที่แสดงรูปภาพและวิดีโอในแนวตั้งเสมอ เช่น แอปโซเชียลมีเดียที่เน้นวิดีโอ
- ปุ่มตำแหน่งที่ระบบแสดง: ปุ่มตำแหน่งที่ระบบแสดงใหม่ซึ่งคุณฝังในแอปได้จะให้สิทธิ์เข้าถึงตำแหน่งที่แน่นอนสำหรับเซสชันปัจจุบันเท่านั้น
- EyeDropper API: API ระดับระบบใหม่
ACTION_OPEN_EYE_DROPPERช่วยให้แอปของคุณสร้างเครื่องมือดูดสีที่ทำงานด้วยระบบได้ ซึ่งจะช่วยให้ผู้ใช้เลือกสีจากพิกเซลใดก็ได้บนจอแสดงผล ซึ่งจะมอบประสบการณ์การเลือกสีที่ปลอดภัยและรักษาความเป็นส่วนตัวโดยไม่จำเป็นต้องมีสิทธิ์การจับภาพหน้าจอหรือการฉายสื่อที่กว้างและละเอียดอ่อน
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) }
การเข้าถึงเครือข่าย LAN
ตอนนี้แอปที่กำหนดเป้าหมายเป็น Android 17 จะต้องใช้สิทธิ์รันไทม์ ACCESS_LOCAL_NETWORK หรือใช้เครื่องมือเลือกอุปกรณ์ที่รักษาความเป็นส่วนตัวซึ่งระบบเป็นตัวกลางสำหรับการสื่อสารในเครือข่าย LAN เช่น การพูดคุยกับอุปกรณ์สมาร์ทโฮมหรือตัวรับสัญญาณแคสต์ เนื่องจาก ACCESS_LOCAL_NETWORK อยู่ในกลุ่มสิทธิ์ NEARBY_DEVICES ที่มีอยู่ ผู้ใช้ที่ให้สิทธิ์ NEARBY_DEVICES อื่นๆ ไปแล้วจะไม่ได้รับข้อความแจ้งอีก
การป้องกัน OTP ทาง SMS
Android 17 ขยายการปกป้องรหัสผ่านแบบใช้ครั้งเดียว (OTP) ทาง SMS โดยชะลอการเข้าถึงข้อความ SMS เป็นเวลา 3 ชั่วโมง
- รูปแบบ WebOTP: ล่าช้าสำหรับแอปทั้งหมดที่ไม่ใช่ผู้รับที่ต้องการ (โดเมนไม่ตรงกัน)
- SMS OTP มาตรฐาน: ล่าช้าสำหรับแอปทั้งหมดที่กำหนดเป้าหมายเป็น SDK 37 ขึ้นไป
ข้อยกเว้น: แอป SMS, แอปผู้ช่วย และแอปคู่หูที่เชื่อมต่อเริ่มต้นจะได้รับการยกเว้น เราขอแนะนำให้แอปย้ายข้อมูลไปยัง SMS Retriever หรือ SMS User Consent API
วิทยาการเข้ารหัสเพื่อรักษาความปลอดภัยจากคอมพิวเตอร์ควอนตัม (PQC)
Android 17 พร้อมสำหรับการรักษาความปลอดภัยแบบเข้ารุ่นถัดไปแล้ว
- การผสานรวมคีย์สโตร์: อุปกรณ์ที่รองรับจะสร้างคีย์ ML-DSA (Module-Lattice-Based Digital Signature Algorithm) ในฮาร์ดแวร์ที่ปลอดภัยเพื่อสร้างลายเซ็นที่ปลอดภัยสำหรับควอนตัม ซึ่งแสดงผ่าน JCA API มาตรฐาน
- การรับรอง APK แบบไฮบริด: ขอแนะนำ APK Signature Scheme v3.2 ซึ่งรวมลายเซ็นแบบคลาสสิกเข้ากับลายเซ็น ML-DSA เพื่อรักษาความปลอดภัยในการนำส่งแอป
การโหลดโค้ดแบบไดนามิกเนทีฟที่ปลอดภัยยิ่งขึ้น
หากแอปกำหนดเป้าหมายเป็น SDK 37 ขึ้นไป การป้องกันการโหลดโค้ดแบบไดนามิก (DCL) ที่ปลอดภัยยิ่งขึ้นซึ่งเปิดตัวใน Android 14 สำหรับไฟล์ DEX และ JAR จะครอบคลุมถึงไลบรารีแบบเนทีฟด้วย ไฟล์เนทีฟทั้งหมดที่โหลดโดยใช้ System.load ต้องทำเครื่องหมายเป็นแบบอ่านอย่างเดียว ไม่เช่นนั้น ระบบจะแสดง UnsatisfiedLinkError
การปกป้องรหัสผ่านที่ชาญฉลาดกว่าเดิมสำหรับการป้อนข้อมูลทางกายภาพ
ใน Android 17 เราจะทำให้การป้อนรหัสผ่าน, PIN และข้อมูลลับอื่นๆ ขณะใช้แป้นพิมพ์จริงปลอดภัยยิ่งขึ้นด้วยการไม่แสดงอักขระสุดท้ายที่พิมพ์โดยค่าเริ่มต้น
ผู้ใช้ยังคงปรับแต่งการตั้งค่าการแสดงผลเหล่านี้ให้ตรงกับค่ากำหนดของตนเองได้อย่างง่ายดาย (ความพร้อมให้บริการอาจแตกต่างกันไปตามผู้ผลิตอุปกรณ์)
คอมโพเนนต์ SDK ในตัวของ Android จะรองรับการปกป้องความเป็นส่วนตัวที่ได้รับการปรับปรุงเหล่านี้โดยอัตโนมัติ และจะรองรับใน Compose 1.12 สำหรับ SecureTextFields
ฟีเจอร์สื่อและกล้องที่ช่วยให้ครีเอเตอร์สร้างสรรค์ผลงานและสร้างความพึงพอใจให้แก่ผู้ใช้
Android 17 เปิดตัวฟีเจอร์สำหรับครีเอเตอร์ใหม่ที่ให้สิทธิ์เข้าถึงกล้องและสื่อคุณภาพระดับมืออาชีพ พร้อมทั้งปรับปรุงประสบการณ์การใช้งานสำหรับผู้บริโภค
- Eclipsa Video: มาตรฐานวิดีโอ HDR ที่สร้างขึ้นตามข้อกำหนด SMPTE ST 2094-50 ซึ่งนำเสนอข้อมูลเมตาใหม่เพื่อช่วยให้อุปกรณ์ปรับเนื้อหาให้เข้ากับส่วนหัวของการแสดงผลและสภาพแสงแวดล้อม รวมถึงปรับปรุงการแสดงเนื้อหามาตรฐานและเนื้อหา HDR พร้อมกัน
- รูปแบบภาพ RAW14: การรองรับรูปแบบภาพ RAW14 ใหม่ช่วยให้แอปกล้องระดับมืออาชีพสามารถจับภาพที่มีรายละเอียดและความลึกของสีสูงสุดจากเซ็นเซอร์กล้องที่รองรับ
- ส่วนขยายกล้องที่ผู้ให้บริการกำหนด: ส่วนขยายที่ผู้ให้บริการกำหนดช่วยให้พาร์ทเนอร์ด้านฮาร์ดแวร์กำหนดและใช้โหมดส่วนขยายกล้องที่กำหนดเองได้ ซึ่งจะช่วยให้เข้าถึงฟีเจอร์กล้องที่ดีที่สุดและล่าสุดได้
- โปรแกรมเปลี่ยนไฟล์ซอฟต์แวร์ Extended HE-AAC: โปรแกรมเปลี่ยนไฟล์ซอฟต์แวร์ Extended HE-AAC ใหม่ที่ระบบจัดเตรียมให้รองรับทั้งอัตราบิตต่ำและสูงโดยใช้การเข้ารหัสเสียงและการพูดแบบรวม ซึ่งจะช่วยให้คุณภาพเสียงของข้อความเสียงดีขึ้นอย่างมากในสภาพแวดล้อมที่มีแบนด์วิดท์ต่ำ รวมถึงรองรับข้อมูลเมตาความดัง
- การเข้ารหัสวิดีโออเนกประสงค์ (H.266): ช่วยให้ OEM เพิ่มการรองรับตัวแปลงรหัสได้โดยการกำหนดประเภท MIME ของ video/vvc ใน MediaFormat, การเพิ่มโปรไฟล์ VVC ใหม่ใน MediaCodecInfo และการผสานรวมการรองรับใน MediaExtractor
- ประเภทอุปกรณ์กล้อง: API ใหม่ที่ค้นหาประเภทอุปกรณ์พื้นฐานเพื่อระบุว่ากล้องเป็นฮาร์ดแวร์ในตัว เว็บแคม USB ภายนอก หรือกล้องเสมือน
- คุณภาพคงที่สำหรับการบันทึกวิดีโอ: setVideoEncodingQuality ใน MediaRecorder จะกำหนดค่าโหมดคุณภาพคงที่ (CQ) สำหรับตัวเข้ารหัสวิดีโอเพื่อให้มั่นใจว่าความคมชัดของภาพจะสม่ำเสมอตลอดทั้งวิดีโอ
การรองรับเครื่องช่วยฟังที่ดีขึ้น
- การรองรับเครื่องช่วยฟังที่ใช้ Bluetooth LE Audio: ตอนนี้ Android มีหมวดหมู่อุปกรณ์เฉพาะสำหรับเครื่องช่วยฟังที่ใช้เสียงผ่านบลูทูธพลังงานต่ำ (BLE) พร้อมค่าคงที่ AudioDeviceInfo.TYPE_BLE_HEARING_AID ใหม่ เพื่อให้แอปแยกความแตกต่างระหว่างเครื่องช่วยฟังกับชุดหูฟังทั่วไปได้ เพื่อมอบประสบการณ์ที่ปรับให้เหมาะกับผู้ใช้ที่มีอุปกรณ์ช่วยฟัง
- การกำหนดเส้นทางเสียงแบบละเอียดสำหรับเครื่องช่วยฟัง: Android 17 ช่วยให้ผู้ใช้จัดการได้อย่างอิสระว่าจะให้เสียงระบบใดเล่นที่ใด โดยสามารถเลือกกำหนดเส้นทางการแจ้งเตือน เสียงเรียกเข้า และการปลุกไปยังเครื่องช่วยฟังที่เชื่อมต่อหรือลำโพงในตัวของอุปกรณ์ ซึ่งจะช่วยหลีกเลี่ยงการรบกวนที่ไม่ต้องการในหูขณะที่ยังคงการเชื่อมต่อบลูทูธสำหรับแอปจัดการเครื่องช่วยฟัง
CameraX และ Media3
CameraX และ Media3 ได้รับการอัปเดตสำหรับ Android 17 แล้ว โดยมีหน้าที่จัดการงานหนัก ปรับปรุงการพัฒนาสื่อ และลดความซับซ้อนในการสร้างการจับภาพจากกล้องที่เชื่อถือได้ การเล่นสื่อที่ราบรื่น รวมถึงประสบการณ์การตัดต่อที่สร้างสรรค์และซับซ้อน
เราได้เปิดตัวทักษะของเอเจนต์ที่สามารถย้ายข้อมูลการติดตั้งใช้งานกล้อง Android รุ่นเดิม (API ของ Camera1 หรือ Camera2 แบบดิบ) ไปยัง CameraX
หมายเหตุ: คุณจะต้องอัปเดต CameraX เป็นเวอร์ชัน 1.5.2 หรือ 1.6.0 ขึ้นไปเพื่อหลีกเลี่ยงข้อขัดข้องที่เกี่ยวข้องกับโหมดช่วงไดนามิกที่เพิ่มเข้ามาในอุปกรณ์ Android 17
เตรียมแอป ไลบรารี เครื่องมือ และเกมเอนจินให้พร้อม
หากคุณพัฒนา SDK, ไลบรารี, เครื่องมือ หรือเอนจินเกม Android การเตรียมการอัปเดตที่จำเป็นในตอนนี้เป็นสิ่งสำคัญอย่างยิ่ง เพื่อป้องกันไม่ให้นักพัฒนาแอปและเกมที่ใช้ SDK ของคุณถูกบล็อกเนื่องจากปัญหาความเข้ากันได้ และช่วยให้นักพัฒนาเหล่านั้นกำหนดเป้าหมายฟีเจอร์ล่าสุดของ SDK ได้ โปรดแจ้งให้นักพัฒนาแอปดาวน์สตรีมทราบหากจำเป็นต้องอัปเดตเพื่อให้รองรับ Android 17 ได้อย่างเต็มที่
การทดสอบเกี่ยวข้องกับการติดตั้งแอปเวอร์ชันที่ใช้งานจริงหรือแอปทดสอบที่ใช้ไลบรารีหรือเอนจินของคุณโดยใช้ Google Play หรือวิธีอื่นๆ ในอุปกรณ์หรือโปรแกรมจำลองที่ใช้ Android 17 Beta 4 ให้ทดสอบโฟลว์ทั้งหมดของแอปและมองหาปัญหาด้านฟังก์ชันการทำงานหรือ UI Android แต่ละรุ่นมีการเปลี่ยนแปลงแพลตฟอร์มที่ช่วยปรับปรุงความเป็นส่วนตัว ความปลอดภัย และประสบการณ์ของผู้ใช้โดยรวม โปรดตรวจสอบการเปลี่ยนแปลงลักษณะการทำงานที่ส่งผลต่อแอปสำหรับแอปที่ทำงานบนและกำหนดเป้าหมาย Android 17 เพื่อมุ่งเน้นการทดสอบ ซึ่งรวมถึงสิ่งต่อไปนี้
- ความสามารถในการปรับขนาดบนหน้าจอขนาดใหญ่: เมื่อกำหนดเป้าหมายเป็น Android 17 (SDK 37) คุณจะเลือกไม่ใช้การรักษาข้อจำกัดด้านการวางแนว ความสามารถในการปรับขนาด และสัดส่วนภาพบนหน้าจอขนาดใหญ่ไม่ได้อีกต่อไป
- การโหลดโค้ดแบบไดนามิก: หากแอปกำหนดเป้าหมายเป็น SDK 37 ขึ้นไป การป้องกันการโหลดโค้ดแบบไดนามิก (DCL) ที่ปลอดภัยยิ่งขึ้นซึ่งเปิดตัวใน Android 14 สำหรับไฟล์ DEX และ JAR จะครอบคลุมถึงไลบรารีแบบเนทีฟด้วย ไฟล์เนทีฟทั้งหมดที่โหลดโดยใช้ System.load() ต้องทำเครื่องหมายเป็นแบบอ่านอย่างเดียว มิฉะนั้น ระบบจะแสดงข้อผิดพลาด UnsatisfiedLinkError
- เปิดใช้ CT โดยค่าเริ่มต้น: การตรวจสอบความโปร่งใสของใบรับรอง (CT) จะเปิดใช้โดยค่าเริ่มต้น (ใน Android 16 จะมี CT แต่แอปต้องเลือกใช้)
- การปกป้องเครือข่ายภายใน: แอปที่กำหนดเป้าหมายเป็น SDK 37 ขึ้นไปจะถูกบล็อกการเข้าถึงเครือข่ายภายในโดยค่าเริ่มต้น เปลี่ยนไปใช้เครื่องมือเลือกที่รักษาความเป็นส่วนตัวหากเป็นไปได้ และใช้สิทธิ์
ACCESS_LOCAL_NETWORKใหม่สำหรับการเข้าถึงแบบกว้างและต่อเนื่อง - การเพิ่มความปลอดภัยของเสียงในเบื้องหลัง: ตั้งแต่ Android 17 เป็นต้นไป เฟรมเวิร์กเสียงจะบังคับใช้ข้อจำกัดในการโต้ตอบกับเสียงในเบื้องหลัง ซึ่งรวมถึงการเล่นเสียง คำขอโฟกัสเสียง และ API การเปลี่ยนแปลงระดับเสียง จากความคิดเห็นของคุณ เราได้ทำการเปลี่ยนแปลงบางอย่างตั้งแต่รุ่นเบต้า 2 ซึ่งรวมถึงการควบคุม targetSDK ขณะบังคับใช้ FGS ขณะใช้งานและยกเว้นเสียงปลุก ดูรายละเอียดทั้งหมดได้ในคำแนะนำที่อัปเดตแล้ว
- การประกาศการเข้าถึง NPU: แอปที่กำหนดเป้าหมายเป็น Android 17 ซึ่งจำเป็นต้องเข้าถึง NPU โดยตรงต้องประกาศ
FEATURE_NEURAL_PROCESSING_UNITในไฟล์ Manifest เพื่อไม่ให้ถูกบล็อกไม่ให้เข้าถึง NPU ซึ่งรวมถึงแอปที่ใช้ LiteRT NPU delegate, SDK เฉพาะของผู้ให้บริการ รวมถึง NNAPI ที่เลิกใช้งานแล้ว
เริ่มต้นใช้งาน Android 17
อุปกรณ์ Pixel ของคุณควรได้รับ Android 17 ในเร็วๆ นี้ หากคุณยังไม่ได้ใช้ Android เบต้า หากไม่มีอุปกรณ์ Pixel คุณสามารถใช้อิมเมจระบบ 64 บิตกับโปรแกรมจำลองของ Android ใน Android Studio ได้ หากปัจจุบันคุณใช้ Android 17 เบต้า 4.1 และยังไม่ได้ใช้ Android 17 QPR1 เบต้า คุณสามารถเลือกไม่เข้าร่วมโปรแกรมและจะได้รับ Android 17 เวอร์ชันที่เผยแพร่ผ่านอากาศ
การรับ Android 17 เวอร์ชันเบต้าในอุปกรณ์ของพาร์ทเนอร์
Android 17 พร้อมให้บริการในเวอร์ชันเบต้าบนโทรศัพท์มือถือ แท็บเล็ต และอุปกรณ์พับได้จากพาร์ทเนอร์ ซึ่งรวมถึง Honor, iQOO, Lenovo, OnePlus, OPPO, Realme, Sharp, vivo และ Xiaomi
เราขอแนะนำให้ใช้ Android Studio Quail รุ่น Canary ล่าสุดเพื่อประสบการณ์การพัฒนาที่ดีที่สุดด้วย Android 17 เมื่อตั้งค่าแล้ว สิ่งที่คุณควรทำมีดังนี้
- ทดสอบแอปปัจจุบันเพื่อดูความเข้ากันได้ ดูว่าแอปได้รับผลกระทบจากการเปลี่ยนแปลงใน Android 17 หรือไม่ และติดตั้งแอปในอุปกรณ์หรือโปรแกรมจำลอง Android ที่ใช้ Android 17 แล้วทดสอบอย่างละเอียด
ขอขอบคุณอีกครั้งสำหรับทุกคนที่เข้าร่วมโปรแกรมเวอร์ชันตัวอย่างสำหรับนักพัฒนาแอป Android และโปรแกรมเบต้า เราตั้งตารอที่จะได้เห็นวิธีที่แอปของคุณใช้ประโยชน์จากการอัปเดตใน Android 17 และมีแผนที่จะนำการอัปเดตมาให้คุณอย่างรวดเร็วในอนาคต
ดูข้อมูลทั้งหมดเกี่ยวกับ Android 17 ได้ที่เว็บไซต์นักพัฒนาแอป Android 17
อ่านต่อ
-
ข่าวสารผลิตภัณฑ์
วันนี้ Android 17 ได้เข้าสู่แพลตฟอร์มที่เสถียรอย่างเป็นทางการแล้วด้วยเบต้า 3 ซึ่งหมายความว่า API Surface ถูกล็อกแล้ว คุณสามารถทำการทดสอบความเข้ากันได้ขั้นสุดท้ายและส่งแอปที่กำหนดเป้าหมายเป็น Android 17 ไปยัง Play Store ได้
Matthew McCullough • ใช้เวลาอ่าน 5 นาที
-
ข่าวสารผลิตภัณฑ์
Google I/O '26 มีการประกาศสำคัญ 17 รายการสำหรับนักพัฒนาแอป Android โดยมุ่งเน้นที่ประสิทธิภาพการทำงานที่นำโดยเอเจนต์, Compose First เป็นมาตรฐาน UI ของเรา รวมถึงสื่อประสิทธิภาพสูงและการพัฒนาแบบปรับเปลี่ยนได้สำหรับระบบนิเวศที่ขยายตัว
Matthew McCullough • ใช้เวลาอ่าน 8 นาที
-
ข่าวสารผลิตภัณฑ์
วันนี้ในระหว่าง The Android Show เราได้ประกาศว่า Android กำลังเปลี่ยนจากระบบปฏิบัติการไปเป็นระบบอัจฉริยะ ซึ่งจะสร้างโอกาสในการมีส่วนร่วมกับแอปของคุณมากขึ้น
Matthew McCullough • ใช้เวลาอ่าน 4 นาที
รับข่าวสาร
รับข้อมูลเชิงลึกด้านการพัฒนาแอป Android ล่าสุดส่งตรงถึงกล่องจดหมายของคุณทุกสัปดาห์