Tổng quan về khả năng tương thích của thiết bị

Android được thiết kế để chạy trên nhiều loại thiết bị, chẳng hạn như điện thoại, máy tính bảng và TV. Khả năng đa dạng của các thiết bị đối tượng cho ứng dụng của mình. Để thành công trên tất cả các thiết bị, ứng dụng của bạn phải chấp nhận sự đa dạng về tính năng và mang đến một giao diện người dùng linh hoạt có thể thích ứng cho các cấu hình màn hình khác nhau.

Để giúp cải thiện khả năng tương thích với thiết bị, Android cung cấp một khung ứng dụng động trong đó bạn có thể cung cấp các cấu hình cụ thể tài nguyên ứng dụng ở trạng thái tĩnh , chẳng hạn như các bố cục XML khác nhau cho các kích thước màn hình khác nhau. Sau đó là Android tải các tài nguyên phù hợp dựa trên cấu hình thiết bị hiện tại. Bằng cân nhắc kỹ lưỡng về thiết kế ứng dụng cũng như các tài nguyên ứng dụng khác, bạn có thể xuất bản gói ứng dụng đơn (APK) giúp tối ưu hoá trải nghiệm người dùng trên nhiều của thiết bị.

Tuy nhiên, nếu cần, bạn có thể nêu rõ các yêu cầu về tính năng của ứng dụng và kiểm soát loại thiết bị nào có thể cài đặt ứng dụng của bạn qua Cửa hàng Google Play. Tài liệu này giải thích cách bạn có thể kiểm soát những thiết bị nào có quyền truy cập vào và cách chuẩn bị ứng dụng để tiếp cận đúng đối tượng.

"Khả năng tương thích" là gì có nghĩa là gì?

Liên quan đến việc phát triển Android, có 2 loại khả năng tương thích: khả năng tương thích của thiết bịkhả năng tương thích của ứng dụng.

Vì Android là một dự án nguồn mở, nên bất kỳ nhà sản xuất phần cứng nào cũng có thể tạo một thiết bị chạy hệ điều hành Android. Tuy nhiên, thiết bị "Tương thích với Android" chỉ khi nó có thể chạy chính xác các ứng dụng được viết cho Môi trường thực thi trên Android. Thông tin chi tiết chính xác về Android môi trường thực thi được xác định bằng Android tương thích. Mỗi thiết bị đều phải vượt qua Bộ kiểm tra tính tương thích (CTS) để được xem là tương thích.

Là nhà phát triển ứng dụng, bạn không cần phải lo lắng về việc liệu thiết bị có Tương thích với Android do chỉ có các thiết bị tương thích với Android mới có Cửa hàng Google Play. Vì vậy, nếu người dùng cài đặt ứng dụng của bạn từ Cửa hàng Google Play, họ đang sử dụng một thiết bị tương thích với Android.

Tuy nhiên, bạn cần cân nhắc xem ứng dụng của mình có tương thích với từng cấu hình thiết bị tiềm năng. Vì Android chạy trên nhiều loại thiết bị Do đó, một số tính năng không khả dụng trên một số thiết bị. Ví dụ: một số có thể không có cảm biến la bàn. Nếu chức năng cốt lõi của ứng dụng cần có cảm biến la bàn thì ứng dụng của bạn chỉ tương thích với các thiết bị có tính năng đó.

Kiểm soát phạm vi cung cấp ứng dụng cho các thiết bị

Android hỗ trợ nhiều tính năng mà ứng dụng của bạn có thể tận dụng thông qua nền tảng API. Một số tính năng dựa trên phần cứng, chẳng hạn như cảm biến la bàn; một số dựa trên phần mềm, chẳng hạn như tiện ích ứng dụng; và một số tuỳ thuộc vào phiên bản nền tảng. Không phải mọi thiết bị đều hỗ trợ mọi tính năng, vì vậy, bạn có thể cần kiểm soát cho thiết bị dựa trên các tính năng cần thiết của ứng dụng.

Để có được cơ sở người dùng lớn nhất có thể cho ứng dụng, hãy hỗ trợ càng nhiều cấu hình thiết bị nhất có thể bằng cách sử dụng một APK hoặc AAB. Trong hầu hết các trường hợp, bạn có thể làm như vậy bằng cách tắt các tính năng không bắt buộc trong thời gian chạy và cung cấp ứng dụng tài nguyên có các lựa chọn thay thế cho nhiều cấu hình, chẳng hạn như cho nhiều kích thước màn hình. Nếu cần, bạn có thể hạn chế tính khả dụng cho một số thiết bị nhất định thông qua Cửa hàng Google Play dựa trên đặc điểm thiết bị:

