LIBGDX 游戏配置 google 玩游戏服务错误
LIBGDX game configuration with google Play game services Errors
我是 Libgdx 和 Android 的初学者。
我开发了一个小游戏。
我尝试使用超级跳线示例在 https://github.com/TheInvader360/libgdx-gameservices-tutorial 上跟进 Google 玩游戏服务教程。我还检查了 Google 开发人员的所有内容 Documentation.Also 我已经遵循了本教程
http://forum.xda-developers.com/android/apps-games/setting-eclipse-to-google-play-game-t2889796加上堆栈溢出。
一个。当应用程序是来自 Eclipse 的 EXPORT 时,SHA1 密钥相同。
b。客户端ID由O Auth2.0
生成
c。应用程序包名称相同。
d.我的游戏已经发布了。
e。我还发布了 Google 玩游戏服务。(它写在 Google 开发者文档中,如果发布了应用程序,那么也会发布游戏服务)
f。我将 Eclipse 生成的签名 apk 上传到我的设备上进行测试。
但没有运气。
我得到的错误是“登录失败。请检查您的网络连接并重试。”
我的应用程序清单文件是
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="...."
android:versionCode="1"
android:versionName="1.1" >
<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="20" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
......>
<activity ....../>
<meta-data
android:name="com.google.android.gms.analytics.globalConfigResource"
android:resource="@xml/global_tracker" />
<meta-data android:name="com.google.android.gms.games.APP_ID"
android:value="@string/app_id" />
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
</application>
</manifest>
我在主 Android Class 中给出的配置是
public class AndroidLauncher extends AndroidApplication implements
ActionResolver, GameHelperListener , GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener {
private GameHelper gameHelper;
private GoogleApiClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
client = new GoogleApiClient.Builder(this)
.addApi(Games.API)
.addScope(Games.SCOPE_GAMES)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
GameHelper.GameHelperListener gameHelperListener = new GameHelper.GameHelperListener() {
@Override
public void onSignInFailed() {
Log.i("Game Helper", "Sign in failed");
}
@Override
public void onSignInSucceeded() {
Log.i("Game Helper", "Sign in succeeded");
}
};
gameHelper = new GameHelper(this, GameHelper.CLIENT_GAMES);
gameHelper.enableDebugLog(true);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
initialize(new MainGame(this) , config);
gameHelper.setup(gameHelperListener );
}
@Override
public void onStart() {
super.onStart();
gameHelper.onStart(this);
client.connect();
}
@Override
public void onStop() {
super.onStop();
gameHelper.onStop();
client.disconnect();
}
@Override
public void onActivityResult(int request, int response, Intent data) {
super.onActivityResult(request, response, data);
gameHelper.onActivityResult(request, response, data);
}
@Override
public boolean getSignedInGPGS() {
return gameHelper.isSignedIn();
}
@Override
public void loginGPGS() {
try {
runOnUiThread(new Runnable() {
public void run() {
gameHelper.beginUserInitiatedSignIn();
}
});
} catch (final Exception ex) {
}
}
@Override
public void unlockAchievementGPGS(String achievementId) {
Games.Achievements.unlock(gameHelper.getApiClient(), achievementId);
}
@Override
public void getLeaderboardGPGS() {
}
@Override
public void getAchievementsGPGS() {
if (gameHelper.isSignedIn()) {
startActivityForResult(
Games.Achievements.getAchievementsIntent(gameHelper
.getApiClient()), 101);
} else if (!gameHelper.isConnecting()) {
loginGPGS();
}
}
@Override
public void onSignInFailed() {
System.out.println("Sign in succeeded");
}
@Override
public void onSignInSucceeded() {
System.out.println("Sign in failed");
}
@Override
public void submitScoreGPGS(int score) {
// TODO Auto-generated method stub
}
@Override
public void onConnectionFailed(ConnectionResult arg0) {
// TODO Auto-generated method stub
}
@Override
public void onConnected(Bundle arg0) {
Log.i("Google API", "Connection Complete");
}
@Override
public void onConnectionSuspended(int arg0) {
Log.i("Google API", "Connection Failed: " );
}
}
我在资源文件夹中的字符串文件中提供了完全相同的应用程序 ID。
我不明白为什么会出现此错误。
动作解析器接口具有指定的所有方法。主游戏 class 启动此界面。
在游戏结束时,我发送分数来解锁成就。
我的游戏中只有成就。
我可以提供任何其他代码,但请帮助我。
以下几点可能对您有所帮助。
您在 Developer Console 上的更改实际发布需要几个小时。几个小时后测试游戏。
您无需发布即可进行测试。您可以通过在开发人员控制台中添加测试人员帐户来实现。
您不能"test" Google 使用开发者帐户播放服务。为此,您需要另一个帐户。
编辑:
非常重要:
确保您在 Android 项目中向 AndroidManifest.xml 添加了必需的权限。
我是 Libgdx 和 Android 的初学者。 我开发了一个小游戏。 我尝试使用超级跳线示例在 https://github.com/TheInvader360/libgdx-gameservices-tutorial 上跟进 Google 玩游戏服务教程。我还检查了 Google 开发人员的所有内容 Documentation.Also 我已经遵循了本教程 http://forum.xda-developers.com/android/apps-games/setting-eclipse-to-google-play-game-t2889796加上堆栈溢出。
一个。当应用程序是来自 Eclipse 的 EXPORT 时,SHA1 密钥相同。
b。客户端ID由O Auth2.0
生成c。应用程序包名称相同。
d.我的游戏已经发布了。
e。我还发布了 Google 玩游戏服务。(它写在 Google 开发者文档中,如果发布了应用程序,那么也会发布游戏服务)
f。我将 Eclipse 生成的签名 apk 上传到我的设备上进行测试。 但没有运气。
我得到的错误是“登录失败。请检查您的网络连接并重试。”
我的应用程序清单文件是
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="...."
android:versionCode="1"
android:versionName="1.1" >
<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="20" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
......>
<activity ....../>
<meta-data
android:name="com.google.android.gms.analytics.globalConfigResource"
android:resource="@xml/global_tracker" />
<meta-data android:name="com.google.android.gms.games.APP_ID"
android:value="@string/app_id" />
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
</application>
</manifest>
我在主 Android Class 中给出的配置是
public class AndroidLauncher extends AndroidApplication implements
ActionResolver, GameHelperListener , GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener {
private GameHelper gameHelper;
private GoogleApiClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
client = new GoogleApiClient.Builder(this)
.addApi(Games.API)
.addScope(Games.SCOPE_GAMES)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
GameHelper.GameHelperListener gameHelperListener = new GameHelper.GameHelperListener() {
@Override
public void onSignInFailed() {
Log.i("Game Helper", "Sign in failed");
}
@Override
public void onSignInSucceeded() {
Log.i("Game Helper", "Sign in succeeded");
}
};
gameHelper = new GameHelper(this, GameHelper.CLIENT_GAMES);
gameHelper.enableDebugLog(true);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
initialize(new MainGame(this) , config);
gameHelper.setup(gameHelperListener );
}
@Override
public void onStart() {
super.onStart();
gameHelper.onStart(this);
client.connect();
}
@Override
public void onStop() {
super.onStop();
gameHelper.onStop();
client.disconnect();
}
@Override
public void onActivityResult(int request, int response, Intent data) {
super.onActivityResult(request, response, data);
gameHelper.onActivityResult(request, response, data);
}
@Override
public boolean getSignedInGPGS() {
return gameHelper.isSignedIn();
}
@Override
public void loginGPGS() {
try {
runOnUiThread(new Runnable() {
public void run() {
gameHelper.beginUserInitiatedSignIn();
}
});
} catch (final Exception ex) {
}
}
@Override
public void unlockAchievementGPGS(String achievementId) {
Games.Achievements.unlock(gameHelper.getApiClient(), achievementId);
}
@Override
public void getLeaderboardGPGS() {
}
@Override
public void getAchievementsGPGS() {
if (gameHelper.isSignedIn()) {
startActivityForResult(
Games.Achievements.getAchievementsIntent(gameHelper
.getApiClient()), 101);
} else if (!gameHelper.isConnecting()) {
loginGPGS();
}
}
@Override
public void onSignInFailed() {
System.out.println("Sign in succeeded");
}
@Override
public void onSignInSucceeded() {
System.out.println("Sign in failed");
}
@Override
public void submitScoreGPGS(int score) {
// TODO Auto-generated method stub
}
@Override
public void onConnectionFailed(ConnectionResult arg0) {
// TODO Auto-generated method stub
}
@Override
public void onConnected(Bundle arg0) {
Log.i("Google API", "Connection Complete");
}
@Override
public void onConnectionSuspended(int arg0) {
Log.i("Google API", "Connection Failed: " );
}
}
我在资源文件夹中的字符串文件中提供了完全相同的应用程序 ID。 我不明白为什么会出现此错误。
动作解析器接口具有指定的所有方法。主游戏 class 启动此界面。
在游戏结束时,我发送分数来解锁成就。 我的游戏中只有成就。 我可以提供任何其他代码,但请帮助我。
以下几点可能对您有所帮助。
您在 Developer Console 上的更改实际发布需要几个小时。几个小时后测试游戏。
您无需发布即可进行测试。您可以通过在开发人员控制台中添加测试人员帐户来实现。
您不能"test" Google 使用开发者帐户播放服务。为此,您需要另一个帐户。
编辑: 非常重要:
确保您在 Android 项目中向 AndroidManifest.xml 添加了必需的权限。