我的android游戏应用程序中com.google.android.gms.common.a.a(未知源)上的NullPointerException
在我的android游戏中,我收到了很多关于这个错误报告的崩溃报告。有人能告诉我为什么会这样吗我的android游戏应用程序中com.google.android.gms.common.a.a(未知源)上的NullPointerException,android,andengine,google-play-services,google-play-games,Android,Andengine,Google Play Services,Google Play Games,在我的android游戏中,我收到了很多关于这个错误报告的崩溃报告。有人能告诉我为什么会这样吗 java.lang.NullPointerException at com.google.android.gms.common.a.a(Unknown Source) at com.google.example.games.basegameutils.GameHelper.k(Unknown Source) at com.google.example.games.basegameutils.GameH
java.lang.NullPointerException
at com.google.android.gms.common.a.a(Unknown Source)
at com.google.example.games.basegameutils.GameHelper.k(Unknown Source)
at com.google.example.games.basegameutils.GameHelper.a(Unknown Source)
at com.google.android.gms.internal.hk.a(Unknown Source)
at com.google.android.gms.common.api.e.e(Unknown Source)
at com.google.android.gms.common.api.e.d(Unknown Source)
at com.google.android.gms.common.api.i.a(Unknown Source)
at com.google.android.gms.internal.hk.a(Unknown Source)
at com.google.android.gms.internal.hj.a(Unknown Source)
at com.google.android.gms.internal.hj.a(Unknown Source)
at com.google.android.gms.internal.gz.c(Unknown Source)
at com.google.android.gms.internal.gy.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)
虽然我无法重现崩溃问题,但肯定与排行榜/谷歌PlayServices有关
下面是我如何在gameactivity类的onCreate方法中启动GameHelper
public static GameHelper mHelper;
public void onCreate(Bundle savedInstanceState) {
mHelper = new GameHelper(this, GameHelper.CLIENT_GAMES);
GameHelperListener listener = new GameHelper.GameHelperListener() {
@Override
public void onSignInSucceeded() {
// handle sign-in succeess
Log.d("auth","sign in successful");
}
@Override
public void onSignInFailed() {
// handle sign-in failure (e.g. show Sign In button)
Log.d("leaderboard","sign in failed");
}
};
super.onCreate(savedInstanceState);
mHelper.setup(listener);
}
下面是我如何在游戏场景脚本中使用gamehelper来打开排行榜
if (GameActivity.mHelper.isSignedIn()) {
activity.startActivityForResult(Games.Leaderboards.getLeaderboardIntent(GameActivity.mHelper.getApiClient(), "LEADERBOARD_ID"), 1);
Log.d("leaderboard","already signed in so open leaderboard");
} else{
GameActivity.mHelper.beginUserInitiatedSignIn();
Log.d("leaderboard","is connected "+GameActivity.mHelper.getApiClient().isConnected());
Log.d("leaderboard","not signed in so fisrt open signin");
}
这是清单活动代码
<activity android:name="com.google.example.games.basegameutils.GameHelper"
android:configChanges="orientation|keyboardHidden"
android:windowSoftInputMode="stateHidden"
android:screenOrientation="portrait"
android:label="@string/app_name" />
您是如何使用com.google.example
以软件包名称发布此文件的?这里有什么问题吗?既然您已经破坏了代码,我们唯一能提供帮助的方法就是查看相关代码并希望发现它。我打赌你没有正确编码活动生命周期。您的清单中是否有android:configChanges?@Simon否我没有发布com.google.example我只是使用googleplayservices gamehelper类来使用google play排行榜。用相关代码编辑了问题。android:configChanges=“orientation | keyboardHidden
-这是一个黑客行为,很糟糕。取出它,重建,旋转设备并修复错误。你已经隐藏了方向更改的错误(因为你停止了方向更改)但是它们仍然存在,因为可以重新创建您的活动的所有其他原因。您还应该了解onPause()和onResume()。我敢打赌,即使有这种黑客攻击,当电话铃响时,您的应用程序也会崩溃。