Android 8.0 (API cấp 26) giới thiệu 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 sang Android 8.0 qua hai giai đoạn chính:
- Đả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 hoạt động đầy đủ trên phiên bản mới của nền tảng. Ở giai đoạn này, bạn không sử dụng các API mới hoặc thay đổi
targetSdkVersion
của ứng dụng, nhưng có thể cần phải thực hiện một số thay đổi nhỏ. - Cập nhật phiên bản mục tiêu 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, hãy cập nhật
targetSdkVersion
lên 26, xác minh ứng dụng tiếp tục hoạt động như mong đợi, 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 có của bạn hoạt động như bình thường trên Android 8.0 (API cấp 26). Vì một số thay đổi của nền tảng có thể ảnh hưởng đến cách hoạt động của ứng dụng, nên bạn có thể cần phải điều chỉnh một số nội dung. Tuy nhiên, bạn không cần phải sử dụng API mới hoặc thay đổi targetSdkVersion
.
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 Player), hãy làm theo hướng dẫn cài đặt ROM cho thiết bị.
- Hoặc tải hình ảnh hệ thống Android 8.0 xuống cho Trình mô phỏng Android. Hình ảnh này được liệt kê trong Trình quản lý SDK trong Android 8.0 dưới dạng Hình ảnh hệ thống Intel x86 Atom của API 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, quy trình kiểm thử khả năng tương thích với Android 8.0 (API cấp 26) cũng tương tự như quy trình kiểm thử 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ụng và Các phương pháp kiểm thử hay nhất.
Tuy nhiên, có một khía cạnh khác cần kiểm thử: Android 8.0 giới thiệu các thay đổi đối với nền tảng Android có thể ảnh hưởng đến hành vi của ứng dụng hoặc làm hỏng toàn bộ ứng dụng, ngay cả khi bạn không thay đổi targetSdkVersion
. Vì lý do này, bạn cần xem lại các thay đổi chính trong bảng 1 và kiểm thử mọi bản sửa lỗi mà bạn triển khai để điều chỉnh cho phù hợp với các thay đổi đó.
Thay đổi | Tóm tắt | Tài liệu tham khảo khác |
---|---|---|
Cập nhật thông tin vị trí ở chế độ nền ít thường xuyên hơn | Nếu ứng dụng của bạn nhận được thông tin cập nhật vị trí từ một dịch vụ nền, thì ứng dụng sẽ nhận được thông tin cập nhật ít thường xuyên hơn trên Android 8.0 (API cấp 26) so với các phiên bản Android cũ. Cụ thể, một dịch vụ ở chế độ nền không thể nhận được thông tin cập nhật vị trí nhiều hơn vài lần mỗi giờ. Tuy nhiên, trong khi ứng dụng của bạn chạy ở nền trước, tốc độ cập nhật vị trí sẽ 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ó |
Trường hợp 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) đã thực thi trước đó không thành công.
|
Thay đổi về hành vi: Kết nối mạng và HTTP(S) |
NullPointerException phù hợp trong các phương thức AbstractCollection
|
AbstractCollection.removeAll(null) và AbstractCollection.retainAll(null) hiện luôn gửi NullPointerException ; trước đây, NullPointerException không được gửi khi bộ sưu tập trống.
Thay đổi này giúp hành vi nhất quán 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)
|
Thao tác gọi Currency.getDisplayName(null) sẽ gửi một NullPointerException .
|
Thay đổi về hành vi: Ngôn ngữ và bản địa hoá |
Để biết danh sách đầy đủ hơn về các thay đổi về hành vi trong Android 8.0 (API cấp 26), hãy xem phần Các thay đổi về hành vi trong Android 8.0.
Cập nhật phiên bản mục tiêu 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 và 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ố thay đổi về hành vi khi bạn cập nhật targetSdkVersion
lên 26. Vì một số thay đổi về hành vi có thể yêu cầu thay đổi mã để tránh sự cố, nên trước tiên, bạn nên tìm hiểu xem ứng dụng của mình có thể bị ảnh hưởng như thế nào khi bạn thay đổi targetSdkVersion
bằng cách xem xét tất cả thay đổi về hành vi đối với các ứng dụng nhắm đến Android 8.0.
Lưu ý: Các bước đượ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 tất các bước đó trước.
Tải SDK Android 8.0
Bạn có thể tải các gói SDK để xây dựng ứng dụng bằng Android 8.0 (API cấp 26) bằng phiên bản mới nhất của Android Studio (nên dùng Android Studio 3.0 trở lên). Android Studio 3.0 trở lên có các công cụ giúp bạn về các tính năng của Android 8.0 như biểu tượng thích ứng và phông chữ có thể tải xuống. Nếu chưa cần các tính năng đó, bạn có thể sử dụng phiên bản ổn định của Android Studio 2.3.3 để xây dựng ứng dụng bằng Android 8.0 và sử dụng các API mới.
Để thiết lập với một trong hai phiên bản Android Studio, hãy làm theo các bước sau:
- Chạy Android Studio rồi mở Trình quản lý SDK bằng cách nhấp vào Tools > SDK Manager (Công cụ > Trình quản lý SDK).
- Trong thẻ SDK Platforms (Nền tảng SDK), hãy đánh dấu vào Show Package Details (Hiện chi tiết gói). Bên dưới phần Bản dùng thử Android 8.0, hãy kiểm tra những mục sau:
- Nền tảng SDK Android 26
- Hình ảnh hệ thống Intel x86 Atom của API của Google (chỉ bắt buộc đối với trình mô phỏng)
- Chuyển sang thẻ SDK Tools (Bộ công cụ SDK) rồi đánh dấu vào tất cả các mục có bản cập nhật (nhấp vào từng hộp đánh dấu có dấu gạch ngang ). Danh sách này phải bao gồm các phiên bản mới nhất của các mục bắt buộc sau:
- Android SDK Build-Tools 26.0.0
- Android SDK Platform-Tools 26.0.0
- Trình mô phỏng Android 26.0.0
- Nhấp vào OK để cài đặt tất cả gói SDK đã chọn.
Giờ thì 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à phiên bản Thư viện hỗ trợ lên các bản sửa đổi mới nhất hiện có, 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 các giới hạn mới cho broadcast receiver, nên bạn nên xoá mọi broadcast receiver đã đăng ký cho ý định truyền tin ngầm ẩn. Việc đặt các tuỳ chọn này ở đú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. Tuy nhiên, chúng sẽ không có hiệu lực khi ứng dụng 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 thô tục và thông báo truyền tin được gửi riêng đến tên gói của ứng dụng – sẽ 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ó một số ngoại lệ. Để biết danh sách các 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 bài viết Ngoại lệ thông báo truyền phát ngầm.
Kiểm thử ứng dụng Android 8.0
Sau khi hoàn tất các bước chuẩn bị ở trên, bạn có thể xây dựng ứng dụng rồi kiểm thử thê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 Nguyên tắc cốt lõi về chất lượng ứng dụng và Các phương pháp kiểm thử hay nhất.
Khi tạo ứng dụng với targetSdkVersion
được đặt thành 26, bạn cần lưu ý một số thay đổi cụ thể đối với nền tảng. Một số 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í làm hỏng toàn bộ ứng dụng, ngay cả khi bạn không triển khai các tính năng mới trong Android 8.0.
Bảng 2 cung cấp danh sách các thay đổi này cùng đường liên kết đến thông tin chi tiết hơn.
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 hệ thống net.dns1, net.dns2, net.dns3 hoặc net.dns4. | Thay đổi về hành vi: Quyền riêng tư |
Thực thi các phân đoạn có thể ghi và 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. | Thay đổi về hành vi: Thư viện gốc |
Xác thực tiêu đề và phần 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 các giá trị đó không hợp lệ. | Thay đổi về hành vi: Thư viện gốc |
Thông báo | Các ứ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()
|
Các phương thức triển khai phương thức này có thể không gọi Collections.sort() nữa hoặc ứng dụng của bạn sẽ gửi một ngoại lệ do tràn ngăn xếp.
|
Thay đổi về hành vi: Xử lý bộ sưu tập |
Phương thức Collections.sort()
|
Trong quá trình triển khai Danh sách, Collections.sort() hiện sẽ gửi một
ConcurrentModificationException .
|
Thay đổi về hành vi: Xử lý bộ sưu tập |
Để xem danh sách đầy đủ hơn về các thay đổi về hành vi trong Android 8.0 (API cấp 26), hãy xem phần Các thay đổi về hành vi trong 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 bài viết Tính năng và API của Android 8.0.