AndroidRuntime:关闭虚拟机
AndroidRuntime: Shutting down VM
我正在构建 android 游戏。这是一个导出到 Android Studio 的 Unity3D 项目。我正在尝试在 Android Studio 中管理所有 Google Play 服务 (GPS) 交互。这是负责与 GPS 交互的 class(我知道我没有遵循标准编程模式):
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!碰撞!有谁知道可能出了什么问题?提前致谢!
太蠢了 - 我忘了将应用程序 ID 添加到我的清单中:
<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />
我正在构建 android 游戏。这是一个导出到 Android Studio 的 Unity3D 项目。我正在尝试在 Android Studio 中管理所有 Google Play 服务 (GPS) 交互。这是负责与 GPS 交互的 class(我知道我没有遵循标准编程模式):
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!碰撞!有谁知道可能出了什么问题?提前致谢!
太蠢了 - 我忘了将应用程序 ID 添加到我的清单中:
<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />