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 bạn đã làm theo hướng dẫn để tạo mã ứng dụng khách và đị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:
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" />
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ụcres/xml
, ví dụ:res/xml/strings.xml
hoặcres/xml/ids.xml
.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:
- 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ínhpackage
trong thẻmanifest
. - 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. - 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 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ỉ:
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
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:
- 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.
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
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
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:
- Mở Google Play Console rồi chuyển đến trò chơi của bạn.
- 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.
- Trong Google Cloud Platform, hãy chọn dự án của bạn.
- 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.
- Trong thanh bên ở phía bên trái, hãy chọn Registered apps (Ứng dụng đã đăng ký).
- 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:
- Mở Google Play Console rồi chuyển đến trò chơi của bạn.
- Mở thẻ Kiểm thử.
- 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). Để 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...
}
}