Bắt đầu tạo ứng 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. Bài viết 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 và bạn muốn tối ưu hoá cho Chromebook. Để tìm hiểu 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ừ phiên bản ChromeOS M53, tất cả ứng dụng Android không yêu cầu tính năng android.hardware.touchscreen một cách rõ ràng cũng sẽ hoạt động trên những thiết bị ChromeOS hỗ trợ tính năng android.hardware.faketouch. Tuy nhiên, để đảm bảo ứng dụng của bạn hoạt động trên tất cả các kiểu Chromebook, hãy cập nhật tệp kê khai để không cần đến 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ị bộ cảm biến khác nhau và Chromebook có thể không có tất cả các cảm biến trong các thiết bị cầm tay Android, chẳng hạn như Hệ thống định vị toàn cầu (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 một 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. Xem 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 bạn muốn ứng dụng chạy trên Chromebook bất kể cảm biến có sẵn hay không, hãy cập nhật tệp kê khai để không cần đến 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 cài đặt được 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 phần 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

Hãy 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 các đ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 kết nối 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 mạng LAN của hệ thống. Thay vào đó, lưu lượng truy cập IPv4 truyền qua một lớp dịch địa chỉ mạng (NAT) nội bộ và lưu lượng truy cập unicast của IPv6 được định tuyến thông qua một bước bổ sung.

Các kết nối unicast đi từ một ứng dụng Android sang Internet chủ yếu hoạt động nguyên trạng. Nhìn chung, kết nối đến sẽ bị chặn. Các gói đa hướng hoặc truyền phát từ Android không được chuyển tiếp tới mạng LAN thông qua tường lửa.

Ngoài quy tắc hạn chế phát đ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, bạn nên sử dụng các API khám phá dịch vụ mạng tiêu chuẩn để phát hiện các thiết bị khác trong phân khúc LAN. Sau khi tìm thấy một thiết bị trên mạng LAN, ứng dụng Android có thể sử dụng ổ cắm đơn hướng TCP hoặc UDP tiêu chuẩn để giao tiếp với thiết bị đó.

Kết nối IPv4 bắt nguồn từ Android sẽ dùng địa chỉ IPv4 của máy chủ ChromeOS. Trong 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ẽ 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 chuyên dụng.

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

Chromebook cho phép người dùng dễ dàng chuyển 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 thiết bị Chromebook và bắt đầu sử dụng một thiết bị Chromebook khác, thì họ chỉ cần đăng nhập và tất cả các ứng dụng của họ sẽ xuất hiện.

Do tính năng này, hãy sao lưu dữ liệu của ứng dụng lên đám mây để cho phép đồng bộ hoá giữa các thiết bị. Tuy nhiên, đừng phụ thuộc vào kết nối Internet để ứng dụng 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 sau khi thiết bị có kết nối mạng trở lại.

Chromebook cũng có thể được dùng chung cho nhiều người, chẳng hạn như trong 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 chế độ cài đặt giáo dục, bạn nên lưu ý đến tình huống này.

Cập nhật thư viện NDK

Nếu ứng dụng của bạn dùng thư viện Android NDK và phiên bản SDK mục tiêu là 23 trở lên, hãy đảm bảo rằng tính năng chuyển vị trí văn bản đã bị xoá khỏi cả phiên bản ARM và x86 của thư viện NDK, vì chúng không tương thích trong Android 6.0 (API cấp 23) trở lên. Khi để lại vị trí văn bản trong thư viện NDK, bạn cũng có thể gây ra lỗi tương thích với Chromebook, đặc biệt là khi chạy trên một thiết bị sử dụng cấu trúc x86.

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

Để phát triển các trường hợp kiểm thử cho ứng dụng của mình, trước tiên, hãy đảm bảo bạn chỉ định cờ tệp kê khai phù hợp. Cụ thể, hãy cân nhắ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 tối ưu trên máy tính bảng.

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 thêm thẻ meta làm gợi ý về hướng hoặc kích thước. Để thêm kích thước và hướng trên điện thoại, hãy chỉ định các 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 kết nố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 sự cố kết nối được giải quyết hoặc thiết bị bị đánh thức khỏi chế độ ngủ.

Bạn nên kiểm tra danh sách 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 các tình huống phổ biến mà ứng dụng Android cần được chuẩn bị nếu ứng dụng dự kiến chạy trên thiết bị ChromeOS.

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

Môi trường nhiều cửa sổ của ChromeOS có thể giúp các vấn đề về tính bền vững và gọi lạ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 khi thích hợp.

Để kiểm tra tính bền vững của trạng thái, hãy thu nhỏ ứng dụng trong một thời gian, bắt đầu một quy trình khác tốn nhiều tài nguyên rồi khôi phục ứng dụng để xác nhận rằng ứng dụng sẽ trở về trạng thái như trước đây.

Bạn có thể kiểm thử 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 đổi kích thước miễn phí, trước tiên, hãy bật tính năng này trong tuỳ chọn cho nhà phát triển, sau đó kiểm tra để đảm bảo rằng ứng dụng của bạn đổi kích thước mượt mà mà không gặp sự cố.

Nếu thiết bị ChromeOS của bạn hỗ trợ, hãy thay đổi 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ư mong đợi hay không. Xoay thiết bị một lần ở chế độ máy tính bảng để kiểm thử các thay đổi về hướng, sau đó chuyển trở lại chế độ máy tính xách tay. Lặp lại bước này vài lần.

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

Nếu bạn đang sử dụng máy ảnh 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 máy ảnh hoạt động đúng cách khi thực hiện các thay đổi về cửa sổ và thiết bị đã nêu trước đó.