集成到不同Android应用程序中的Unity Android正在应用程序上崩溃。Quit()

集成到不同Android应用程序中的Unity Android正在应用程序上崩溃。Quit(),android,unity3d,android-proguard,Android,Unity3d,Android Proguard,在我们将该项目导出到一个Android项目之后,我们将其与一个现有项目集成,并从中启动我们的游戏。这工作正常,但Application.Quit()使整个应用程序退出,而不仅仅是Unity活动。因此,我们通过将以下内容添加到清单中,使其在另一个流程上启动: android:process=":UnityKillsMe" 这解决了问题,但是,在使用Proguard混淆代码后,事情停止了工作。Unity仍能正确启动,但退出时,应用程序显示Unity停止的崩溃错误,即使应用程序本身仍在工作。重新启动

在我们将该项目导出到一个Android项目之后,我们将其与一个现有项目集成,并从中启动我们的游戏。这工作正常,但Application.Quit()使整个应用程序退出,而不仅仅是Unity活动。因此,我们通过将以下内容添加到清单中,使其在另一个流程上启动:

android:process=":UnityKillsMe"
这解决了问题,但是,在使用Proguard混淆代码后,事情停止了工作。Unity仍能正确启动,但退出时,应用程序显示Unity停止的崩溃错误,即使应用程序本身仍在工作。重新启动Unity甚至可以正常工作,但在Application.Quit()上,崩溃错误仍然显示。以下是发生错误时的错误日志:

12-02 15:01:35.112: E/AndroidRuntime(4342): FATAL EXCEPTION: UnityMain
12-02 15:01:35.112: E/AndroidRuntime(4342): Process: mobi.foo.touch:UnityKillsMe, PID: 4342
12-02 15:01:35.112: E/AndroidRuntime(4342): java.lang.Error: FATAL EXCEPTION [UnityMain]
12-02 15:01:35.112: E/AndroidRuntime(4342): Unity version     : 5.2.3f1
12-02 15:01:35.112: E/AndroidRuntime(4342):  at com.unity3d.player.UnityPlayer.nativeDone(Native Method)
12-02 15:01:35.112: E/AndroidRuntime(4342):  at com.unity3d.player.UnityPlayer.f(Unknown Source)
12-02 15:01:35.112: E/AndroidRuntime(4342):  at com.unity3d.player.UnityPlayer.g(Unknown Source)
12-02 15:01:35.112: E/AndroidRuntime(4342):  at com.unity3d.player.UnityPlayer$15.run(Unknown Source)
12-02 15:01:35.112: E/AndroidRuntime(4342):  at com.unity3d.player.UnityPlayer.executeGLThreadJobs(Unknown Source)
12-02 15:01:35.112: E/AndroidRuntime(4342):  at com.unity3d.player.UnityPlayer$b.run(Unknown Source)
12-02 15:01:35.122: E/ActivityManager(890): App crashed! Process: mobi.foo.touch:UnityKillsMe

如何解决这个问题?是什么导致了这个问题?

我刚刚遇到了确切的问题并设法解决了它

如果在Unity3D中调用了Application.Quit(),则在单独进程中启动Proguard+Unity3D将崩溃

解决方案:通过本机销毁Unity3D应用程序退出该应用程序

Unity3D:

// Add this code in, replace Application.Quit() to AndroidQuit()
void AndroidQuit(){
    AndroidJavaClass myClass = new AndroidJavaClass("com.yourpackagenamehere.UnityPlayerActivity");
    AndroidJavaObject activity = myClass.GetStatic<AndroidJavaObject>("UnityActivity");
    activity.Call("QuitUnity");
}
// In UnityPlayerActivity.java

// Declare static object for Unity to make calls from
public static Context UnityActivity;

// Instantiate it in the onCreate Method right after super.onCreate
UnityActivity = this;

// Add the following method for Unity3D function to trigger the Quit    
public void QuitUnity() {
    android.os.Process.killProcess(android.os.Process.myPid());
    //finish();
    //this.onDestroy();
}
编辑: 更新项目后,此.OnDestroy()和finish()将显示一个崩溃对话框。android.os.Process.killProcess()工作得很好

然而,直接杀死这个过程效果很好

另一方面,出现崩溃的原因之一可能是由于我使用了Render Texture和logcat中的以下unity错误曲面

Destroying active render texture. Switching to main context.