我正在尝试实施Google Play Game Services
,在我的应用的主菜单上,我有一个Google+登录按钮。当用户尝试登录时,他们会一直通过登录过程(5个以上的屏幕),他们到达我认为最终确定登录的位置,然后弹出以下错误。
这发生在我的测试人员手机上,我可以在我的AVD仿真器上重现它。这个错误显然有些模糊。我已经尝试link here中的所有解决方案都没有成功。
有人可以帮帮我吗?不确定您需要哪些代码,但我已在下面发布了MainMenu
课程的相关摘要。
MainMenu.class
public class MainMenu extends BaseGameActivity {
DatabaseHelper dh;
ImageView image;
Button startBtn, highscoresBtn, aboutBtn, comingsoonBtn, biblestudyBtn, signOut;
SignInButton sign_in_button;
TextView title, subtitle;
public static final String notice = "notice";
GamesClient client;
Context c;
@Override
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.mainmenu);
client = getGamesClient();
client.connect();
c = this;
sign_in_button = (SignInButton)findViewById(R.id.sign_in_button);
signOut = (Button)findViewById(R.id.sign_out_button);
startBtn = (Button)findViewById(R.id.startBtn);
highscoresBtn = (Button)findViewById(R.id.highscoresBtn);
aboutBtn = (Button)findViewById(R.id.aboutBtn);
comingsoonBtn = (Button)findViewById(R.id.comingsoonBtn);
biblestudyBtn = (Button)findViewById(R.id.biblestudyBtn);
title = (TextView)findViewById(R.id.title);
subtitle = (TextView)findViewById(R.id.subtitle);
startBtn.setText(c.getResources().getString(R.string.startBtn));
highscoresBtn.setText(c.getResources().getString(R.string.highscoresBtn));
aboutBtn.setText(c.getResources().getString(R.string.aboutBtn));
comingsoonBtn.setText(c.getResources().getString(R.string.comingsoonBtn));
biblestudyBtn.setText(c.getResources().getString(R.string.biblestudyBtn));
title.setText(c.getResources().getString(R.string.title));
subtitle.setText(c.getResources().getString(R.string.subtitle));
//sign_in_button.setText(c.getResources().getString(R.string.signin));
signOut.setText(c.getResources().getString(R.string.signout));
sign_in_button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// start the asynchronous sign-in flow
beginUserInitiatedSignIn();
}
});
signOut.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// sign-out
signOut();
// show sign-in button, hide the sign-out button
findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
findViewById(R.id.sign_out_button).setVisibility(View.GONE);
}
});
}
public void onSignInSucceeded() {
// show sign-out button, hide the sign-in button
findViewById(R.id.sign_in_button).setVisibility(View.GONE);
findViewById(R.id.sign_out_button).setVisibility(View.VISIBLE);
final Dialog dialog = new Dialog(c);
dialog.setContentView(R.layout.importlayout);
dialog.setTitle(R.string.importtitle);
TextView question = (TextView)dialog.findViewById(R.id.question);
Button save = (Button)dialog.findViewById(R.id.save);
Button scratch = (Button)dialog.findViewById(R.id.scratch);
question.setText(c.getResources().getString(R.string.importquestion));
save.setText(c.getResources().getString(R.string.savebtn));
scratch.setText(c.getResources().getString(R.string.scratchbtn));
save.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//...
}
});
scratch.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
dh.deleteAll();
for(int i = 0; i < 15; i++) {
dh.insert(0, 0, "-");
}
dialog.dismiss();
dh.closeDB();
}
});
dialog.show();
}
public void onSignInFailed() {
// sign in has failed. So show the user the sign-in button.
findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
findViewById(R.id.sign_out_button).setVisibility(View.GONE);
// (add any code if needed)
}
}
修改
我尝试了什么:
编辑#2
刚注意到一些事情。我是否需要点击“发布你的游戏”才能让所有这些开始工作?
另外,我是否需要首先将APK作为草稿导出并上传到开发者控制台?
答案 0 :(得分:1)
我认为Google Play自动选择的证书指纹不正确。 尝试在Google API控制台上删除您的应用客户端ID,取消关联您的应用,然后使用正确的证书指纹重新链接它。在Eclipse中导出应用程序时会显示正确的指纹。
答案 1 :(得分:1)
Google Play 不自动选择指纹。您在该窗口中看到的是示例指纹,旨在传达指纹的外观。您应该使用 keytool 命令找到自己的指纹,如下所示:
keytool -exportcert -alias your-key-name -keystore /path/to/your/keystore/file -list -v
如果您的密钥是调试密钥,则您的密钥名称通常为androiddebugkey
。
答案 2 :(得分:0)
如果您在调试模式下运行应用程序,即通过调试证书而不是您的发布证书进行签名,请确保您还使用此SHA1配置了应用程序(您可以为同一软件包名称添加第二个链接的应用程序)
还要确保您的测试人员在测试人员名单上。
运行真正有用的“adb logcat”。
答案 3 :(得分:0)
在我意识到该程序出现问题后,这似乎很明显,但请确保您要签名的帐户是列为开发人员的帐户,或者是在测试下列为测试人员的帐户。在测试多人游戏时,其他玩家的google plus帐户也必须列为测试人员。
当您在开发者控制台中从Google Play游戏服务中选择游戏时,测试会列在6个选项中。