การเปลี่ยนแปลงลักษณะการทำงาน: แอปที่กำหนดเป้าหมายเป็น Android 17 ขึ้นไป

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

นอกจากนี้ โปรดตรวจสอบรายการการเปลี่ยนแปลงลักษณะการทำงานที่ส่งผลต่อแอปทั้งหมด ที่ทำงานบน Android 17 ไม่ว่า targetSdkVersion ของแอปจะเป็นอย่างไร

ฟังก์ชันหลัก

Android 17 มีการเปลี่ยนแปลงต่อไปนี้ซึ่งแก้ไขหรือ ขยายความสามารถหลักต่างๆ ของระบบ Android

การใช้งาน MessageQueue แบบใหม่ที่ไม่มีการล็อก

ตั้งแต่ Android 17 เป็นต้นไป แอปที่กำหนดเป้าหมายเป็น Android 17 หรือสูงกว่าจะได้รับการใช้งานแบบใหม่ที่ไม่มีการล็อกของ android.os.MessageQueue การติดตั้งใช้งานใหม่นี้ช่วยปรับปรุงประสิทธิภาพและ ลดเฟรมที่พลาดไป แต่ก็อาจทำให้ไคลเอ็นต์ที่ใช้ฟิลด์และเมธอดส่วนตัวMessageQueue ใช้งานไม่ได้

ดูข้อมูลเพิ่มเติม รวมถึงกลยุทธ์การลดผลกระทบได้ที่คำแนะนำเกี่ยวกับการเปลี่ยนแปลงลักษณะการทำงานของ MessageQueue

ตอนนี้ฟิลด์สุดท้ายแบบคงที่แก้ไขไม่ได้แล้ว

แอปที่ทำงานบน Android 17 ขึ้นไปซึ่งกำหนดเป้าหมายเป็น Android 17 ขึ้นไปจะเปลี่ยนฟิลด์ static final ไม่ได้ หาก แอปพยายามเปลี่ยนฟิลด์ static final โดยใช้การสะท้อน จะทำให้เกิด IllegalAccessException การพยายามแก้ไขฟิลด์ใดฟิลด์หนึ่งเหล่านี้ ผ่าน JNI API (เช่น SetStaticLongField()) จะทําให้แอปขัดข้อง

การช่วยเหลือพิเศษ

Android 17 ทำการเปลี่ยนแปลงต่อไปนี้เพื่อปรับปรุงการช่วยเหลือพิเศษ

การรองรับการช่วยเหลือพิเศษสำหรับการพิมพ์ด้วยแป้นพิมพ์จริงของ IME ที่ซับซ้อน

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

การรับแอปไปใช้งาน

  • แอป IME: เมื่อตั้งค่าการเขียนข้อความในช่องแก้ไข IME จะใช้ TextAttribute.Builder.setTextSuggestionSelected() เพื่อระบุว่ามีการเลือก ตัวเลือก Conversion ที่เฉพาะเจาะจงหรือไม่

  • แอปที่มีช่องแก้ไข: แอปที่ดูแลรักษา InputConnection ที่กำหนดเองจะ เรียกข้อมูลการเลือกผู้สมัครได้โดยการเรียกใช้ TextAttribute.isTextSuggestionSelected() จากนั้นแอปเหล่านี้ควรเรียกใช้ AccessibilityEvent.setTextChangeTypes() เมื่อส่ง TYPE_VIEW_TEXT_CHANGEDเหตุการณ์ แอปที่กำหนดเป้าหมายเป็น Android 17 ซึ่งใช้ TextView มาตรฐานจะเปิดใช้ฟีเจอร์นี้โดยค่าเริ่มต้น (กล่าวคือ TextView จะจัดการการดึงข้อมูลจาก IME และการตั้งค่าประเภทการเปลี่ยนแปลงข้อความเมื่อส่งเหตุการณ์ไปยังบริการช่วยเหลือพิเศษ)

  • บริการช่วยเหลือพิเศษ: บริการช่วยเหลือพิเศษที่ประมวลผลเหตุการณ์ TYPE_VIEW_TEXT_CHANGED สามารถเรียกใช้ AccessibilityEvent.getTextChangeTypes() เพื่อระบุลักษณะของการแก้ไขและปรับกลยุทธ์ความคิดเห็นตามนั้น

