공작의지침서 기술연구부 안드로이드 유니티

안드로이드 Gradle / IL2CPP 환경에서 프로세스 남는 현상

유니티2018.3.12 에서gradle로 빌드시에 Application.Quit 으로 종료이후 다시 재실행시 UnityIAP 초기화가 실패하는 경우가 있습니다. 대략적으로 Inventory를 갱신시켜준후 Java프록시 호출이 실패하는 이슈(1126040) 였었고 3.13에서 해당 이슈가 해결되었다 하였습니다.

Android: Fixed crash when AndroidJavaProxy is invoked while app is in background. (1126040, 1140959)

하지만 2018.3.13으로 업데이트를 해줘도 간헐적으로 정상적으로 초기화가 되지않는 이슈가 반복되더라구요.

[재현스텝]

1.정상적으로 게임 진입 후 Application.Quit을 통해 종료
2.앱 아이콘을 클릭하여 재실행

찾아보니 UnityIAP 포럼에 같은 현상을 겪는 사람들이 있더라구요.

[해당글 원문 보기]

글에서는 아래와 같은 2가지 솔루션을 제시하였지만, 원하는 대로 동작을 해주지 않더라구요.

using (AndroidJavaClass javaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
        using (AndroidJavaObject javaActivity = javaClass.GetStatic<AndroidJavaObject>("currentActivity"))
        {
            javaActivity.Call<bool>("moveTaskToBack", true);
            javaActivity.Call("finish");
 
        }
}

유니티 액티비티를 백그라운드로 보내는 방법

System.Diagnostics.Process.GetCurrentProcess().Kill()

해당 기능을 사용하면 프로세스가 계속 프리징상태로 남아있다가 10~20초 후에 종료됩니다.

그냥 귀찮지만 안드로이드 스튜디오를 키고 aar을 만들었습니다.

[Download ] : quit_helper.zip 16.0KB
Minimum sdk level 16 ( 4.1 )

해당 zip파일을 다운로드하신후 압축을 푸시면 .aar파일이 나옵니다. 이를 Assets/Plugins/Android 폴더에 넣어주시고, 아래와 같이 메서드를 만들어주신후 Apllication.Quit을 사용하는 부분에서 대신 호출해주시면 깔끔하게 해결됩니다.

public static void Quit()
{
    AndroidJavaClass ajc = new AndroidJavaClass("com.lancekun.quit_helper.AN_QuitHelper");
    AndroidJavaObject UnityInstance = ajc.CallStatic<AndroidJavaObject>("Instance");
    UnityInstance.Call("AN_Exit");
}

Android Gradle / IL2CPP ( all architectures )
Samsung Galaxy S4, 5, 7, Note 5, 9 에서 해당 이슈가 해결된것을 확인하였습니다.

같은 이슈를 겪고 있던 선후님에게도 해당 파일을 전달하여 아래 링크의 게임 2.2.34버전에 적용되었다고 합니다.

시간되시는분은 한번 플레이 해보세요 ㅎㅎ

