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

Android 17 พร้อมใช้งานแล้ว

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

วันนี้เราจะเปิดตัว Android 17 และพร้อมให้บริการในอุปกรณ์ Pixel ส่วนใหญ่ที่รองรับ โปรดรอติดตามอุปกรณ์ใหม่ที่ใช้ Android 17 ในอีกไม่กี่เดือนข้างหน้า

AfD-Android-17.gif

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

ตลอดปีที่ผ่านมา ตั้งแต่ช่อง Canary ไปจนถึงรุ่นเบต้า เราได้ทำงานร่วมกับคุณหลายๆ คนในชุมชนนักพัฒนาแอปเพื่อสร้างแพลตฟอร์มที่คุณและผู้ใช้ไว้วางใจได้ ด้วยเหตุนี้ การเปิดตัวครั้งนี้จึงเป็นการประกาศความพร้อมใช้งานของซอร์สโค้ดในโครงการโอเพนซอร์ส Android (AOSP) ซึ่งจะช่วยให้คุณตรวจสอบซอร์สโค้ดเพื่อทำความเข้าใจวิธีการทำงานของ Android ได้อย่างลึกซึ้งยิ่งขึ้น

มาเจาะลึกเกี่ยวกับ Android 17 กัน

ระบบข่าวกรอง

การผสานรวมอย่างลึกซึ้งระหว่างฮาร์ดแวร์ ซอฟต์แวร์ และ AI ทำให้เราเปลี่ยน Android จากระบบปฏิบัติการไปเป็นระบบอัจฉริยะ ซึ่งเป็นการมอบประสบการณ์ใหม่ๆ ที่เป็นประโยชน์ซึ่งคาดการณ์ความต้องการของผู้ใช้ และยังช่วยเพิ่มโอกาสในการมีส่วนร่วมกับแอปของคุณด้วย ด้วยเหตุนี้ Android 17 จึงขยายความสามารถของ AppFunctions ซึ่งเป็น API ของแพลตฟอร์มที่มีไลบรารี Jetpack ที่เกี่ยวข้อง ซึ่งช่วยให้คุณมีส่วนร่วมในความสามารถเฉพาะของแอปในรูปแบบ "เครื่องมือ" ที่จัดระเบียบได้สำหรับ MCP ของ Android ซึ่งเป็นฟีเจอร์ที่เทียบเท่ากับ Model Context Protocol ในอุปกรณ์ เอเจนต์และผู้ช่วย AI (เช่น Google Gemini) สามารถค้นหาและเรียกใช้ AppFunction เพื่อดำเนินการเวิร์กโฟลว์ในนามของผู้ใช้โดยมีสิทธิ์เข้าถึงสถานะภายในของแอปโดยตรง

ไลบรารี 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 เพื่อเรียกใช้ AppFunctions แล้ว เรายังมีแอปตัวแทนทดสอบซึ่งมีอินเทอร์เฟซสำหรับค้นหาและเรียกใช้ AppFunctions รวมถึงจำลองการผสานรวม AI Agent เข้าร่วมโปรแกรมทดลองใช้ก่อนเปิดตัวการผสานรวมได้ที่ goo.gle/eap-af เพื่อลุ้นเป็นหนึ่งในแอปแรกๆ ที่จะนํา AppFunctions ไปใช้งานจริง

ปรับอัตโนมัติเป็นอันดับแรก

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

  • บับเบิลแอป: นอกเหนือจาก Messaging Bubbles API แล้ว ตอนนี้ผู้ใช้สามารถเปลี่ยนแอปใดก็ได้ให้เป็นบับเบิลลอยได้โดยการกดไอคอนของแอปนั้นค้างไว้ในตัวเรียกใช้ ฟีเจอร์นี้พร้อมให้บริการในโทรศัพท์ อุปกรณ์พับได้ และแท็บเล็ต ซึ่งช่วยให้คุณทำงานหลายอย่างพร้อมกันได้อย่างราบรื่นสำหรับเวิร์กโฟลว์ใดก็ตาม
  • แถบบับเบิล: ในหน้าจอขนาดใหญ่ (แท็บเล็ตและอุปกรณ์แบบพับได้) แถบงานของระบบจะมีแถบบับเบิลเฉพาะสำหรับจัดระเบียบ สลับไปมาระหว่างบับเบิลแอปแบบลอย และตรึงบับเบิลแอปเหล่านี้
  • PIP แบบอินเทอร์แอกทีฟบนเดสก์ท็อป: ในสภาพแวดล้อมของเดสก์ท็อป Android 17 จะเปิดตัวการแสดงภาพซ้อนภาพ (PIP) แบบอินเทอร์แอกทีฟ หน้าต่างที่ปักหมุดเหล่านี้จะยังคงโต้ตอบได้อย่างเต็มที่ขณะที่อยู่เหนือหน้าต่างแอปพลิเคชันอื่นๆ เสมอ ซึ่งต่างจากหน้าต่าง PIP แบบเดิมที่อ่านได้อย่างเดียว
