本文介绍了libGDX谷歌玩游戏服务 - 安卓的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想实现谷歌玩游戏服务到libGDX项目。 在我的Android项目中,MainActivity看起来是这样的:
公共类MainActivity扩展AndroidApplication工具 GameHelper.GameHelperListener,ActionResolver { GameHelper gameHelper; @覆盖 公共无效的onCreate(包savedInstanceState){ super.onCreate(savedInstanceState); gameHelper =新GameHelper(这一点,GameHelper.CLIENT_ALL); gameHelper.enableDebugLog(真正的); 。getWindow()addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); AndroidApplicationConfiguration CFG =新AndroidApplicationConfiguration(); cfg.useGL20 = FALSE; 初始化(新CJSGame(本),CFG); gameHelper.setup(本); } @覆盖 公共无效的OnStart(){ super.onStart(); gameHelper.onStart(本); } @覆盖 公共无效的onStop(){ super.onStop(); gameHelper.onStop(); } @覆盖 保护无效onActivityResult(INT申请code,INT结果code,意图数据){ // TODO自动生成方法存根 super.onActivityResult(要求code,因此code,数据); gameHelper.onActivityResult(要求code,因此code,数据); } @覆盖 公共布尔getSignedInGPGS(){ // TODO自动生成方法存根 返回gameHelper.isSignedIn(); } @覆盖 公共无效loginGPGS(){ // TODO自动生成方法存根 尝试 { runOnUiThread(新的Runnable(){ 公共无效的run(){ gameHelper.beginUserInitiatedSignIn(); } }); }赶上(最终例外前){ } } @覆盖 公共无效submitScoreGPGS(INT得分){ // TODO自动生成方法存根 Games.Leaderboards.submitScore(gameHelper.getApiClient(), 的getString(R.string.leaderboard1_id),得分); } @覆盖 公共无效unlockAchievementGPGS(字符串achievementId){ // TODO自动生成方法存根 Games.Achievements.unlock(gameHelper.getApiClient(),achievementId); } @覆盖 公共无效getLeaderboardGPGS(){ // TODO自动生成方法存根 startActivityForResult( Games.Leaderboards.getLeaderboardIntent( gameHelper.getApiClient(), 的getString(R.string.leaderboard1_id)),100); } @覆盖 公共无效getAchievementsGPGS(){ // TODO自动生成方法存根 startActivityForResult( Games.Achievements.getAchievementsIntent(gameHelper .getApiClient()),101); } @覆盖 公共无效onSignInFailed(){ // TODO自动生成方法存根 的System.out.println(登录失败); } @覆盖 公共无效onSignInSucceeded(){ // TODO自动生成方法存根 的System.out.println(登录成功); } }当我尝试运行在Android设备的应用程序,我结束了在logcat中IllegalStateException异常错误:
10月3日至13号:23:40.766:E / AndroidRuntime(31339):致命异常:主要 10月三号至13号:23:40.766:E / AndroidRuntime(31339):java.lang.IllegalStateException:发生致命开发商错误。检查日志以获取更多信息。 10月三号至13号:23:40.766:E / AndroidRuntime(31339):在com.google.android.gms.internal.dw $ HB(来源不明) 10月三号至13号:23:40.766:E / AndroidRuntime(31339):在com.google.android.gms.internal.dw $ HB(来源不明) 10月三号至13号:23:40.766:E / AndroidRuntime(31339):在com.google.android.gms.internal.dw $ b.bR(来源不明) 10月三号至13号:23:40.766:E / AndroidRuntime(31339):在com.google.android.gms.internal.dw $ a.handleMessage(来源不明) 10月三号至13号:23:40.766:E / AndroidRuntime(31339):在android.os.Handler.dispatchMessage(Handler.java:99) 10月三号至13号:23:40.766:E / AndroidRuntime(31339):在android.os.Looper.loop(Looper.java:137) 10月三号至13号:23:40.766:E / AndroidRuntime(31339):在android.app.ActivityThread.main(ActivityThread.java:5419) 10月三号至13号:23:40.766:E / AndroidRuntime(31339):在java.lang.reflect.Method.invokeNative(本机方法) 10月三号至13号:23:40.766:E / AndroidRuntime(31339):在java.lang.reflect.Method.invoke(Method.java:525) 10月三号至13号:23:40.766:E / AndroidRuntime(31339):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1187) 10月三号至13号:23:40.766:E / AndroidRuntime(31339):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 10月三号至13号:23:40.766:E / AndroidRuntime(31339):在dalvik.system.NativeStart.main(本机方法)
任何帮助,请??
编辑:我已经有元数据标签清单文件
<元数据的android:NAME =com.google.android.gms.games.APP_ID 机器人:值=@字符串/ APP_ID/>解决方案
解决了,我启用了亚行logcat,发现还有另外一个元数据标签清单文件丢失:
<元数据的android:NAME =com.google.android.gms.appstate.APP_ID 机器人:值=@字符串/ APP_ID/>
刚刚加入这个标记,它工作正常。
I am trying to implement Google play Game Services into libGDX project. In my android project, the MainActivity looks like this:
public class MainActivity extends AndroidApplication implements GameHelper.GameHelperListener, ActionResolver { GameHelper gameHelper; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); gameHelper = new GameHelper(this, GameHelper.CLIENT_ALL); gameHelper.enableDebugLog(true); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration(); cfg.useGL20 = false; initialize(new CJSGame(this), cfg); gameHelper.setup(this); } @Override public void onStart() { super.onStart(); gameHelper.onStart(this); } @Override public void onStop() { super.onStop(); gameHelper.onStop(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); gameHelper.onActivityResult(requestCode, resultCode, data); } @Override public boolean getSignedInGPGS() { // TODO Auto-generated method stub return gameHelper.isSignedIn(); } @Override public void loginGPGS() { // TODO Auto-generated method stub try { runOnUiThread(new Runnable() { public void run() { gameHelper.beginUserInitiatedSignIn(); } }); } catch (final Exception ex) { } } @Override public void submitScoreGPGS(int score) { // TODO Auto-generated method stub Games.Leaderboards.submitScore(gameHelper.getApiClient(), getString(R.string.leaderboard1_id), score); } @Override public void unlockAchievementGPGS(String achievementId) { // TODO Auto-generated method stub Games.Achievements.unlock(gameHelper.getApiClient(), achievementId); } @Override public void getLeaderboardGPGS() { // TODO Auto-generated method stub startActivityForResult( Games.Leaderboards.getLeaderboardIntent( gameHelper.getApiClient(), getString(R.string.leaderboard1_id)), 100); } @Override public void getAchievementsGPGS() { // TODO Auto-generated method stub startActivityForResult( Games.Achievements.getAchievementsIntent(gameHelper .getApiClient()), 101); } @Override public void onSignInFailed() { // TODO Auto-generated method stub System.out.println("Sign in failed"); } @Override public void onSignInSucceeded() { // TODO Auto-generated method stub System.out.println("Sign in succeeded"); } }When I try to run the application on android device, I end up with IllegalStateException error in the logcat:
03-13 10:23:40.766: E/AndroidRuntime(31339): FATAL EXCEPTION: main 03-13 10:23:40.766: E/AndroidRuntime(31339): java.lang.IllegalStateException: A fatal developer error has occurred. Check the logs for further information. 03-13 10:23:40.766: E/AndroidRuntime(31339): at com.google.android.gms.internal.dw$h.b(Unknown Source) 03-13 10:23:40.766: E/AndroidRuntime(31339): at com.google.android.gms.internal.dw$h.b(Unknown Source) 03-13 10:23:40.766: E/AndroidRuntime(31339): at com.google.android.gms.internal.dw$b.bR(Unknown Source) 03-13 10:23:40.766: E/AndroidRuntime(31339): at com.google.android.gms.internal.dw$a.handleMessage(Unknown Source) 03-13 10:23:40.766: E/AndroidRuntime(31339): at android.os.Handler.dispatchMessage(Handler.java:99) 03-13 10:23:40.766: E/AndroidRuntime(31339): at android.os.Looper.loop(Looper.java:137) 03-13 10:23:40.766: E/AndroidRuntime(31339): at android.app.ActivityThread.main(ActivityThread.java:5419) 03-13 10:23:40.766: E/AndroidRuntime(31339): at java.lang.reflect.Method.invokeNative(Native Method) 03-13 10:23:40.766: E/AndroidRuntime(31339): at java.lang.reflect.Method.invoke(Method.java:525) 03-13 10:23:40.766: E/AndroidRuntime(31339): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) 03-13 10:23:40.766: E/AndroidRuntime(31339): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 03-13 10:23:40.766: E/AndroidRuntime(31339): at dalvik.system.NativeStart.main(Native Method)Any Help please??
Edit: I already have the meta-data tag in the manifest file
<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />解决方案
Solved, I enabled adb logcat and found that there is another metadata tag missing in the manifest file:
<meta-data android:name="com.google.android.gms.appstate.APP_ID" android:value="@string/app_id" />Just added this tag and it is working properly.
更多推荐
libGDX谷歌玩游戏服务
发布评论