Di chuyển sang Android 8.0

Android 8.0 (API cấp 26) ra mắt các thay đổi về hành vi, cũng như các tính năng và API mới mà bạn có thể tận dụng trong ứng dụng của mình. Tài liệu này cung cấp cho bạn thông tin tổng quan về các bước di chuyển ứng dụng của bạn lên Android 8.0 qua hai giai đoạn chính:

  1. Đảm bảo khả năng tương thích với Android 8.0

    Xác minh rằng ứng dụng của bạn có đầy đủ chức năng trên phiên bản mới của nền tảng. Ở giai đoạn này, bạn không dùng API mới hoặc thay đổi targetSdkVersion của ứng dụng, nhưng thực hiện những thay đổi nhỏ có thể là việc cần thiết.

  2. Cập nhật phiên bản đích và sử dụng các tính năng của Android 8.0

    Khi bạn đã sẵn sàng tận dụng các tính năng mới của nền tảng, cập nhật targetSdkVersion của bạn lên 26, xác minh ứng dụng vẫn tiếp tục để hoạt động như mong đợi và sau đó bắt đầu sử dụng các API mới.

Đảm bảo khả năng tương thích với Android 8.0

Mục tiêu ở đây là đảm bảo rằng ứng dụng hiện tại của bạn hoạt động như bình thường trên Android 8.0 (API cấp 26). Do một số thay đổi của nền tảng có thể ảnh hưởng đến cách ứng dụng của bạn hoạt động, một số điều chỉnh có thể cần thiết, nhưng bạn không cần phải sử dụng các API hoặc thay đổi targetSdkVersion của bạn.

Đảm bảo khả năng tương thích từng bước với Android 8.0

Chuẩn bị một thiết bị chạy Android 8.0

  • Nếu bạn có thiết bị tương thích (Pixel, Pixel XL, Pixel C, Nexus 5X, Nexus 6P hoặc Nexus Người chơi), làm theo hướng dẫn cài đặt ROM thiết bị.
  • Hoặc tải ảnh hệ thống Android 8.0 xuống cho Trình mô phỏng Android. Tên trong danh sách Trình quản lý SDK trong Android 8.0 dưới dạng Hình ảnh hệ thống Intel x86 Atom API của Google.

    Lưu ý: Bạn có thể tải hình ảnh hệ thống Android 8.0 xuống từ Android Studio 3.0 trở lên. Để biết thêm thông tin, hãy xem phần bên dưới để tải SDK Android 8.0.

Kiểm thử khả năng tương thích

Đối với hầu hết hoạt động, kiểm thử khả năng tương thích với Android 8.0 (API cấp 26) đòi hỏi cùng một loại thử nghiệm bạn thực hiện khi chuẩn bị phát hành ứng dụng. Đây là thời điểm thích hợp để xem lại Nguyên tắc cốt lõi về chất lượng ứng dụngCác phương pháp thử nghiệm hay nhất.

Tuy nhiên, có một khía cạnh khác trong việc kiểm thử: Android 8.0 đưa ra các thay đổi đối với Android nền tảng có thể ảnh hưởng đến hành vi của ứng dụng hoặc phá vỡ ứng dụng hoàn toàn, ngay cả khi bạn không thay đổi targetSdkVersion của bạn. Vì lý do này, bạn cần xem xét những thay đổi quan trọng trong bảng 1 và thử nghiệm bất kỳ bản sửa lỗi nào mà bạn triển khai để phù hợp với các thay đổi.

Bảng 1. Những thay đổi quan trọng ảnh hưởng đến tất cả ứng dụng chạy trên thiết bị Android 8.0.

Thay đổi Tóm tắt Tài liệu tham khảo thêm
Ít thường xuyên cập nhật quyền truy cập thông tin vị trí ở chế độ nền hơn Nếu nhận được thông tin cập nhật vị trí từ một dịch vụ nền, thì ứng dụng của bạn sẽ ít nhận được thông tin cập nhật vị trí hơn các bản cập nhật trên Android 8.0 (API cấp 26) so với các phiên bản Android cũ hơn. Cụ thể, thông tin về dịch vụ không thể nhận thông tin cập nhật vị trí nhiều hơn vài lần mỗi giờ. Tuy nhiên, mặc dù ứng dụng chạy trong nền trước, tốc độ cập nhật vị trí không thay đổi. Giới hạn quyền truy cập thông tin vị trí ở chế độ nền
net.hostname thiết bị không còn được hỗ trợ Việc truy vấn thuộc tính hệ thống net.hostname sẽ tạo ra kết quả rỗng. Không có
Ngoại lệ mới từ send(DatagramPacket) Phương thức send(DatagramPacket) sẽ gửi một SocketException nếu phương thức connect(InetAddress, int) được thực thi trước đó không thành công. Các thay đổi về hành vi: Khả năng kết nối mạng và HTTP(S)
NullPointerException phù hợp từ AbstractCollection phương thức AbstractCollection.removeAll(null)AbstractCollection.retainAll(null) hiện luôn gửi một NullPointerException; trước đó, NullPointerException không được gửi khi bộ sưu tập trống. Thay đổi này giúp hành vi của bạn phù hợp với tài liệu. Các thay đổi về hành vi: Xử lý việc thu thập
NullPointerException phù hợp từ Currency.getDisplayName(null) Đang gọi cho Currency.getDisplayName(null) sẽ gửi một NullPointerException. Thay đổi về hành vi: Ngôn ngữ bản địa và quốc tế hoá

