2015-08-04 21 views
13

Tôi đang sử dụng android studio 1.3 và libgdx 1.6.2 để tạo trò chơi. Tôi muốn kết hợp các dịch vụ google play vào trò chơi của mình và tôi đã hoàn thành mọi thứ trong một bước, bởi vì tôi đã làm điều đó trước đó mà không gặp vấn đề gì. Tuy nhiên, lần này nó đã cho tôi một ngoại lệ:Libgdx - IllegalStateException tại vị trí không xác định

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) 

Vì vậy, đây là những gì tôi đã thay đổi khác hơn baseGameUtils thêm (được thành công thêm vào).

EDIT: Các Full Android Manifest

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

Và đây là hoạt động chính Android của tôi.

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

    } 
} 

Tôi không thể nói điều gì sai ở đây. Cảm ơn trước.

+0

Thẻ meta-data của bạn có nằm trong nút Ứng dụng trong tệp kê khai không? – adelphus

+0

Vui lòng đăng toàn bộ mã 'AndroidManifest.xml' của bạn. – Machado

+0

@Holmes Tôi đã cập nhật AndroidManifest – Fish

Trả lời

4

Bạn cần sử dụng <meta-data> bên trong thẻ <application> trong 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> 

Xóa dữ liệu và gỡ cài đặt bản cập nhật trên Dịch vụ của Google Play.

Sau đó, cài đặt lại.

+0

Tôi đã thay đổi nó, bây giờ nó mang lại cho tôi không có gì hơn một màn hình màu đen – Fish

+0

Một cái gì đó rất lạ xảy ra, tôi đã thử nó trên một thiết bị khác và nó đã làm việc! Thiết bị hoạt động chạy Android 4.4. Tôi không hiểu tại sao điều này cho thấy màn hình màu đen trên Android 5.1 – Fish

+0

Tôi đoán bạn sẽ phải gỡ lỗi và tìm chính xác vị trí màn hình màu đen được gửi đi. – Machado

Các vấn đề liên quan