且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Android的 - 谷歌游戏服务,游戏客户端,运行时错误

更新时间:2023-02-02 19:30:56

请确保你有你的清单文件中的所有3元数据标记 -

 <元数据机器人:名字=com.google.android.gms.games.APP_ID
        机器人:值=@字符串/ APP_ID/> <元数据机器人:名字=com.google.android.gms.appstate.APP_ID
        机器人:值=@字符串/ APP_ID/> <元数据机器人:名字=com.google.android.gms.version
       机器人:值=@整数/ GOOGLE_PLAY_SERVICES_VERSION/>

I have checked a few different questions already like this

I am trying to implement a Google sign in and have been referring to https://developers.google.com/games/services/training/signin/ but cannot figure out how to resolve this error

I currently have the following meta data in my Manifest file

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

My LogCat error looks like:

- 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)

I am also getting a warning earlier:

- 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.

I'm not sure if this has anything to do with it I've tried overriding and calling in the onCreate()

setViewForPopups()

but eclipse does not show this method exists.

My current MainActivity looks like

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();

}
}

Make sure that you have all 3 meta-data tags in your manifest file -

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