Để xem danh sách đầy đủ hơn về các thay đổi hành vi trong Android 8.0 (API cấp 26), cũng xem nội dung Thay đổi về hành vi trên Android 8.0.

Cập nhật phiên bản đích và sử dụng các tính năng của Android 8.0

Phần này giải thích cách bật dịch vụ hỗ trợ đầy đủ cho Android 8.0 (API cấp 26) bằng cách cập nhật targetSdkVersion lên 26 cũng như thêm các tính năng mới có trong Android 8.0.

Ngoài việc cung cấp cho bạn các API mới, Android 8.0 còn giới thiệu một số hành vi sẽ thay đổi khi bạn cập nhật targetSdkVersion lên 26. Do một số hành vi thay đổi có thể yêu cầu thay đổi mã để tránh lỗi, trước tiên, bạn nên hiểu cách ứng dụng của mình có thể bị ảnh hưởng khi bạn thay đổi targetSdkVersion bằng cách xem lại tất cả thay đổi về hành vi đối với ứng dụng nhắm đến Android 8.0.

Lưu ý: Các bước đã mô tả ở trên để đảm bảo khả năng tương thích với nền tảng là điều kiện tiên quyết để nhắm ứng dụng của bạn đến Android 8.0, vì vậy, hãy nhớ hoàn thành các bước đó trước.

Cập nhật phiên bản đích và sử dụng các tính năng của Android 8.0 theo từng bước

Tải SDK Android 8.0

Bạn có thể nhận các gói SDK để xây dựng ứng dụng trên Android 8.0 (API cấp 26) bằng phiên bản mới nhất của Android Studio (nên sử dụng Android Studio 3.0 trở lên). Android Studio 3.0 trở lên bao gồm các công cụ giúp bạn sử dụng các tính năng của Android 8.0 chẳng hạn như biểu tượng thích ứngphông chữ có thể tải xuống. Nếu không cần những tính năng đó thì bạn có thể sử dụng phiên bản Android Studio ổn định 2.3.3 để xây dựng ứng dụng của bạn với Android 8.0 và sử dụng các API mới.

Để thiết lập bằng một trong hai phiên bản Android Studio, hãy làm theo các bước sau:

  1. Chạy Android Studio rồi mở Trình quản lý SDK bằng cách nhấp vào Công cụ > Trình quản lý SDK.
  2. Trong thẻ SDK Platforms (Nền tảng SDK), hãy đánh dấu vào mục Show Package Details (Hiện chi tiết gói). Thấp hơn Bản dùng thử Android 8.0 kiểm tra những điều sau:
    • Nền tảng SDK Android 26
    • Hình ảnh hệ thống Intel x86 Atom cho các API của Google (chỉ bắt buộc đối với trình mô phỏng)
  3. Chuyển sang thẻ SDK Tools (Bộ công cụ SDK) rồi kiểm tra tất cả các mục có bản cập nhật (nhấp vào mỗi hộp đánh dấu hiện dấu gạch ngang ). Tệp này phải bao gồm phiên bản mới nhất của các mục sau bắt buộc:
    • Android SDK Build-Tools 26.0.0 (Công cụ xây dựng SDK Android 26.0.0)
    • Công cụ nền tảng SDK Android 26.0.0
    • Trình mô phỏng Android 26.0.0
  4. Nhấp vào OK để cài đặt mọi gói SDK đã chọn.

Giờ đây, bạn đã sẵn sàng bắt đầu tạo ứng dụng bằng Android 8.0.

Cập nhật cấu hình bản dựng

Cập nhật compileSdkVersion, targetSdkVersion và Thư viện hỗ trợ có phiên bản mới nhất các bản sửa đổi có sẵn, ví dụ:

