Cập nhật phiên bản SDK mục tiêu của ứng dụng cho Wear\'OS\'4

Sau khi cập nhật ứng dụng để chuẩn bị cho Wear OS 4, bạn có thể cải thiện thêm khả năng tương thích của ứng dụng với phiên bản Wear OS này bằng cách nhắm đến Android 13 (API cấp 33).

Nếu bạn cập nhật phiên bản SDK mục tiêu, hãy xử lý những thay đổi về hành vi hệ thống có hiệu lực với các ứng dụng nhắm đến Android 12 trở lên, cũng như các ứng dụng nhắm đến Android 13 trở lên. Cụ thể, hãy cân nhắc các thay đổi về quyềnthành phần ứng dụng cũng như hành vi điều hướng được mô tả ở phần sau của hướng dẫn này.

Cập nhật tệp bản dựng

Để cập nhật phiên bản SDK mục tiêu, hãy mở tệp build.gradle hoặc build.gradle.kts ở cấp mô-đun rồi cập nhật tệp này bằng các giá trị cho Android 13.

Cách bạn định dạng các giá trị trong tệp bản dựng phụ thuộc vào phiên bản trình bổ trợ Android cho Gradle (AGP) mà bạn đang dùng.

AGP 7.0.0 trở lên

Nếu đang sử dụng AGP 7.0.0 trở lên, bạn hãy cập nhật tệp build.gradle hoặc build.gradle.kts của ứng dụng bằng các giá trị sau cho Android 13:

Groovy

android {
    compileSdk 33
    ...
    defaultConfig {
        targetSdk 33
    }
}

Kotlin

android {
    compileSdk = 33
    ...
    defaultConfig {
        targetSdk = 33
    }
}

AGP 4.2.0 trở xuống

Nếu đang sử dụng AGP 4.2.0 trở xuống, bạn hãy cập nhật tệp build.gradle hoặc build.gradle.kts của ứng dụng bằng các giá trị sau cho Android 13:

Groovy

android {
    compileSdkVersion "33"
    ...
    defaultConfig {
        targetSdkVersion "33"
    }
}

Kotlin

android {
    compileSdkVersion = "33"
    ...
    defaultConfig {
        targetSdkVersion = "33"
    }
}

Các thay đổi về quyền

Phần này liệt kê một số thay đổi về các quyền ảnh hưởng đến ứng dụng sau khi những quyền đó nhắm đến Android 13.

Quyền đối với cảm biến cơ thể khi ở trong nền

Để nhận thông tin từ các cảm biến cơ thể thông thường, chẳng hạn như nhịp tim, ở chế độ nền, hãy yêu cầu quyền BODY_SENSORS_BACKGROUND.

Tìm hiểu thêm trong hướng dẫn yêu cầu quyền truy cập vào dữ liệu cảm biến cơ thể khi ở nền sau.

Quyền thông báo chính xác

Để sử dụng thông báo được xác định thời gian chính xác (còn gọi là thông báo chính xác), bạn cần phải khai báo quyền USE_EXACT_ALARM hoặc SCHEDULE_EXACT_ALARM.

Hãy dùng thông báo không chính xác, trừ phi các tính năng cốt lõi của ứng dụng phụ thuộc vào thông báo chính xác (chẳng hạn như ứng dụng đồng hồ báo thức hoặc ứng dụng lịch). Hầu hết các ứng dụng đều có thể lên lịch cho các tác vụ và sự kiện bằng cách sử dụng thông báo không chính xác.

Tìm hiểu thêm về cách đặt thông báo chính xác.

Quyền truy cập nội dung nghe nhìn ở cấp độ chi tiết

Nếu ứng dụng của bạn cần truy cập vào các tệp nội dung nghe nhìn mà các ứng dụng khác đã tạo, thì bạn phải yêu cầu quyền truy cập nội dung nghe nhìn ở cấp độ chi tiết, bắt đầu bằng READ_MEDIA_*, thay vì quyền READ_EXTERNAL_STORAGE. Nếu trước đây ứng dụng của bạn đã được cấp quyền READ_EXTERNAL_STORAGE, thì hệ thống sẽ tự động cấp các quyền truy cập cần thiết vào nội dung nghe nhìn ở cấp độ chi tiết.

Tìm hiểu thêm về các quyền truy cập nội dung nghe nhìn ở cấp độ chi tiết.

Thay đổi về thành phần ứng dụng và hành vi điều hướng

Phần này liệt kê một số thay đổi về thành phần ứng dụng và hành vi điều hướng ảnh hưởng đến các ứng dụng sau khi ứng dụng nhắm đến Android 13.

Yêu cầu đối với việc xuất thành phần ứng dụng

Nếu ứng dụng của bạn chứa các hoạt động, dịch vụ hoặc broadcast receiver sử dụng bộ lọc ý định, thì bạn phải khai báo rõ ràng thuộc tính android:exported cho các thành phần ứng dụng này.

Tìm hiểu thêm về tính năng xuất thành phần an toàn hơn.

Chỉ định khả năng biến đổi của ý định đang chờ xử lý

Bạn phải chỉ định xem mỗi đối tượng PendingIntent trong ứng dụng của mình là có thể biến đổi hay không thể biến đổi. Trong hầu hết trường hợp, hãy sử dụng các đối tượng PendingIntent không thể biến đổi để bảo vệ tính toàn vẹn của dữ liệu bên trong ý định.

Tìm hiểu thêm về cách chỉ định khả năng biến đổi của ý định đang chờ xử lý.

Các hạn chế khi khởi động dịch vụ trên nền trước

Trong hầu hết trường hợp, ứng dụng của bạn không thể bắt đầu các dịch vụ trên nền trước khi đang chạy ở chế độ nền.

Tìm hiểu thêm về các hạn chế khi khởi động dịch vụ trên nền trước từ nền.

Các hạn chế về thành phần phản hồi với thao tác nhấn vào thông báo

Sau khi người dùng tương tác với thông báo, bạn không thể gọi startActivity() bên trong một dịch vụ hoặc broadcast receiver. Thành phần ứng dụng xen kẽ như vậy (chỉ có khả năng chạy một hoạt động) được gọi là thành phần phản hồi với thao tác nhấn vào thông báo (notification trampoline).

Tìm hiểu thêm về các hạn chế về thành phần phản hồi với thao tác nhấn vào thông báo.