Giống như các bản phát hành trước, Android 17 có các thay đổi về hành vi có thể ảnh hưởng đến ứng dụng của bạn. Những thay đổi về hành vi sau đây chỉ áp dụng cho ứng dụng nhắm đến Android 17 trở lên. Nếu ứng dụng của bạn nhắm đến Android 17 trở lên, bạn nên điều chỉnh ứng dụng để hỗ trợ những hành vi này (nếu cần).
Ngoài ra, hãy nhớ tham khảo danh sách các thay đổi về hành vi ảnh hưởng đến tất cả ứng dụng chạy trên Android 17 bất kể targetSdkVersion của ứng dụng.
Chức năng cốt lõi
Android 17 có những thay đổi sau đây giúp sửa đổi hoặc mở rộng nhiều chức năng cốt lõi của hệ thống Android.
Triển khai MessageQueue mới không có khoá
Bắt đầu từ Android 17, các ứng dụng nhắm đến Android 17 trở lên sẽ nhận được một cách triển khai mới không có khoá của android.os.MessageQueue. Việc triển khai mới này giúp cải thiện hiệu suất và giảm số khung hình bị bỏ lỡ, nhưng có thể làm hỏng những ứng dụng phản ánh các trường và phương thức riêng tư MessageQueue.
Để biết thêm thông tin, bao gồm cả các chiến lược giảm thiểu, hãy xem Hướng dẫn về thay đổi hành vi MessageQueue.
Hỗ trợ tiếp cận
Android 17 có những thay đổi sau đây để cải thiện khả năng hỗ trợ tiếp cận.
Hỗ trợ tiếp cận cho việc nhập bằng bàn phím vật lý của IME phức tạp
Tính năng này giới thiệu các API AccessibilityEvent và TextAttribute mới để cải thiện tính năng phản hồi bằng giọng nói của trình đọc màn hình cho nội dung nhập bằng ngôn ngữ CJKV. Giờ đây, các ứng dụng CJKV IME có thể báo hiệu liệu một đề xuất chuyển đổi văn bản đã được chọn trong quá trình soạn văn bản hay chưa. Các ứng dụng có trường chỉnh sửa có thể chỉ định các loại thay đổi văn bản khi gửi sự kiện hỗ trợ tiếp cận có văn bản đã thay đổi.
Ví dụ: các ứng dụng có thể chỉ định rằng một thay đổi về văn bản đã xảy ra trong quá trình soạn văn bản hoặc một thay đổi về văn bản là kết quả của một thao tác xác nhận.
Việc này cho phép các dịch vụ hỗ trợ tiếp cận (chẳng hạn như trình đọc màn hình) đưa ra ý kiến phản hồi chính xác hơn dựa trên bản chất của nội dung sửa đổi văn bản.
Số ứng dụng sử dụng
Ứng dụng IME: Khi đặt văn bản soạn thảo trong các trường chỉnh sửa, IME có thể dùng
TextAttribute.Builder.setTextSuggestionSelected()để cho biết liệu một ứng cử viên chuyển đổi cụ thể có được chọn hay không.Ứng dụng có tính năng Chỉnh sửa trường: Ứng dụng duy trì
InputConnectiontuỳ chỉnh có thể truy xuất dữ liệu lựa chọn đề xuất bằng cách gọiTextAttribute.isTextSuggestionSelected(). Sau đó, các ứng dụng này sẽ gọiAccessibilityEvent.setTextChangeTypes()khi gửi các sự kiệnTYPE_VIEW_TEXT_CHANGED. Theo mặc định, các ứng dụng nhắm đến Android 17 sử dụngTextViewtiêu chuẩn sẽ bật tính năng này. (Tức làTextViewsẽ xử lý việc truy xuất dữ liệu từ IME và thiết lập các loại thay đổi văn bản khi gửi sự kiện đến các dịch vụ hỗ trợ tiếp cận).Dịch vụ hỗ trợ tiếp cận: Các dịch vụ hỗ trợ tiếp cận xử lý sự kiện
TYPE_VIEW_TEXT_CHANGEDcó thể gọiAccessibilityEvent.getTextChangeTypes()để xác định bản chất của nội dung sửa đổi và điều chỉnh các chiến lược phản hồi cho phù hợp.
Bảo mật
Android 17 có những điểm cải tiến sau đây về tính bảo mật của thiết bị và ứng dụng.
Bảo mật hoạt động
Trong Android 17, nền tảng này tiếp tục chuyển sang cấu trúc "bảo mật theo mặc định", giới thiệu một loạt các điểm cải tiến được thiết kế để giảm thiểu các hành vi khai thác có mức độ nghiêm trọng cao, chẳng hạn như tấn công giả mạo, chiếm đoạt tương tác và tấn công nhầm lẫn. Bản cập nhật này yêu cầu nhà phát triển phải chọn sử dụng các tiêu chuẩn bảo mật mới một cách rõ ràng để duy trì khả năng tương thích của ứng dụng và bảo vệ người dùng.
Sau đây là những tác động chính đối với nhà phát triển:
- Tăng cường BAL và cải thiện lựa chọn tham gia: Chúng tôi đang tinh chỉnh các quy tắc hạn chế về Hoạt động khởi chạy ở chế độ nền (BAL) bằng cách mở rộng các biện pháp bảo vệ cho
IntentSender. Nhà phát triển phải di chuyển khỏi hằng sốMODE_BACKGROUND_ACTIVITY_START_ALLOWEDcũ. Thay vào đó, bạn nên áp dụng các chế độ kiểm soát chi tiết nhưMODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE. Chế độ này hạn chế hoạt động bắt đầu trong các trường hợp ứng dụng gọi có thể nhìn thấy, giúp giảm đáng kể phạm vi tấn công. - Công cụ áp dụng: Nhà phát triển nên sử dụng chế độ nghiêm ngặt và các chế độ kiểm tra lint mới để xác định các mẫu cũ và đảm bảo đáp ứng các yêu cầu về SDK mục tiêu trong tương lai.
Bảo vệ máy chủ lưu trữ cục bộ
Để cải thiện tính bảo mật của nền tảng và quyền riêng tư của người dùng, Android 17 giới thiệu một quyền mới tại thời gian cài đặt, USE_LOOPBACK_INTERFACE. Thay đổi này hạn chế hoạt động giao tiếp giữa các ứng dụng và giữa các hồ sơ qua giao diện loopback (ví dụ: 127.0.0.1 hoặc ::1), trước đây được cho phép ngầm với quyền INTERNET. Đối với các ứng dụng nhắm đến Android 17 trở lên, các quy tắc sau đây sẽ áp dụng:
- Cần có sự đồng ý của cả hai bên: theo mặc định, hoạt động giao tiếp giữa các ứng dụng và hồ sơ hiện bị chặn. Để kết nối thành công, cả ứng dụng gửi và ứng dụng nhận đều phải khai báo rõ ràng quyền
USE_LOOPBACK_INTERFACEtrong tệp kê khai của chúng. - Lưu lượng truy cập trong ứng dụng được miễn trừ: Hoạt động giao tiếp vòng lặp trong cùng một ứng dụng (hoạt động giao tiếp trong ứng dụng) vẫn không bị ảnh hưởng và không yêu cầu quyền mới này.
- Hành vi của SDK mục tiêu:
- Ứng dụng nhắm đến Android 17 trở lên: Bạn phải yêu cầu quyền một cách rõ ràng. Nếu thiếu, các thao tác trên ổ cắm (chẳng hạn như kết nối TCP hoặc gửi UDP) sẽ không thành công, thường trả về lỗi
EPERM(không được phép thực hiện thao tác). - Ứng dụng nhắm đến API cấp 36 trở xuống: Quyền này được coi là một quyền tách biệt trên
INTERNET. Các ứng dụng nhắm đến cấp độ API thấp hơn sẽ được tự động cấp quyền này nếu giữINTERNET.
- Ứng dụng nhắm đến Android 17 trở lên: Bạn phải yêu cầu quyền một cách rõ ràng. Nếu thiếu, các thao tác trên ổ cắm (chẳng hạn như kết nối TCP hoặc gửi UDP) sẽ không thành công, thường trả về lỗi
- Cảnh báo về khả năng tương thích: Nếu một ứng dụng nhận cập nhật mục tiêu của ứng dụng đó thành Android 17 nhưng không yêu cầu quyền này, thì các kết nối đến từ các ứng dụng khác sẽ bị từ chối, ngay cả khi ứng dụng gửi nhắm đến một cấp độ API thấp hơn.
Bật CT theo mặc định
Nếu một ứng dụng nhắm đến Android 17 trở lên, thì tính minh bạch của chứng chỉ (CT) sẽ được bật theo mặc định. (Trên Android 16, CT có sẵn nhưng các ứng dụng phải chọn sử dụng.)
DCL gốc an toàn hơn – C
Nếu ứng dụng của bạn nhắm đến Android 17 trở lên, thì tính năng bảo vệ Tải mã động (DCL) an toàn hơn được giới thiệu trong Android 14 cho các tệp DEX và JAR hiện đã mở rộng sang các thư viện gốc.
Tất cả các tệp gốc được tải bằng System.load() đều phải được đánh dấu là chỉ đọc.
Nếu không, hệ thống sẽ gửi UnsatisfiedLinkError.
Bất cứ khi nào có thể thì bạn nên tránh tải mã động, vì làm như vậy sẽ làm tăng đáng kể nguy cơ ứng dụng có thể bị xâm phạm do bị chèn mã hoặc can thiệp vào mã.
Kiểu dáng thiết bị
Android 17 có những thay đổi sau đây để cải thiện trải nghiệm người dùng trên nhiều kích thước thiết bị và kiểu dáng.
Các thay đổi về API nền tảng để bỏ qua các ràng buộc về hướng, khả năng đổi kích thước và tỷ lệ khung hình trên màn hình lớn (sw>=600dp)
Chúng tôi đã giới thiệu các thay đổi về Platform API trong Android 16 để bỏ qua các hạn chế về hướng, tỷ lệ khung hình và khả năng đổi kích thước trên màn hình lớn (sw >= 600dp) đối với các ứng dụng nhắm đến API cấp 36 trở lên. Nhà phát triển có thể chọn không áp dụng những thay đổi này bằng SDK 36, nhưng lựa chọn không áp dụng này sẽ không còn dùng được cho các ứng dụng nhắm đến Android 17 trở lên.
Để biết thêm thông tin, hãy xem phần Các hạn chế về hướng và khả năng thay đổi kích thước sẽ bị bỏ qua.