페이지

2017년 2월 19일 일요일

공포박물관 1.0.3 업데이트 수기 - 4편 : 임시방편( obb downloader로 이전 버전 obb파일 받기 )

실행 불가 현상의 핵심 원인은 obb downloader의 호환성 문제였다. obb downloader를 최신 버전으로 업데이트 한다.
이제 게임이 크래쉬 되던 지점은 무사히 통과된다. 하지만 obb 파일이 다운로드 되는 것 같지 않다. 왜지?

obb파일을 업데이트 할 필요를 당장 못 느꼈기에 버전업한 앱을 업로드 할 때,
업데이트에 사용할 obb는 이전 버전의 것으로 설정 했다.

하지만 이게 문제 였다. 원인을 찾기 위해 obb downloader플러그인 소스를 훑어보던 중, 다음과 같은 코드가 눈에 들어왔다.
private static void populateOBBData()
{
 if (obb_version != 0)
  return;

 using (AndroidJavaClass unity_player = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
 {
  AndroidJavaObject current_activity = unity_player.GetStatic<AndroidJavaObject>("currentActivity");
  obb_package = current_activity.Call<string>("getPackageName");
  AndroidJavaObject package_info = current_activity.Call<AndroidJavaObject>("getPackageManager").Call<AndroidJavaObject>("getPackageInfo", obb_package, 0);

                // 플레이어 셋팅의 Bundle Version Code값이 obb_version에 할당 되는 듯 하다.
                obb_version = package_info.Get<int>("versionCode");

               // 만약 아래와 같이 하드 코딩 하면 내가 원하는 버전의 obb파일을 얻을 수 있다.
               // 아래 코드 같은 경우, 버전 코드 3에 매칭되는 obb파일을
               // 다운로드 받을 수 있게 해 준다.
               obb_version = 3;
 }
}

업데이트를 위해 플레이 스토어 개발자 콘솔에 APK를 업로드 하기 위해서는 이전에 올렸던 APK보다 높은 버전 코드를 설정해야 한다.
따라서 위의 코드 내용 대로라면 obb_downloader를 사용할 떄, 버전 코드를 올리는 것 이외에도
obb파일도 버전에 맞게 새로 만들어서 같이 올려야 한다.


리소스 내용이 바뀔 필요가 없는데 obb_downloader때문에 obb파일을 새로 업로드 하고 싶진 않았다.
그래서 테스트 삼아 위와 같이 obb_version = 3이라고 코딩 후 어떻게 동작하는지 테스트 해 본 결과,

다운로드가 된다!!!

이후 obb_downloader 호환성 문제 때문에 문제를 일으켰던 폰에서도 obb파일이 잘 다운로드 됨을 확인할 수 있었다.
하지만 이후 obb파일을 애셋번들링 했던 엔진과 앱을 빌드했던 엔진의 버전 불일치 문제 때문에 결국 obb 파일은 새로 빌드 해야 했다 ㅠ ㅠ

3년 지난 후의 애셋번들링 툴이라서 툴 코드에 대한 안전성에 자신이 없어서 웬만하면 애셋번들은 다시 굽고 싶지 않았다.
하지만 앱과 애셋번들과의 버전 불일치 문제 때문에 결국 obb파일도 새로 갱신했다.

이후 obb 다운로드도 계속 잘 되고, 애셋번들 파일 로딩도 잘 처리되어 공포 박물관의 타이틀 화면을 폰에서 확인하는데 성공한다.

임시방편으로 빨리 일을 처리하고 싶었지만 결국 정공법으로 문제를 해결해 나가야만 했다.
이렇게 업데이트를 위한 8부능선을 넘는다.

댓글 없음:

댓글 쓰기