14 Replies to “안드로이드 Gradle / IL2CPP 환경에서 프로세스 남는 현상

  1. 감사합니다 ^^
    저의 경우 유니티 2018.3.14f1, intenal 빌드, IL2CPP 상황에서
    구글 로그인 문제로 해당 이슈를 찾아보고 있었습니다.

    GPGS 포럼에서 유니티 포럼으로 넘어와서 댓글 보면서
    하나씩 테스트하고 있었는데
    마침 랜스님 글에서 도움을 받아 해결하였습니다.
    감사한 마음은 다운로드와 별점으로 드렸습니다~ ^^

    감사합니다~

  2. 구버전 유니티를 사용하다가 2019.1.8.f1 Gradle 빌드로 업데이트 했는데 간헐적으로 구글 로그인이 되지 않아 헤매고 있었습니다 덕분에 해결되었습니다 정말 감사합니다! ㅠ

  3. I did used your aar but it doesnt do anything when calling Quit().

    Is there any extra step i need to complete to make it work? I’ve seen a checkbox saying “load automatically” or something like that.

  4. 안녕하세요!
    해당 솔루션을 사용해보았는데, 듀크황님께서 언급해주신것처럼 PlayerPref이 정상저장이 안되는 문제가 발생하더라구요.
    혹시 이부분에 대해서 어떻게 해결하셨는지 여쭤볼 수 있을까요?

    1. 안녕하세요! 저도 몇 유저로 부터 종료 직전의 데이터가 저장되지않았다는 말씀을 들었습니다.
      PlayerPrefs.Save(); 를 호출해준후 약간의 지연(제 경우엔 1초)를 준후 AN_QuitHelper.Quit();를 호출하니 정상적으로 잘 동작하는것을 확인하였습니다.

  5. 안녕하세요 랜스님!
    최근 업데이트에서 2019.1.12 버전으로 올리고 IL2CPP로 변경한 후 안드로이드에서 지속적으로 크래쉬가 나던 문제를
    올려주신 플러그인 덕분에 현재 서비스 중인 게임에서 발생하던 문제가 수정되었습니다! 감사합니다!!!

    다만 위의 문제와는 다르게 몇몇 유저에게서 여전히 크래쉬가 나며 앱을 키던 중에 꺼진다는 보고가 오고있습니다 ㅜ_ㅜ
    2019버전과 IL2CPP와의 호환문제인지… IOS도 마찬가지구요… 그래서 애를 먹고있습니다.. ㅎㅎ

    말이 길어졌네요 ㅎㅎ 무튼! 정신없이 업데이트 치다가 랜스님께 감사인사를 전해야 할 것 같아 왔습니다.
    다시한번 감사합니다.

  6. 안녕하세요 랜스님!
    최근 업데이트에서 2019.1.12 버전으로 올리고 IL2CPP로 변경한 후 안드로이드에서 지속적으로 크래쉬가 나던 문제를
    올려주신 플러그인 덕분에 현재 서비스 중인 게임에서 발생하던 문제가 수정되었습니다! 감사합니다!!!

    다만 위의 문제와는 다르게 몇몇 유저에게서 여전히 크래쉬가 나며 앱을 키던 중에 꺼진다는 보고가 오고있습니다 ㅜ_ㅜ
    2019버전과 IL2CPP와의 호환문제인지… IOS도 마찬가지구요… 그래서 애를 먹고있습니다.. ㅎㅎ

    말이 길어졌네요 ㅎㅎ 무튼! 정신없이 업데이트 치다가 랜스님께 감사인사를 전해야 할 것 같아 왔습니다.
    다시한번 감사합니다.

  7. I have noticed you don’t monetize lancekun.com, don’t waste your traffic, you can earn additional bucks
    every month with new monetization method. This is the best
    adsense alternative for any type of website (they approve all websites), for more details simply search in gooogle: murgrabia’s tools

  8. 추석 내내 지옥에서 나오지 못하고있었는데
    이 글을 읽고나서 그리고 quit_helper.zip를 다운받음으로서 지옥에서 벗어나올 수 있었습니다.
    너무 감사한마음에 이렇게 글을 작성하게 되었습니다.
    제가 겪었던 증상을 간단히 말씀드리겠습니다.
    구글 겜센터 로그인을 붙였었는데 처음 앱을 실행했을때는 잘되나
    로그인 팝업에서 로그인을 하지 않은채로 팝업을 닫고
    유니티를 다시 켠후에 구글게임센터로 그인 팝업을 다시 켜면 그때부터 제대로 작동이 되지않는 현상이었습니다.
    그러나 올려주신 파일을 사용하여 앱을 종료하니 앱을 재실행해도 정상적으로 잘되었습니다.
    혹시 염치없지만, AN_Exit의 내부 스크립트는 어떻게 되어있는지 여쭈어보아도될까요?

  9. 안녕하세요. 유니티 종료 시 Crush 현상 때문에 찾다가 올려주신 플러그인을 이용해서 해결했습니다.
    괜찮으시다면 내부 스크립트가 어떤식 으로 되어 있는지 공유해 주실수 있을까요?
    파일 공유해 주셔서 감사합니다. ^^

  10. Hi. I have checked your lancekun.com and i
    see you’ve got some duplicate content so probably it is the reason that you don’t rank
    hi in google. But you can fix this issue fast.

    There is a tool that rewrites content like human, just search in google:
    miftolo’s tools

Leave a Reply

Your email address will not be published. Required fields are marked *