Xây dựng cho ChromeOS

Các thiết bị ChromeOS (chẳng hạn như Chromebook) hỗ trợ Cửa hàng Google Play và các ứng dụng Android. Tài liệu này giả định rằng bạn có một ứng dụng Android hiện có được thiết kế cho điện thoại hoặc máy tính bảng mà bạn muốn tối ưu hoá cho Chromebook. Để tìm hiểu những kiến thức cơ bản về cách tạo ứng dụng Android, hãy xem bài viết Tạo ứng dụng Android đầu tiên.

Cập nhật tệp kê khai của ứng dụng

Để bắt đầu, hãy cập nhật tệp kê khai để tính đến một số điểm khác biệt chính về phần cứng và phần mềm giữa Chromebook và các thiết bị khác chạy Android.

Kể từ ChromeOS phiên bản M53, tất cả ứng dụng Android không yêu cầu rõ ràng tính năng android.hardware.touchscreen cũng hoạt động trên các thiết bị ChromeOS hỗ trợ tính năng android.hardware.faketouch. Tuy nhiên, để giúp ứng dụng của bạn hoạt động trên mọi Chromebook, hãy cập nhật tệp kê khai để không yêu cầu tính năng android.hardware.touchscreen, như trong ví dụ sau.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          ... >
    <!-- Some Chromebooks don't support touch. Although not essential,
         it's a good idea to explicitly include this declaration. -->
    <uses-feature android:name="android.hardware.touchscreen"
                  android:required="false" />
</manifest>

Các thiết bị phần cứng khác nhau được trang bị các bộ cảm biến khác nhau và Chromebook có thể không có tất cả các cảm biến có trong thiết bị cầm tay Android, chẳng hạn như GPS và gia tốc kế. Tuy nhiên, trong một số trường hợp, chức năng của cảm biến được cung cấp theo cách khác. Ví dụ: Chromebook có thể không có cảm biến GPS, nhưng cung cấp dữ liệu vị trí dựa trên kết nối Wi-Fi. Hãy xem phần tổng quan về cảm biến để tìm hiểu thêm về các cảm biến mà nền tảng Android hỗ trợ.

Nếu muốn ứng dụng chạy trên Chromebook bất kể có cảm biến hay không, hãy cập nhật tệp kê khai để không yêu cầu cảm biến.

Một số tính năng phần mềm không được hỗ trợ trên Chromebook. Ví dụ: các ứng dụng cung cấp IME tuỳ chỉnh, tiện ích ứng dụng, hình nền động và trình chạy ứng dụng không được hỗ trợ và không thể cài đặt trên Chromebook. Để xem danh sách đầy đủ các tính năng phần mềm không được hỗ trợ trên Chromebook, hãy xem các tính năng phần mềm không tương thích.

Cập nhật SDK mục tiêu

Cập nhật thuộc tính targetSdkVersion của ứng dụng lên cấp độ API mới nhất hiện có để tận dụng mọi điểm cải tiến trong nền tảng Android. Xem xét những điểm cải tiến trong nền tảng Android qua các phiên bản khác nhau.

Kiểm tra các yêu cầu về mạng

Chromebook chạy toàn bộ hệ điều hành Android trong một vùng chứa, tương tự như Docker hoặc LXC. Điều này có nghĩa là Android không có quyền truy cập trực tiếp vào giao diện LAN của hệ thống. Thay vào đó, lưu lượng truy cập IPv4 sẽ đi qua một lớp dịch địa chỉ mạng (NAT) nội bộ và lưu lượng truy cập đơn hướng IPv6 sẽ được định tuyến qua một bước nhảy bổ sung.

Các kết nối đơn hướng đi ra từ một ứng dụng Android đến Internet hầu hết đều hoạt động như bình thường. Nhìn chung, các kết nối đi vào sẽ bị chặn. Các gói phát đa hướng hoặc phát sóng từ Android không được chuyển tiếp đến mạng LAN thông qua tường lửa.

Là một trường hợp ngoại lệ đối với hạn chế truyền tin đa hướng, ChromeOS chạy một dịch vụ chuyển tiếp lưu lượng truy cập mDNS giữa Android và giao diện LAN, vì vậy, API khám phá dịch vụ mạng tiêu chuẩn là cách được đề xuất để khám phá các thiết bị khác trên phân đoạn LAN. Sau khi tìm thấy một thiết bị trên mạng LAN, một ứng dụng Android có thể dùng các socket đơn hướng TCP hoặc UDP tiêu chuẩn để giao tiếp với thiết bị đó.

Các kết nối IPv4 bắt nguồn từ Android sẽ sử dụng địa chỉ IPv4 của máy chủ ChromeOS. Về nội bộ, ứng dụng Android sẽ thấy một địa chỉ IPv4 riêng tư được chỉ định cho giao diện mạng. Các kết nối IPv6 bắt nguồn từ Android sử dụng một địa chỉ khác với máy chủ ChromeOS, vì vùng chứa Android có một địa chỉ IPv6 công khai riêng.

Sử dụng hiệu quả bộ nhớ trên đám mây và bộ nhớ cục bộ

