Android - Google Play 服务、游戏客户端、运行时错误

Posted

技术标签:

【中文标题】Android - Google Play 服务、游戏客户端、运行时错误【英文标题】:Android - Google Play Service, Game Client, Run time Error 【发布时间】:2014-05-12 19:19:31 【问题描述】:

我已经检查了几个不同的问题,例如this

我正在尝试实现 Google 登录,并且一直在引用 https://developers.google.com/games/services/training/signin/,但不知道如何解决此错误

我的清单文件中目前有以下元数据

      <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"/>

我的 LogCat 错误如下所示:

- 04-01 15:25:28.461: E/AndroidRuntime(30017): FATAL EXCEPTION: main
- 04-01 15:25:28.461: E/AndroidRuntime(30017): java.lang.IllegalStateException: A fatal   developer error has occurred. Check the logs for further information.
- 04-01 15:25:28.461: E/AndroidRuntime(30017):  at com.google.android.gms.internal.eh$h.b(Unknown Source)
- 04-01 15:25:28.461: E/AndroidRuntime(30017):  at com.google.android.gms.internal.eh$h.a(Unknown Source)
- 04-01 15:25:28.461: E/AndroidRuntime(30017):  at com.google.android.gms.internal.eh$b.ec(Unknown Source)
- 04-01 15:25:28.461: E/AndroidRuntime(30017):  at com.google.android.gms.internal.eh$a.handleMessage(Unknown Source)
- 04-01 15:25:28.461: E/AndroidRuntime(30017):  at android.os.Handler.dispatchMessage(Handler.java:99)
- 04-01 15:25:28.461: E/AndroidRuntime(30017):  at android.os.Looper.loop(Looper.java:137)
- 04-01 15:25:28.461: E/AndroidRuntime(30017):  at android.app.ActivityThread.main(ActivityThread.java:5419)
- 04-01 15:25:28.461: E/AndroidRuntime(30017):  at java.lang.reflect.Method.invokeNative(Native Method)
- 04-01 15:25:28.461: E/AndroidRuntime(30017):  at java.lang.reflect.Method.invoke(Method.java:525)
- 04-01 15:25:28.461: E/AndroidRuntime(30017):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
- 04-01 15:25:28.461: E/AndroidRuntime(30017):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
- 04-01 15:25:28.461: E/AndroidRuntime(30017):  at dalvik.system.NativeStart.main(Native Method)

我之前也收到了警告:

- 04-01 15:45:45.408: W/PopupManager(1075): You have not specified a View to use as content view for popups. Falling back to the Activity content view which may not work properly in future versions of the API. Use setViewForPopups() to set your content view.

我不确定这是否与它有关我已经尝试覆盖并调用 onCreate()

setViewForPopups()

但是eclipse没有显示这个方法存在。

我当前的 MainActivity 看起来像

public class MainActivity extends BaseGameActivity implements OnClickListener 

boolean mExplicitSignOut = false;
boolean mInSignInFlow = false;

GoogleApiClient mClient;

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    GameView gameView = (GameView) findViewById(R.id.game);

    GoogleApiClient.Builder builder = 
            new GoogleApiClient.Builder(this);
        builder.addApi(Games.API)
               .addApi(Plus.API)
               .addApi(AppStateManager.API)
               .addScope(Games.SCOPE_GAMES)
               .addScope(Plus.SCOPE_PLUS_LOGIN)
               .addScope(AppStateManager.SCOPE_APP_STATE);
        mClient = builder.build();



@Override
protected void onStart() 
    super.onStart();
    if (!mInSignInFlow && !mExplicitSignOut) 
        // auto sign in
        mClient.connect();
    


@Override
public void onSignInFailed() 
    // TODO SignInFailed
    Toast.makeText(this, "Sign in Failed", Toast.LENGTH_LONG).show();



@Override
public void onSignInSucceeded() 
    // TODO SignInSucceeded
    Toast.makeText(this, "Sign in Succeeded", Toast.LENGTH_LONG).show();



@Override
public void onClick(View v) 
    // TODO onClick
    Toast.makeText(this, "Clicked", Toast.LENGTH_LONG).show();



【问题讨论】:

你解决了吗?我有同样的问题 不完全确定,但我相信这是因为我还没有获得认证的 Google 开发者帐户。他们为您提供某些代码来访问他们的数据库。 【参考方案1】:

确保清单文件中包含所有 3 个元数据标签 -

 <meta-data android:name="com.google.android.gms.games.APP_ID"
        android:value="@string/app_id" />

 <meta-data android:name="com.google.android.gms.appstate.APP_ID"
        android:value="@string/app_id" />

 <meta-data android:name="com.google.android.gms.version"
       android:value="@integer/google_play_services_version"/>

【讨论】:

【参考方案2】:

可能是您没有在Google Deveopers Console 中配置 OAuth2 客户端 ID。

【讨论】:

以上是关于Android - Google Play 服务、游戏客户端、运行时错误的主要内容,如果未能解决你的问题,请参考以下文章

google play服务是干啥的?

Android按需添加Google Play服务

Android 模拟器上的 Google Play 服务和 Google Play 游戏应用

升级到 Google Play 服务:9.0.0 错误无法解决:com.google.android.gms:play-services-measurement:9.0.0

Android 推送通知:Google Play 服务如何连接到 Google Server

Google Play 游戏服务 - Android 示例错误