0

Я сильно застрял, пытаясь добавить Google Play, а затем отпустить мое приложение в Play Маркете. Дело в том, что я сделал это в LibGDX, внедряя класс Screen, и теперь руководство Google пытается заставить меня создать layout.xml и добавить в него новые вещи, чтобы получить глупую кнопку входа в систему ,LibGDX и настройка/интеграция GoogleApiClient (первый раз)

Я читал/исследовал всюду, например, как 40 + часов ПРЯМО! и я не очень-то блистаю! Я сейчас ненавижу google со страстью (я был сторонником на днях!) Их ... «документация» по этому поводу - это боль в мозге и почти невозможная для работы с проектом LibGDX, и, к сожалению, я не получаю никакой помощи использования с форума сообщества LibGDX.

Это не может быть так сложно, я, очевидно, пропустил что-то простое! Я считаю, что у меня есть GoogleApiClient, и мой собственный интерфейс настроен нормально, и у меня есть экземпляр GoogleApiClient во всех моих классах, которые ему нужны сейчас, без ошибок.

Ошибка возникает, когда я пытаюсь сделать глупый макет и иметь это в начале моего приложения (IE. Я попытался создать простой layout.xml, который просто имеет кнопку входа только после того, как игрок щелкнет войдите в приложение, которое начнется с вызова «initialize ...» внутри Android-платформы LibGDX, как обычно.

В настоящее время я получаю эту ошибку (я вот-вот взорву гнев, что это кодирование Google вызвало меня, я действительно) :

E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: com.megabro.flappyturd, PID: 3799 
        java.lang.RuntimeException: Unable to resume activity {com.megabro.flappyturd/com.megabro.flappyturd.AndroidLauncher}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.badlogic.gdx.backends.android.AndroidInput.onResume()' on a null object reference 
         at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3400) 
         at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3440) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2713) 
         at android.app.ActivityThread.-wrap12(ActivityThread.java) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) 
         at android.os.Handler.dispatchMessage(Handler.java:102) 
         at android.os.Looper.loop(Looper.java:154) 
         at android.app.ActivityThread.main(ActivityThread.java:6077) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
        Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.badlogic.gdx.backends.android.AndroidInput.onResume()' on a null object reference 
         at com.badlogic.gdx.backends.android.AndroidApplication.onResume(AndroidApplication.java:299) 
         at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1269) 
         at android.app.Activity.performResume(Activity.java:6766) 
         at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3377) 
         at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3440)  
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2713)  
         at android.app.ActivityThread.-wrap12(ActivityThread.java)  
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)  
         at android.os.Handler.dispatchMessage(Handler.java:102)  
         at android.os.Looper.loop(Looper.java:154)  
         at android.app.ActivityThread.main(ActivityThread.java:6077)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)  

Я вывешиваю весь код, который вызывает вопрос о Pastebin, поставит ссылку здесь:

http://pastebin.com/F6sqQPDc

+0

Вы забыли прислать ссылку? – lealceldeiro

+0

Каково ваше требование использовать GoogleApiClient? Это для Leaderboard и достижений? – Aryan

+0

Привет, друг, да, я опубликовал одну из своих игр (первый таймер!) В Play Store, у меня есть учетная запись Dev Console и т. Д. В ней говорится, что у меня должно быть не менее 5 баллов. Я основывал их на всех баллах (кроме последнего, который предназначен для последовательных повторов). Поэтому мне действительно нужен метод Games.unlockachievement(). Но я, похоже, застрял на кнопке «Вход в систему», в которой руководство по голосовой записи говорит, что я должен включить, чтобы опубликовать мое приложение –

ответ

2

Надеюсь, вы используете Intellij или Android Studio.

Если да интегрировать BaseGameUtils в проекте

https://github.com/libgdx/libgdx/wiki/Google-Play-Game-Services-in-LibGDX#intellij-and-android-studio-setup

public class MainActivity extends AndroidApplication implements GameHelperListener, ActionResolver { 
    private GameHelper gameHelper; 

    @Override 
    public void onCreate (Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     initialize(new TutorialLibgdxGameservices(this), false); 
    if (gameHelper == null) { 
     gameHelper = new GameHelper(this, GameHelper.CLIENT_GAMES); 
     gameHelper.enableDebugLog(true); 
    } 
    gameHelper.setup(this); 
    } 

    @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 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(), "CgkI6574wJUXEAIQBw", score); 
    } 

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

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

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

    @Override 
    public void onSignInFailed() { 
    } 

    @Override 
    public void onSignInSucceeded() { 
    } 
} 

И держать ActionResolver в основном модуле для взаимодействия.

public interface ActionResolver { 
    public boolean getSignedInGPGS(); 
    public void loginGPGS(); 
    public void submitScoreGPGS(int score); 
    public void unlockAchievementGPGS(String achievementId); 
    public void getLeaderboardGPGS(); 
    public void getAchievementsGPGS(); 
} 
+0

привет снова Abhishek. спасибо за быстрый ответ. Я использую Android Studio, и я скопировал папку BaseGameUtils в свой проект точно так же, как предлагалось на страницах google.Я уверен, что он работает, когда я комментирую свой код в макете/представлении (внутри AndroidLauncher), все работает отлично (т. Е. Никаких ошибок в градиенте и т. Д.). Теперь я собираюсь прочитать ваш код и попытаться поместить его в свой проект. Большое спасибо за любезную помощь. Я вернусь КАК МОЖНО СКОРЕЕ и дам вам знать, работает ли это в моем приложении. (PS. Я пытался проголосовать за ваши сообщения, но из-за того, что я был новым, я не мог). Вернемся, попробуй это прямо сейчас! –

+0

Если у вас есть проблема в вашем приложении или в коде, просто пингуйте меня. – Aryan

+0

привет друг. мой первый вопрос заключается в том, что интерфейс «ActionResolver» так же, как и мой GoogInterface в моем коде? и a) какие методы должен иметь ActionResolver и b) какой пакет я должен сделать ActionResolver (т. е. Android/Core/Desktop - в студии android) –

Смежные вопросы