2015-08-04 32 views
13

Używam Androida Studio 1.3, a libgdx 1.6.2 do tworzenia gry. Chcę włączyć do mojej gry usługi Google Play, a ja wykonałem wszystko w jednym kroku, ponieważ zrobiłem to wcześniej bez problemu. Jednak tym razem dał mi wyjątek:Libgdx - IllegalStateException w nieokreślonej lokalizacji

java.lang.IllegalStateException: A fatal developer error has occurred. Check the logs for further information. 
     at com.google.android.gms.common.internal.zzi$zza.zzc(Unknown Source) 
     at com.google.android.gms.common.internal.zzi$zza.zzr(Unknown Source) 
     at com.google.android.gms.common.internal.zzi$zzc.zznQ(Unknown Source) 
     at com.google.android.gms.common.internal.zzi$zzb.handleMessage(Unknown Source) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5254) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

Więc tutaj jest to, co zmieniło inne niż baseGameUtils dodawania (który został pomyślnie dodana).

EDIT: Full Android Oczywisty

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.bearfishapps.cells.android" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="22" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

    <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 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/GdxTheme" > 
     <activity 
      android:name="com.example.app.android.AndroidLauncher" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" 
      android:configChanges="keyboard|keyboardHidden|orientation|screenSize"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity android:name="com.purplebrain.adbuddiz.sdk.AdBuddizActivity" 
      android:theme="@android:style/Theme.Translucent" /> 
    </application> 

</manifest> 

A oto moja android aktywność głównym.

public class AndroidLauncher extends AndroidApplication implements GameHelper.GameHelperListener{ 

    private GameHelper gameHelper; 
    @Override 
    protected void onCreate (Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     if (gameHelper == null) { 
      gameHelper = new GameHelper(this, GameHelper.CLIENT_GAMES); 
     } 
     gameHelper.setup(this); 

     AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); 
     initialize(new Cells(new ActionResolver() { 
      @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 submitScoreGPGS(int score) { 
       Games.Leaderboards.submitScore(gameHelper.getApiClient(), "CgkI6ZHYr9IEEAIQBg", score); 
      } 

      @Override 
      public void getLeaderboardGPGS() { 
       if (gameHelper.isSignedIn()) { 
        startActivityForResult(Games.Leaderboards.getLeaderboardIntent(gameHelper.getApiClient(), "CgkI6ZHYr9IEEAIQBg "), 100); 
       } 
       else if (!gameHelper.isConnecting()) { 
        loginGPGS(); 
       } 

      } 

      @Override 
      public void unlockAchievementGPGS(String achievementId) { 
       Games.Achievements.unlock(gameHelper.getApiClient(), achievementId); 
      } 

      @Override 
      public void getAchievementsGPGS() { 
       if (gameHelper.isSignedIn()) { 
        startActivityForResult(Games.Achievements.getAchievementsIntent(gameHelper.getApiClient()), 101); 
       } 
       else if (!gameHelper.isConnecting()) { 
        loginGPGS(); 
       } 

      } 


     }), config); 
    } 

    @Override 
    public void onStart(){ 
     super.onStart(); 
     gameHelper.onStart(this); 
    } 
    @Override 
    public void onStop(){ 
     super.onStop(); 
     gameHelper.onStop(); 
    } 
    @Override 
    public void onActivityResult(int request, int response, Intent data) { 
     super.onActivityResult(request, response, data); 
     gameHelper.onActivityResult(request, response, data); 
    } 

    @Override 
    public void onSignInFailed() { 

    } 

    @Override 
    public void onSignInSucceeded() { 

    } 
} 

Nie mogę powiedzieć, co jest nie tak. Z góry dzięki.

+0

Czy znaczniki metadanych znajdują się wewnątrz węzła aplikacji w manifeście? – adelphus

+0

Proszę napisać swój pełny kod "AndroidManifest.xml". – Machado

+0

@Holmes Zaktualizowałem AndroidManifest – Fish

Odpowiedz

4

Musisz użyć <meta-data> w tagu <application> w AndroidManifest.

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.bearfishapps.cells.android" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="22" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/GdxTheme" > 
     <activity 
      android:name="com.example.app.android.AndroidLauncher" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" 
      android:configChanges="keyboard|keyboardHidden|orientation|screenSize"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity android:name="com.purplebrain.adbuddiz.sdk.AdBuddizActivity" 
      android:theme="@android:style/Theme.Translucent" /> 

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

Wyczyść swoje dane i odinstaluj aktualizacje w Usługach Google Play.

Następnie zainstaluj ponownie.

+0

Zmieniłem go, teraz nie daje mi nic więcej niż czarny ekran – Fish

+0

Coś bardzo dziwnego się stało, próbowałem go na innym urządzeniu i działało! Działające urządzenie działa Android 4.4. Nie rozumiem, dlaczego to pokazuje czarny ekran na Androida 5.1 – Fish

+0

Myślę, że będziesz musiał debugować i znaleźć dokładnie to, gdzie wysyłany jest czarny ekran. – Machado