Khắc phục sự cố trong trò chơi Android

Trang này mô tả cách khắc phục những sự cố mà bạn có thể gặp phải trong quá trình phát triển Android với SDK Play Games.

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 rằng bạn đã làm theo cách 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 tình trạng đăng nhập lỗi, hãy kiểm tra các mục sau để đả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. Cách xác minh tên gói trong Google Play Console, hãy chuyển đến Google Play Console rồi 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 được liên kết và kiểm tra danh sách ID ứng dụng khách. Phải có một ứng dụng Android được liên kết ứng dụng trong danh sách này, có tên gói khớp với tên gói trong AndroidManifest.xml của bạn.
  3. 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 một lần nữa.

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 khách hàng 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 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ở 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 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 mã ứng dụng khách mới trong Google Play Console, chứ không phải trong 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, tài khoản tạo trò chơi trong Google Play Console cũng phải được bật với vai trò 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ở Google 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 rằng tài khoản mà bạn đang cố đă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). Để thực hiện việc này, hãy chuyển đến Google Play Console, rồi chuyển đến ứng dụng của bạn, đồng thời đánh dấu vào hộp bên cạnh tên trò chơi để cho biết đã được xuất bản hay chưa. 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...
        }
    }