android {
  compileSdkVersion 26

  defaultConfig {
    targetSdkVersion 26
  }
  ...
}

dependencies {
  compile 'com.android.support:appcompat-v7:26.0.0'
}

// REQUIRED: Google's new Maven repo is required for the latest
// support library that is compatible with Android 8.0
repositories {
    google()

    // If you're using a version of Gradle lower than 4.1, you must instead use:
    // maven {
    //     url 'https://maven.google.com'
    // }
}

Xoá broadcast receiver khỏi tệp kê khai

Vì Android 8.0 (API cấp 26) giới thiệu tính năng mới giới hạn cho broadcast receiver, bạn nên xoá mọi broadcast receiver đã đăng ký cho ý định truyền tin ngầm. Việc đặt chúng ở đúng vị trí sẽ không làm hỏng ứng dụng của bạn tại thời điểm xây dựng hoặc thời gian chạy, nhưng chúng không có hiệu lực khi ứng dụng của bạn chạy trên Android 8.0.

Các thông báo truyền tin mà chỉ ứng dụng của bạn mới có thể phản hồi – Ý định truyền tin rõ ràng và thông báo truyền tin được gửi đến tên gói của ứng dụng cụ thể—tiếp tục hoạt động tương tự trên Android 8.0.

Quy định hạn chế mới này có những ngoại lệ. Đối với danh sách thông báo truyền phát ngầm vẫn hoạt động trong các ứng dụng nhắm mục tiêu Android 8.0, hãy xem Ngoại lệ thông báo truyền phát ngầm.

Kiểm thử ứng dụng trên Android 8.0

Sau khi hoàn tất các bước chuẩn bị ở trên, bạn có thể tạo ứng dụng rồi thử nghiệm để đảm bảo ứng dụng hoạt động đúng cách khi nhắm đến Android 8.0 (API cấp 26). Đây là thời điểm thích hợp để xem lại Ứng dụng chính Nguyên tắc về chất lượngNguyên tắc tốt nhất Các phương pháp kiểm thử.

Khi bạn tạo ứng dụng bằng targetSdkVersion được đặt thành 26, có những thay đổi cụ thể trên nền tảng mà bạn cần biết. Một số những thay đổi này có thể ảnh hưởng đáng kể đến hành vi của ứng dụng hoặc thậm chí phá vỡ ứng dụng hoàn toàn, ngay cả khi bạn không triển khai trong Android 8.0.

Bảng 2 cung cấp danh sách những thay đổi này cùng với các đường liên kết để tìm hiểu thêm.

Bảng 2. Những thay đổi chính ảnh hưởng đến ứng dụng khi bạn đặt targetSdkVersion thành 26.

Thay đổi Tóm tắt Tài liệu tham khảo thêm
Quyền riêng tư Android 8.0 (API cấp 26) không hỗ trợ sử dụng Các thuộc tính của hệ thống net.dns1, net.dns2, net.dns3 hoặc net.dns4. Các thay đổi về hành vi: Quyền riêng tư
Đã thực thi phân đoạn có thể ghi và có thể thực thi Đối với thư viện gốc, Android 8.0 (API cấp 26) thực thi quy tắc dữ liệu không được thực thi và mã không được ghi. Các thay đổi về hành vi: Thư viện gốc
Xác thực mục và tiêu đề ELF Trình liên kết động sẽ kiểm tra nhiều giá trị hơn trong tiêu đề ELF và tiêu đề phần và sẽ không thành công nếu chúng không hợp lệ. Các thay đổi về hành vi: Thư viện gốc
Thông báo Ứng dụng nhắm đến phiên bản SDK Android 8.0 (API cấp 26) phải triển khai một hoặc nhiều kênh thông báo để đăng thông báo cho người dùng. Tổng quan về API: Thông báo
Phương thức List.sort() Việc triển khai phương thức này có thể không còn gọi Collections.sort(), hoặc ứng dụng của bạn sẽ gửi ra một ngoại lệ do tràn ngăn xếp. Các thay đổi về hành vi: Xử lý việc thu thập
Phương thức Collections.sort() Trong quá trình triển khai List (Danh sách), Collections.sort() hiện sẽ gửi một ConcurrentModificationException Hành vi Thay đổi: Xử lý việc thu thập

Để có danh sách rộng hơn về các thay đổi hành vi trong Android 8.0 (API cấp 26), xem nội dung Thay đổi về hành vi trên Android 8.0.

Để khám phá các tính năng và API mới có trong Android 8.0 (API cấp 26), hãy xem Các tính năng và API của Android 8.0.