Khắc phục sự cố với Dịch vụ trò chơi của Play trong các trò chơi Android

Trang này mô tả cách khắc phục những vấn đề mà bạn có thể gặp phải trong quá trình phát triển trò chơi Android với Dịch vụ trò chơi của Google Play.

Ghi nhật ký

Để khắc phục sự cố xảy ra với trò chơi, bạn có thể bật tính năng ghi nhật ký chi tiết trên thiết bị bằng lệnh adb shell. Sau đó, bạn có thể xem thông điệp nhật ký của Dịch vụ trò chơi của Google Play bằng logcat.

Bật tính năng ghi nhật ký

Để bật tính năng ghi nhật ký trên thiết bị thử nghiệm, hãy làm như sau:

  1. Kết nối thiết bị với máy đã cài đặt SDK Android.

  2. Mở terminal và chạy lệnh này:

    adb shell setprop log.tag.Games VERBOSE
  3. Khởi chạy trò chơi trên thiết bị và tái tạo vấn đề mà bạn đang cố gắng gỡ lỗi.

  4. Xem nhật ký:

    adb logcat

Tắt tính năng ghi nhật ký

Để tắt tính năng ghi nhật ký chi tiết cho Dịch vụ trò chơi của Play trên thiết bị của bạn, đồng thời quay về hành vi ghi nhật ký ban đầu, hãy chạy lệnh sau:

adb shell setprop log.tag.Games INFO

Không thể đăng nhập

Nếu bạn không thể đăng nhập người chơi vào trò chơi của mình, trước tiên, hãy đảm bảo bạn đã làm theo hướng dẫn để tạo ID ứng dụng kháchđịnh cấu hình các dịch vụ trò chơi. Nếu bạn vẫn gặp phải lỗi đăng nhập, vui lòng kiểm tra các mục sau nhằm đảm bảo trò chơi của bạn được thiết lập đúng cách.

Kiểm tra thẻ siêu dữ liệu

AndroidManifest.xml của bạn phải chứa một thẻ siêu dữ liệu trò chơi. Để xác minh các thẻ siêu dữ liệu của bạn đã được thiết lập đúng cách:

  1. Mở AndroidManifest.xml và xác nhận rằng thẻ đó chứa thẻ meta-data như minh hoạ dưới đây:

    <meta-data android:name="com.google.android.gms.games.APP_ID"
        android:value="@string/app_id" />
    
  2. Tìm định nghĩa của tài nguyên @string/app_id. Thường được xác định trong tệp XML nằm ở thư mục res/xml, ví dụ: res/xml/strings.xml hoặc res/xml/ids.xml.

  3. Xác minh giá trị của tài nguyên @string/app_id khớp với mã dạng số của ứng dụng. Giá trị của tài nguyên này chỉ được chứa chữ số. Ví dụ:

    <string name="app_id">123456789012</string>
    

Kiểm tra tên gói

Tên gói của trò chơi phải khớp với tên gói trên ID ứng dụng khách. Cách xác minh tên gói:

  1. Mở AndroidManifest.xml và xác nhận rằng tên gói cho trò chơi của bạn chính xác. Tên gói là giá trị của thuộc tính package trong thẻ manifest.

  2. Xác minh tên gói bạn đã cung cấp khi tạo ID ứng dụng khách. Để xác minh tên gói trong Google Play Console, vui lòng chuyển đến Play Console và nhấp vào mục tương ứng với trò chơi của bạn.

  3. Chuyển đến thẻ Ứng dụng được liên kết và kiểm tra danh sách ID ứng dụng khách. Bạn sẽ thấy một ứng dụng liên kết với Android trong danh sách này, với tên gói khớp với tên gói trong AndroidManifest.xml của bạn. Nếu thông tin không khớp, hãy tạo một ID ứng dụng khách mới với tên gói chính xác và thử đăng nhập lại.

Kiểm tra dấu vân tay chứng chỉ

Chứng chỉ mà bạn đang ký trong trò chơi phải khớp với dấu vân tay chứng chỉ được liên kết với ID ứng dụng khách của bạn. Để xác minh điều này, trước tiên hãy kiểm tra vân tay số SHA1 của chứng chỉ như sau:

  1. Tìm tệp chứng chỉ của bạn và lấy vân tay SHA1. Để có được vân tay số SHA1, hãy chạy lệnh sau:

    keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -v
    
  2. Ghi lại chuỗi các chữ số thập lục phân có nhãn SHA1: ở đầu ra. Đó là vân tay số cho chứng chỉ của bạn.

Tiếp theo, hãy kiểm tra để đảm bảo công cụ xây dựng của bạn đang sử dụng chứng chỉ này:

  1. Tạo APK của trò chơi từ công cụ xây dựng và ký bằng chứng chỉ mà bạn muốn. Sao chép APK đã tạo vào thư mục tạm thời.
  2. Trong thư mục tạm thời, hãy chạy lệnh sau để giải nén APK của bạn.

    unzip YourGame.apk
    
  3. Tạo khoá riêng tư bằng cách sử dụng tệp chứng chỉ RSA:

    keytool -printcert -file META-INF/CERT.RSA
    

    Ngoài ra, bạn còn có thể tạo khoá riêng tư bằng cách sử dụng tệp chứng chỉ DSA:

    keytool -printcert -file META-INF/CERT.DSA
    
  4. Vui lòng lưu ý chuỗi chữ số thập lục phân trên dòng có nhãn SHA1:.

    Chuỗi chữ số này phải khớp với dấu vân tay chứng chỉ ở bước trước. Nếu chuỗi chữ số này không khớp, thì hệ thống hoặc công cụ xây dựng của bạn chưa được định cấu hình để ký ứng dụng bằng chứng chỉ của bạn. Trong trường hợp này, vui lòng tham khảo tài liệu về môi trường tạo bản dựng để xác định cách định cấu hình đúng cách và thử đăng nhập lại.

