Android Studio + Unity AR 화면 오류 고치기

최지온·2023년 8월 17일

학술제

목록 보기
6/6
post-thumbnail

사용 버전

Unity: 2022.3.4f1

Android Studi:o 2022 Flamingo

SDK: Unity와 동일

NDK: Unity와 동일

JDK: Unity와 동일

오류가 나게 된 배경

Unity의 AR Foundation, Google의 AR Core 플러그인을 사용하여 어플의 기반을 제작하고, Android Studio와 연동하여 앱으로 빌드하는 것이 초기 계획이었다.

Unity에서 Android로 Export하는 것까지는 문제가 없었으나, Android Studio로 Import 했을 때 AR 화면, 즉 카메라 화면이 나오지 않는 오류가 생겼다.

후술할 시도했던 것들은 몇 주 동안 고민하며 전부 다 직접 경험해본 것들이니, 필자와 같은 문제를 가진 사람이라면 천천히 전부 읽어본 뒤 해결책을 따라해주길 바란다.

사용해본 방법들

첫 번째 (unityLibrary 교체)

Github에는 친절하게도 Unity As A Library라는 Unity를 라이브러리로 사용하여 Android Studio에서도 빌드를 할 수 있게 해주었다.

예제에 있는 docs 파일에 친절하게 설명까지 나와있어 그대로 따라한 뒤 Unity에서 Export한 파일의 unityLibrary 파일만 교체해주면 쉽게 끝날 줄 알았다. 하지만 AR 화면이 나오지 않았고, 이때부터 오류의 늪에 빠지게 되었다.

두 번째 (unityLibrary 경우의 수 찾아보기)

지금은 왜 그런지 모르겠으나 uaal example 예제의 구버전 branch가 풀려있는 상황이지만, 저 오류를 고칠 때만 하더라도, 잠겨있어 제일 최신 버전의 예제를 받은 후, 구 버전의 코드를 보며 하나하나 수정을 했어야 했다.

그래서 신 버전의 예제와 신 버전의 unityLibrary 구 버전의 예제와 구 버전의 unityLibrary 두 개가 생겨나게 되는데, 모든 조합을 하나하나 넣어보며 AR 화면이 보이나 확인을 했었다.

신 버전 예제 + 신 버전 unityLibrary = 화면 X
신 버전 예제 + 구 버전 unityLibrary = 화면 X
구 버전 예제 + 구 버전 unityLibrary = 화면 X
구 버전 예제 + 신 버전 unityLibrary = 화면 X

세 번째 (logcat)

좀 더 정보를 찾아보니 android Studio에서 일단 빌드가 된 상태면, logcat이라는 앱을 사용할 때 로그를 보여주는 도구를 사용해보라고 한다.

그래서 logcat을 보니, UnityARCore 자체가 인식이 안된다고 오류가 떠 있었고, 그걸 고치기 위해 정말 많은 고민을 했다.

네 번째 (libpenguin.so)

logcat에는 정말 많은 오류가 떴지만, 그 중 일정하게 계속 나오는 오류가 있었으니, libpenguin.so 라는 라이브러리를 찾을 수 없다는 것이다.

이것이 AR 화면이 나오지 않는 이유가 아닐까라는 생각이 들어 고쳐보았지만 그것도 아니었다.

다섯 번째 (Unity 플러그인 버전)

정보의 바다를 탐험하던 중 Unity 자체의 문제가 있지 않을까 라는 생각에 버전을 올리면서 고친 버그들을 보았다.

현재 사용하고 있는 Unity2022.3.4f1에서 쓰는 AR 관련 플러그인이 Android Export시 자동으로 생성되는 AndroidManifest.xml을 지워버린다는 것이다.

현재 사용하고 있는 Google AR Core, XR Package Management는 종속성으로 묶여 있어 버전을 올리거나 내릴 수 없었다.

그래서 플러그인을 통째로 지우고 업데이트 하는 방식으로 버전을 올렸고, Export 했을 때 AndroidManifest.xml 파일이 잘 나오게 되었지만, 그래도 AR 화면은 나오지 않았다.

해결 방법

결론 먼저 말하자면, 플러그인 버전의 문제가 맞긴 맞았다.

XR Package Management 버전을 4.3.3 -> 4.4.0으로 올리면서 xrmanifest.androidlib 파일이 생기게 되었다.

하지만 절대 예제를 사용해서 unityLibrary를 교체하는 방식은 사용하면 안된다.

온갖 코드가 꼬이게 되며 AndroidManifest.xml 파일이 아예 인식이 안되거나 아예 Android Studio에서 빌드시 어플이 강제 종료되는 경우도 꽤나 많다.

그러면 어떻게 해야하는가? Unity에서 Android로 Export를 하고 아무것도 만지지 않은 파일을 준비한다.

그 파일을 예제 파일의 프로젝트 구조와 똑같이 만든다.

이러면 xrmanifest.androidlib 에 있는 AndroidManifest.xml 파일도 잘 인식이 되고, unityLibrary에 있는 AndroidManifest.xml 파일도 잘 인식이 된다.

이렇게 하고 나서, AndroidManifest.xml에 를 수정해주고, 잡다한 Activity 자바 클래스 파일은 지워준 뒤, MainActivity 파일에 테스트용 UI를 짜면 된다.

이렇게 하면 오류 없이 AR 화면이 잘 나온다.

profile
왕초보입니다

0개의 댓글