ความปลอดภัย

Android 17 มีการปรับปรุงความปลอดภัยของอุปกรณ์และแอปดังต่อไปนี้

ความปลอดภัยของกิจกรรม

在 Android 17 中,平台继续向“默认安全”架构转变,引入了一系列旨在缓解严重程度较高的漏洞利用(例如网络钓鱼、交互劫持和混淆代理攻击)的增强功能。此更新要求开发者明确选择启用新的安全标准,以保持应用兼容性和用户保护。

对开发者的主要影响包括:

  • BAL 强化和改进的选择启用机制:我们正在通过将保护范围扩展到 IntentSender 来完善后台 activity 启动 (BAL) 限制。 开发者必须弃用旧版 MODE_BACKGROUND_ACTIVITY_START_ALLOWED 常量。相反,您应采用精细的控制措施,例如 MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE,该措施会将 activity 启动限制在调用应用可见的场景中,从而显著减小攻击面。
  • 采用工具:开发者应利用严格模式和更新后的 lint 检查来识别旧版模式,并确保做好准备,以满足未来的目标 SDK 要求。

เปิดใช้ CT โดยค่าเริ่มต้น

หากแอปกำหนดเป้าหมายเป็น Android 17 ขึ้นไป ระบบจะเปิดใช้การตรวจสอบความโปร่งใสของใบรับรอง (CT) โดยค่าเริ่มต้น (ใน Android 16 CT จะพร้อมใช้งาน แต่แอปต้องเลือกใช้)

DCL ดั้งเดิมที่ปลอดภัยยิ่งขึ้น - C

หากแอปกำหนดเป้าหมายเป็น Android 17 ขึ้นไป การปกป้องการโหลดโค้ดแบบไดนามิก (DCL) ที่ปลอดภัยยิ่งขึ้นซึ่งเปิดตัวใน Android 14 สำหรับไฟล์ DEX และ JAR จะขยายไปถึงไลบรารีแบบเนทีฟด้วย

ไฟล์ดั้งเดิมทั้งหมดที่โหลดโดยใช้ System.load() ต้องทำเครื่องหมายเป็นแบบอ่านอย่างเดียว ไม่เช่นนั้น ระบบจะส่ง UnsatisfiedLinkError

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

รูปแบบของอุปกรณ์

Android 17 มีการเปลี่ยนแปลงต่อไปนี้เพื่อปรับปรุงประสบการณ์ของผู้ใช้ ในอุปกรณ์ขนาดและรูปแบบต่างๆ

การเปลี่ยนแปลง API ของแพลตฟอร์มเพื่อไม่สนใจข้อจำกัดด้านการวางแนว ความสามารถในการปรับขนาด และสัดส่วนภาพบนหน้าจอขนาดใหญ่ (sw>=600dp)

เราได้เปิดตัวการเปลี่ยนแปลง Platform API ใน Android 16 เพื่อไม่สนใจข้อจำกัดด้านการวางแนว สัดส่วนภาพ และความสามารถในการปรับขนาดบนหน้าจอขนาดใหญ่ (sw >= 600dp) สำหรับแอปที่กำหนดเป้าหมายเป็น API ระดับ 36 ขึ้นไป นักพัฒนาแอปมีตัวเลือกในการเลือกไม่ใช้การเปลี่ยนแปลงเหล่านี้ด้วย SDK 36 แต่การเลือกไม่ใช้นี้จะไม่มีให้ใช้งานอีกต่อไปสำหรับแอปที่กำหนดเป้าหมายเป็น Android 17 ขึ้นไป

ดูข้อมูลเพิ่มเติมได้ที่ระบบจะเพิกเฉยต่อข้อจำกัดเกี่ยวกับ การวางแนวและการปรับขนาด