Tiếp theo, hãy kiểm tra xem dấu vân tay chứng chỉ có khớp với vân tay số đã định cấu hình trong ID ứng dụng khách của bạn hay không. Để thực hiện việc này:

  1. Mở Play Console và chuyển đến trò chơi của bạn.
  2. Trên trang Chi tiết trò chơi, hãy cuộn di chuyển xuống dưới cùng rồi nhấp vào đường liên kết đến dự án Google Cloud Platform đã liên kết.
  3. Chọn dự án của bạn.
  4. Trong thanh bên ở phía bên trái, hãy chọn APIs & auth (API và xác thực). Hãy đảm bảo trạng thái của API Dịch vụ trò chơi của Google Play đang BẬT trong danh sách API bạn thấy.
  5. Trong thanh bên ở phía bên trái, hãy chọn Registered apps (Ứng dụng đã đăng ký).
  6. Mở rộng phần ID ứng dụng khách OAuth 2.0 và ghi lại vân tay số của chứng chỉ (SHA1).

Nếu vân tay này không khớp với vân tay số của chứng chỉ từ các bước trước, bạn phải tạo một ID ứng dụng khách mới dấu vân tay chứng chỉ chính xác. Bạn phải tạo ID ứng dụng khách mới trong Play Console, chứ không phải trong dự án Google Cloud Platform.

Kiểm tra nhằm đảm bảo bạn đã bật các tài khoản kiểm thử

Trước khi phát hành một trò chơi, bạn phải thiết lập tài khoản tạo trò chơi trong Play Console làm người kiểm thử. Để kiểm tra nhằm đảm bảo bạn đã định cấu hình đúng cách:

  1. Mở Play Console và chuyển đến trò chơi của bạn.
  2. Mở thẻ Kiểm thử.
  3. Kiểm tra để đảm bảo tài khoản mà bạn đang muốn đăng nhập có trong danh sách người kiểm thử.

Nếu tài khoản mà bạn đang muốn đăng nhập không có trong danh sách, hãy thêm vào và đợi vài phút rồi thử đăng nhập lại.

Sự cố về Proguard

Nếu bạn đang sử dụng Proguard và gặp lỗi trên APK làm rối mã nguồn, hãy kiểm tra cấp độ API mục tiêu trên AndroidManifest.xml của bạn. Hãy đảm bảo bạn đặt mức từ 17 trở lên.

Các nguyên nhân khác của sự cố thiết lập

Kiểm tra các nguyên nhân phổ biến khác:

  • Nếu đã phát hành trò chơi của mình, hãy kiểm tra để đảm bảo các chế độ cài đặt cho trò chơi cũng được phát hành (bạn cũng có thể phát hành ứng dụng mà không cần phát hành chế độ cài đặt cho trò chơi). Để làm việc này, hãy mở Google Play Console, sau đó chuyển đến ứng dụng của bạn rồi đánh dấu vào hộp bên cạnh tên trò chơi để cho biết trò chơi đã được phát hành. Nếu trò chơi hiển thị một trạng thái khác, chẳng hạn như "Sẵn sàng để xuất bản" hoặc "Sẵn sàng để thử nghiệm", hãy nhấp vào hộp và chọn mục Xuất bản trò chơi.
  • Nếu bạn không thể phát hành trò chơi, hãy kiểm tra để chắc chắn một trong các ID ứng dụng khách có bật tuỳ chọn Ứng dụng này dành cho các lượt cài đặt mới.

Trình nghe ẩn danh

Không được dùng trình nghe ẩn danh. Trình nghe ẩn danh là các phương thức triển khai giao diện trình nghe được xác định nội tuyến, như minh hoạ bên dưới.

    ImageManager im = ...;

    // Anonymous listener -- dangerous:
    im.loadImage(new ImageManager.OnImageLoadedListener() {
        @Override
        public void onImageLoaded(Uri uri, Drawable drawable) {
            // ...code...
        }
    }

Trình nghe ẩn danh không đáng tin cậy vì SDK Play Games duy trì chúng dưới dạng tệp tham chiếu yếu, có nghĩa là chúng có thể bị trình thu gom rác thu hồi lại trước khi được gọi. Thay vào đó, bạn nên triển khai trình nghe bằng cách sử dụng đối tượng cố định (persistent object), chẳng hạn như Activity.

    public class MyActivity extends Activity
            implements ImageManager.OnImageLoadedListener {

        private void loadOurImages() {
            ImageManager im = ...;
            im.loadImage(this);
        }

        @Override
        public void onImageLoaded(Uri uri, Drawable drawable) {
            // ...code...
        }
    }