Tính năng của thiết bị

Để quản lý phạm vi cung cấp ứng dụng dựa trên các tính năng của thiết bị, Android xác định mã tính năng của bất kỳ tính năng phần cứng hoặc phần mềm nào có thể không được có sẵn trên tất cả các thiết bị. Ví dụ: ID tính năng cho cảm biến la bàn là FEATURE_SENSOR_COMPASS, và mã tính năng cho tiện ích ứng dụng là FEATURE_APP_WIDGETS

Nếu cần, bạn có thể ngăn người dùng cài đặt ứng dụng của bạn khi họ nhưng không cung cấp tính năng cần thiết bằng cách khai báo tính năng đó bằng <uses-feature> trong đơn vị quảng cáo tệp kê khai.

Ví dụ: nếu ứng dụng của bạn không hợp lý trên một thiết bị thiếu la bàn cảm biến, bạn có thể khai báo cảm biến la bàn theo yêu cầu bằng những thông tin sau thẻ tệp kê khai:

<manifest ... >
    <uses-feature android:name="android.hardware.sensor.compass"
                  android:required="true" />
    ...
</manifest>

Cửa hàng Google Play so sánh những tính năng mà ứng dụng của bạn yêu cầu với có sẵn trên thiết bị của từng người dùng để xác định xem ứng dụng của bạn có đang tương thích với từng thiết bị. Nếu thiết bị không có tất cả các tính năng, ứng dụng yêu cầu, nên người dùng không thể cài đặt ứng dụng của bạn.

Tuy nhiên, nếu chức năng chính của ứng dụng không yêu cầu tính năng của thiết bị, đặt required cho "false" và kiểm tra tính năng thiết bị trong thời gian chạy. Nếu tính năng của ứng dụng không hoạt động trên thiết bị hiện tại, hãy xuống cấp nhẹ tính năng tương ứng của ứng dụng. Ví dụ: bạn có thể truy vấn xem một tính năng có đang có sẵn bằng cách gọi hasSystemFeature() như sau:

Kotlin

if (!packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device doesn't have a compass. Turn off the compass feature.
    disableCompassFeature()
}

Java

PackageManager pm = getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device doesn't have a compass. Turn off the compass feature.
    disableCompassFeature();
}

Để biết thông tin về tất cả bộ lọc mà bạn có thể sử dụng để kiểm soát tình trạng rảnh/bận của ứng dụng thông qua Cửa hàng Google Play, hãy xem Bộ lọc trên Google Play tài liệu.

Phiên bản nền tảng

Các thiết bị khác nhau có thể chạy các phiên bản khác nhau của nền tảng Android, chẳng hạn như như Android 12 hoặc Android 13. Mỗi phiên bản nền tảng kế tiếp thường bổ sung các API không có trong phiên bản trước. Để cho biết tập hợp API nào có sẵn, mỗi phiên bản nền tảng chỉ định một Cấp độ API. Ví dụ: Android 12 là API cấp 31 và Android 13 là API cấp 33.

Bạn phải chỉ định minSdkVersiontargetSdkVersion các giá trị trong tệp build.gradle của bạn:

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"

        // Defines the minimum API level required to run the app.
        minSdkVersion(30)

        // Specifies the API level used to test the app.
        targetSdkVersion(33)
        ...
    }
}

Groovy

android {
    defaultConfig {
        applicationId 'com.example.myapp'

        // Defines the minimum API level required to run the app.
        minSdkVersion 30

        // Specifies the API level used to test the app.
        targetSdkVersion 33
        ...
    }
}

Để biết thêm thông tin về tệp build.gradle, hãy đọc Định cấu hình bản dựng.

Mỗi phiên bản Android kế tiếp đều cung cấp khả năng tương thích cho các ứng dụng được tạo sử dụng API từ các phiên bản nền tảng trước, vì vậy ứng dụng của bạn tương thích với các phiên bản tương lai của Android đồng thời sử dụng các API Android trong tài liệu.

Tuy nhiên, nếu ứng dụng của bạn sử dụng API được thêm vào một phiên bản nền tảng mới hơn, nhưng không yêu cầu các API này cho chức năng chính, hãy kiểm tra cấp độ API tại thời gian chạy và xuống cấp nhẹ các tính năng tương ứng khi cấp độ API được quá thấp. Trong trường hợp này, hãy đặt minSdkVersion ở giá trị thấp nhất đối với chức năng chính của ứng dụng, sau đó so sánh tính năng của hệ thống hiện tại phiên bản, SDK_INT, vào hằng số tên mã trong Build.VERSION_CODES tương ứng với cấp độ API mà bạn muốn kiểm tra, như được thể hiện trong phần ví dụ:

