0

Я строю игру для Android. Это проект Unity3D, экспортированный в Android Studio. Я пытаюсь управлять всеми функциями Google Play Services (GPS) в Android Studio. Это класс отвечает за взаимодействие с GPS (я знаю, что я не после стандартных моделей программирования):AndroidRuntime: Shutting down VM

package com.lemondo.eyescube; 

import android.os.Bundle; 
import android.util.Log; 

import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.games.Games; 
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks; 
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener; 
import com.unity3d.player.UnityPlayer; 
import com.unity3d.player.UnityPlayerActivity; 

public class GPSBinding implements ConnectionCallbacks, OnConnectionFailedListener { 

    public GoogleApiClient googleApiClient; 

    private static GPSBinding _gpsBindingInstance; 
    public static GPSBinding instance(){ 
     if(_gpsBindingInstance == null){ 
      _gpsBindingInstance = new GPSBinding(); 
     } 
     return _gpsBindingInstance; 
    } 

    public static void Initialize(){ 
     if(instance().googleApiClient == null) { 
      instance().googleApiClient = new GoogleApiClient.Builder(UnityPlayer.currentActivity) 
        .addConnectionCallbacks(instance()) 
        .addOnConnectionFailedListener(instance()) 
        .addApi(Games.API) 
        .addScope(Games.SCOPE_GAMES) 
        .build(); 
     } 
    } 

    public static void AuthenticatePlayer() { 
     Log.d("GPSBinding", "AuthenticatePlayer"); 
     try { 
      if (instance().googleApiClient != null) 
       instance().googleApiClient.connect(); 
      else 
       Log.d("GPSBinding", "AuthenticatePlayer: googleApiClient is null"); 
     } catch (Exception e){ 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    public void onConnected(Bundle bundle) { 
    } 

    @Override 
    public void onConnectionSuspended(int i) { 
    } 

    @Override 
    public void onConnectionFailed(ConnectionResult result) { 
    } 

} 

Это то, что происходит: приложение запускается, Unity вызывает Initialize() метода при старте его ждет 1 секунду и вызывает AuthenticatePlayer() метод.

В приложение падает на этой линии в Authenticatelayer():

instance().googleApiClient.connect(); 

Я не понимаю причину, хотя, это трассировки стека:

01-12 12:46:02.602 30609-30609/com.lemondo.eyescube D/AndroidRuntime: Shutting down VM 
01-12 12:46:02.605 30609-30609/com.lemondo.eyescube E/AndroidRuntime: FATAL EXCEPTION: main 
01-12 12:46:02.605 30609-30609/com.lemondo.eyescube E/AndroidRuntime: Process: com.lemondo.eyescube, PID: 30609 
01-12 12:46:02.605 30609-30609/com.lemondo.eyescube E/AndroidRuntime: java.lang.Error: FATAL EXCEPTION [main] 
01-12 12:46:02.605 30609-30609/com.lemondo.eyescube E/AndroidRuntime: Unity version  : 5.2.1f1 
01-12 12:46:02.605 30609-30609/com.lemondo.eyescube E/AndroidRuntime: Device model  : samsung GT-I9500 
01-12 12:46:02.605 30609-30609/com.lemondo.eyescube E/AndroidRuntime: Device fingerprint: ... 
01-12 12:46:25.139 30609-30609/com.lemondo.eyescube I/Process: Sending signal. PID: 30609 SIG: 9 

Похожие вопросы на SO просто скажем, для настройки Google Analytics, которую я вообще не использую. Странно, что это даже не исключение - просто Boom! Крах! Кто-нибудь может понять, что может быть неправильным? Заранее спасибо!

ответ

0

Так жульничество глупо - я забыл добавить идентификатор приложения в мой манифест:

<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" /> 
Смежные вопросы