Bubbles (1).gif
บับเบิลแอปและแถบบับเบิลขณะใช้งาน

ข้อมูลอัปเดตเกี่ยวกับการสร้างกิจกรรม

Android 17 จะอัปเดตลักษณะการทำงานเริ่มต้นสำหรับการสร้างกิจกรรมใหม่เพื่อป้องกันการสูญเสียสถานะที่เป็นการรบกวนและการกระตุก ระบบจะไม่รีสตาร์ทกิจกรรมโดยค่าเริ่มต้นสำหรับการเปลี่ยนแปลงการกำหนดค่าทั่วไปที่ไม่ต้องวาด UI ใหม่ทั้งหมด (รวมถึง CONFIG_KEYBOARD, CONFIG_KEYBOARD_HIDDEN, CONFIG_NAVIGATION, CONFIG_TOUCHSCREEN และ CONFIG_COLOR_MODE)

แต่กิจกรรมที่กำลังทำงานจะได้รับการอัปเดตเหล่านี้ผ่าน onConfigurationChanged() ซึ่งช่วยให้การเปลี่ยนผ่านเป็นไปอย่างราบรื่น หากแอปพลิเคชันของคุณต้องอาศัยการรีสตาร์ทแบบเต็มเพื่อโหลดทรัพยากรสำหรับการเปลี่ยนแปลงเหล่านี้ คุณต้องเลือกใช้โดยชัดแจ้งโดยใช้แอตทริบิวต์ไฟล์ Manifest android:recreateOnConfigChanges ใหม่

ดำเนินการต่อบน

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

Continue On.png
คำแนะนำในการส่งต่อบนแท็บเล็ต
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 เป็นหลัก 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
R8 Configuration Analyzer.png
เครื่องมือวิเคราะห์การกำหนดค่า 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 เปิดตัวการรวบรวมรุ่นใหม่ที่ใช้ทรัพยากรน้อยลงและถี่ขึ้นสำหรับ ART's Concurrent Mark-Compact garbage collector (GC) การแยกออบเจ็กต์ที่มีอายุสั้นออกจากออบเจ็กต์ที่มีอายุยาวนานและเสถียรจะช่วยให้ระบบเรียกใช้การกวาด "รุ่นใหม่" ที่มีน้ำหนักเบาบ่อยครั้งแทนการสแกนฮีปทั้งหมดที่มีค่าใช้จ่ายสูง ซึ่งจะช่วยลดการใช้งาน 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)
}
Eyedropper Tester.webp
เลือกสีจากที่ใดก็ได้บนหน้าจอด้วยหลอดดูดสีของระบบ

การเข้าถึงเครือข่าย LAN

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

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

Android 17 ขยายการปกป้องรหัสผ่านแบบใช้ครั้งเดียว (OTP) ทาง SMS โดยการหน่วงเวลาการเข้าถึงข้อความ SMS เป็นเวลา 3 ชั่วโมง

ข้อยกเว้น: แอป SMS, Assistant และแอปคู่หูที่เชื่อมต่อเริ่มต้นจะได้รับการยกเว้น เราขอแนะนำให้แอปย้ายข้อมูลไปยัง API ของ SMS Retriever หรือ SMS User Consent

วิทยาการเข้ารหัสเพื่อรักษาความปลอดภัยจากคอมพิวเตอร์ควอนตัม (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 
 

Hide First Letter.gif
การปกป้องรหัสผ่านที่ชาญฉลาดยิ่งขึ้นสำหรับการป้อนข้อมูลทางกายภาพ

ฟีเจอร์สื่อและกล้องที่ช่วยให้ครีเอเตอร์สร้างสรรค์ผลงานและสร้างความพึงพอใจให้แก่ผู้ใช้

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 รุ่นเดิม (Camera1 หรือ Camera2 API แบบดิบ) ไปยัง CameraX ได้  

หมายเหตุ: คุณจะต้องอัปเดตเวอร์ชัน CameraX เป็น 1.5.2 หรือ 1.6.0 ขึ้นไปเพื่อหลีกเลี่ยงข้อขัดข้องที่เกี่ยวข้องกับโหมดช่วงไดนามิกที่เพิ่มเข้ามาในอุปกรณ์ Android 17

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

หากคุณพัฒนา SDK, ไลบรารี, เครื่องมือ หรือเกมเอนจินสำหรับ Android การเตรียมการอัปเดตที่จำเป็นในตอนนี้เป็นสิ่งสำคัญอย่างยิ่ง เพื่อป้องกันไม่ให้นักพัฒนาแอปและเกมที่ใช้ SDK ของคุณถูกบล็อกเนื่องจากปัญหาความเข้ากันได้ และช่วยให้นักพัฒนาเหล่านั้นกำหนดเป้าหมายไปยังฟีเจอร์ล่าสุดของ SDK ได้ โปรดแจ้งให้นักพัฒนาแอปที่ใช้ API ของคุณทราบหากจำเป็นต้องอัปเดตเพื่อรองรับ 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-17-beta-partners.jpg

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

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

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

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