Khắc phục sự cố trong 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 SDK Play Games.

Không đăng nhập được

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 mã ứ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 minh thẻ đó chứa thẻ meta-data như minh họa 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 mã ứng dụng của bạn. Cách xác minh tên gói:

  1. Mở AndroidManifest.xml và xác minh 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 mã ứng dụng khách. Để xác minh tên gói trong Google Play Console, vui lòng chuyển đến Google Play Console và nhấp vào mục tương ứng với trò chơi của bạn. Chuyển đến thẻ Ứng dụng đã liên kết và kiểm tra danh sách mã ứng dụng khách. Cần có một ứng dụng liên kết với Android trong danh sách này, với tên gói phải khớp với tên trong AndroidManifest.xml của bạn.
  3. Nếu thông tin không khớp, hãy tạo một mã ứ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 vân tay số của chứng chỉ

Chứng chỉ mà bạn đang ký trong trò chơi phải khớp với vân tay số của chứng chỉ được liên kết với mã ứ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ỉ:

  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 khóa 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 khóa 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 vân tay số của chứng chỉ ở bước trước. Nếu chuỗi chữ số này không khớp, thì công cụ xây dựng hoặc hệ thố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 vân tay số của chứng chỉ có khớp với vân tay số đã định cấu hình trong mã ứng dụng khách của bạn hay không. Cách thực hiện việc này:

  1. Mở Google 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. Trong Google Cloud Platform, hãy chọn dự án của bạn.
  4. Trong thanh bên ở phía bên trái, hãy chọn 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 hiển thị.
  5. Trong thanh bên ở phía bên trái, hãy chọn Ứng dụng đã đăng ký.
  6. Mở rộng phần Mã ứ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 mã ứng dụng khách mới bằng vân tay số của chứng chỉ chính xác. Bạn phải tạo mã ứng dụng khách mới trong Google Play Console, chứ không phải trong Google Cloud Platform.

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

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

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

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 gây ra lỗi phổ biến khác:

  • Nếu bạn phát hành trò chơi của mình, hãy kiểm tra để đảm bảo các 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 các cài đặt cho trò chơi). Để làm việc này, hãy truy cập vào 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 phát hành" hoặc "Sẵn sàng thử nghiệm", hãy nhấp vào hộp và chọn mục Phát hành 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 mã ứng dụng khách này có bật tùy chọn Ứng dụng này ưu tiên 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 họa 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, 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...
        }
    }