Chromebook giúp người dùng dễ dàng di chuyển dữ liệu từ thiết bị này sang thiết bị khác. Nếu người dùng ngừng sử dụng một Chromebook và bắt đầu sử dụng một Chromebook khác, họ chỉ cần đăng nhập và tất cả ứng dụng của họ sẽ xuất hiện.

Nhờ tính năng này, hãy sao lưu dữ liệu của ứng dụng lên đám mây để bật tính năng đồng bộ hoá trên các thiết bị. Tuy nhiên, đừng phụ thuộc vào kết nối Internet để ứng dụng của bạn hoạt động bình thường. Thay vào đó, hãy lưu công việc của người dùng trên thiết bị khi thiết bị không có kết nối mạng và đồng bộ hoá với đám mây khi thiết bị có kết nối mạng trở lại.

Chromebook cũng có thể được nhiều người dùng chung, chẳng hạn như ở trường học. Vì bộ nhớ cục bộ không phải là vô hạn, nên toàn bộ tài khoản (cùng với bộ nhớ của tài khoản) có thể bị xoá khỏi thiết bị bất cứ lúc nào. Đối với các chế độ cài đặt giáo dục, bạn nên lưu ý đến trường hợp này.

Phát triển các trường hợp kiểm thử mới cho ứng dụng của bạn

Để phát triển các trường hợp kiểm thử cho ứng dụng, trước tiên, hãy đảm bảo rằng bạn chỉ định các cờ tệp kê khai thích hợp. Cụ thể, hãy cân nhắc việc đặt screenOrientation thành unspecified. Nếu bạn muốn chỉ định hướng ngang, hãy cân nhắc sử dụng sensorLandscape để đảm bảo trải nghiệm trên máy tính bảng là tối ưu.

Nếu bạn có nhu cầu đặc biệt về kích thước hoặc hướng cho môi trường máy tính, hãy cân nhắc việc thêm thẻ meta làm gợi ý về kích thước hoặc hướng. Để thêm kích thước và hướng trên điện thoại, hãy chỉ định thuộc tính bố cục defaultHeight, defaultWidth hoặc minHeight.

Nếu bạn quan tâm đến việc xử lý thiết bị đầu vào cụ thể cho các danh mục thiết bị cụ thể, hãy chỉ định android.hardware.type.pc để tắt chế độ tương thích đầu vào.

Nếu bạn đang sử dụng bất kỳ loại mạng nào, hãy đảm bảo rằng ứng dụng có thể kết nối lại với mạng sau khi giải quyết được vấn đề về kết nối hoặc thiết bị thoát khỏi chế độ ngủ.

Bạn nên kiểm tra danh sách các trường hợp kiểm thử cho ứng dụng Android trên ChromeOS mà bạn có thể sử dụng trong kế hoạch kiểm thử. Các trường hợp kiểm thử bao gồm những tình huống phổ biến mà ứng dụng Android cần chuẩn bị nếu dự kiến chạy trên thiết bị ChromeOS.

Chế độ nhiều cửa sổ và thay đổi hướng

Môi trường nhiều cửa sổ của ChromeOS có thể khiến các vấn đề về việc duy trì và thu hồi trạng thái trở nên rõ ràng hơn. Sử dụng ViewModel để lưu và khôi phục trạng thái của bạn khi thích hợp.

Để kiểm thử khả năng duy trì trạng thái, hãy thu nhỏ ứng dụng trong một khoảng thời gian, bắt đầu một quy trình khác tiêu tốn nhiều tài nguyên và khôi phục ứng dụng để xác nhận rằng ứng dụng sẽ trở về trạng thái mà bạn đã rời khỏi.

Kiểm thử tính năng thay đổi kích thước cửa sổ bằng cách nhấn phím toàn màn hình (F4), phóng to và khôi phục. Để kiểm thử tính năng thay đổi kích thước tuỳ ý, trước tiên, hãy bật tính năng này trong phần lựa chọn cho nhà phát triển, sau đó kiểm tra để đảm bảo ứng dụng của bạn thay đổi kích thước một cách mượt mà mà không gặp sự cố.

Nếu thiết bị ChromeOS của bạn hỗ trợ, hãy chuyển từ chế độ máy tính xách tay sang chế độ máy tính bảng để kiểm tra xem mọi thứ có hoạt động như dự kiến hay không. Xoay thiết bị một lần ở chế độ máy tính bảng để kiểm tra các thay đổi về hướng, sau đó chuyển về chế độ máy tính xách tay. Lặp lại bước này vài lần.

Đảm bảo rằng thanh trên cùng không làm hỏng ứng dụng của bạn bằng cách bù đắp các phần tử giao diện người dùng hoặc thao tác chạm dựa trên vị trí. Đối với thiết bị ChromeOS, hãy đảm bảo rằng ứng dụng của bạn không đặt thông tin quan trọng vào khu vực thanh trạng thái.

Nếu bạn đang sử dụng camera hoặc một tính năng phần cứng khác (chẳng hạn như bút), hãy đảm bảo rằng tính năng đó hoạt động đúng cách khi thực hiện các thay đổi về cửa sổ và thiết bị như đã nêu trước đó.