Kotlin

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
    // Running on something older than API level 11, so disable
    // the drag and drop features that use ClipboardManager APIs.
    disableDragAndDrop()
}

Java

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
    // Running on something older than API level 11, so disable
    // the drag and drop features that use ClipboardManager APIs.
    disableDragAndDrop();
}

Cấu hình màn hình

Android chạy trên các thiết bị thuộc nhiều kích thước như điện thoại, máy tính bảng và TV. Người nhận phân loại thiết bị theo loại màn hình, Android xác định hai đặc điểm của việc từng thiết bị: kích thước màn hình (kích thước vật lý của màn hình) và mật độ màn hình (mật độ vật lý của các pixel trên màn hình, được gọi là DPI). Để đơn giản hoá các cấu hình, Android sẽ tổng quát hoá các biến thể này thành các nhóm tạo nên chúng dễ nhắm mục tiêu hơn:

  • Bốn kích thước tổng quát: nhỏ, bình thường, lớn và rất lớn
  • Một số mật độ chung: mdpi (trung bình), hdpi (cao), xhdpi (ngoại trừ) cao), xxhdpi (siêu cao) và các mức khác

Theo mặc định, ứng dụng của bạn tương thích với mọi kích thước và mật độ màn hình, vì hệ thống điều chỉnh bố cục giao diện người dùng và tài nguyên hình ảnh cần thiết cho mỗi màn hình. Cung cấp hình ảnh bitmap được tối ưu hoá cho màn hình chung mật độ.

Tối ưu hoá trải nghiệm người dùng bằng cách sử dụng bố cục linh hoạt nhiều nhất có thể. Khi có các bố cục cho các thay đổi lớn về cấu hình, chẳng hạn như dọc và ngang hoặc cửa sổ có kích thước lớn hay nhỏ, hãy cân nhắc việc cung cấp linh hoạt với các thay đổi nhỏ hơn trong cấu hình. Cách này giúp cải thiện trải nghiệm người dùng trên các kiểu dáng như máy tính bảng, điện thoại và thiết bị có thể gập lại. Nó cũng hữu ích khi cửa sổ thay đổi kích thước ở chế độ nhiều cửa sổ.

Để biết thông tin về cách tạo tài nguyên thay thế cho các màn hình cũng như cách giới hạn ứng dụng ở một số kích thước màn hình nhất định khi cần thiết, đọc khả năng tương thích với màn hình trang tổng quan và xem ứng dụng màn hình lớn nguyên tắc về chất lượng.

Kiểm soát phạm vi cung cấp ứng dụng vì lý do kinh doanh

Ngoài việc hạn chế phạm vi cung cấp của ứng dụng dựa trên thiết bị nên bạn có thể cần phải hạn chế phạm vi cung cấp ứng dụng cho hoạt động kinh doanh hoặc lý do pháp lý. Đối với loại tình huống này, Cửa hàng Google Play cung cấp các tuỳ chọn lọc trong Play Console cho phép bạn kiểm soát tình trạng sẵn có vì các lý do phi kỹ thuật, chẳng hạn như ngôn ngữ của người dùng hoặc thiết bị không dây nhà mạng.

Lọc khả năng tương thích về kỹ thuật – chẳng hạn như phần cứng được yêu cầu - luôn dựa trên thông tin có trong APK hoặc AAB của bạn . Tuy nhiên, quá trình lọc vì lý do phi kỹ thuật, chẳng hạn như địa lý ngôn ngữ—luôn được xử lý trong Google Play Console.

Tài nguyên khác:

Tổng quan về tài nguyên ứng dụng
Thông tin về cấu trúc của các ứng dụng Android để tách riêng ứng dụng từ mã ứng dụng, bao gồm cả cách bạn có thể cung cấp các giải pháp thay thế cho các cấu hình thiết bị cụ thể.
Bộ lọc trên Google Play
Thông tin về những cách Cửa hàng Google Play có thể ngăn chặn ứng dụng cài đặt trên các thiết bị khác nhau.
Quyền trên Android
Cách Android hạn chế quyền truy cập của ứng dụng vào một số API nhất định thông qua hệ thống quản lý quyền yêu cầu sự đồng ý của người dùng để ứng dụng của bạn sử dụng các API đó.