Android Studio + Unity 연동

최지온·2023년 7월 12일

학술제

목록 보기
1/6

서론

기본적으로 Android Studio 단일 AR Core를 할 때보다 인터넷에 있는 예제가 굉장히 많아 공부하기는 편하다.

하지만 대부분의 자료들이 대부분 2017~2021년 자료들이다.

다양한 예제들을 따라해봐도 Unity 버전이 다르거나, SDK 버전이 다르거나, JDK 버전이 다르거나, NDK가 호환이 안되거나… 등등 여러가지 문제가 많다.

계속 여러 자료들을 찾다 성공한 것이 unity 공식 GitHub에서 나온 uaal-example이다.

https://github.com/Unity-Technologies/uaal-example/blob/uaal-example/22LTS/docs/android.md

일단 구버전의 GitHub 예제는 다운로드를 받을 수 없음 그래서 일단 신버전의 예제를 다운로드 받은 뒤 구버전의 코드를 보면서 내가 직접 수정해 호환되게 만들기로 했다.

방법

파일을 다운로드 받으면 NativeAndroidApp, NativeiOSApp, NativetvOSApp 등등 여러가지 파일이 있다.

거기서 NativeANdroidApp과 Unity project를 빼고 전부 지워준다.

그리고 자신의 버전에 맞게 유니티를 키고 Open을 눌러 UnityProject를 연다.

빌드 설정에 들어가 Android를 누르고 플랫폼 변경을 누른다.

플레이어 세팅에 들어간다.

기타 세팅에 Scripting Backend Il2CPP로 변경해주고 ARM64를 체크한다.

다시 빌드 세팅으로 돌아온다.

익스포트 프로젝트를 체크한 뒤 익스프토를 누른다.

익스포트 파일은 Unityproject 안에 androidBuild라는 파일을 새로 만들어서 그곳에 경로 지정을 하면 된다.

이제 안드로이드 스튜디오에서 설정을 해줄 차례이다.

알아서 버전에 맞게 안드로이드 스튜디오를 켜준 뒤 NativeAndroidApp을 켜준다.

setting.gradle (Project: NativeAndroidApp)을 수정해줘야 한다.

첫 번째 섹션에서 플러그인을 설정해줘야 한다. 여기서는 Gradle Plugin Portal, Google, Maven Central을 사용한다.

두 번째 섹션에서는 ‘.app’ 프로젝트와 ‘:unityLibrary’ 프로젝트를 포함하도록 설정해야 한다.

project(':unityLibrary').projectDir를 특정 경로로 설정함으로써 'unityLibrary' 프로젝트의 디렉토리를 설정하고 있다.

마지막 섹션은 의존성 해결 관리 설정이다. 어떤 저장소를 사용할지 설정하는 것인데, 기본적으로 'google()', 'mavenCentral()'을 사용하며, 'unityLibrary' 프로젝트의 '/libs' 폴더를 flatDir로 사용하여 추가적인 라이브러리 의존성을 찾습니다.

다음은 build.gradle (Module :app)이다.

이런 식으로 implementation을 추가해준다.

현재 ‘UnityLibrary’ 모듈의 ‘libs’ 폴더에 있는 모든 jar 파일에 의존하도록 설정하고 있다.

이제 아까 익스포트했던 AndroidBuild로 들어간다.

거기서 gradle.properties 파일을 열어 써져있는 것들을 복사한다.

그리고 현재 내가 열고 있는 NativeAndroidApp 파일의 gradle.properties에 붙여넣기 한다.

android.enableJetifier=true
android.useAndroidX=true
org.gradle.jvmargs=-Xmx4096M
org.gradle.parallel=true
unityStreamingAssets=
unityTemplateVersion=5

원래 있던 것을 지우고 붙여넣기 하는 것이 아닌 원래 있던 것 밑에 추가해주는 것을 유의해야 한다.

최신 버전을 사용한다면 이렇게 세팅이 끝나지만 구 버전을 사용하고 있기 때문에 아직 할게 남아있다.

구 버전의 MainActivity.java, MainUnityActivity.java, ExampleInstrumentedTest.java, ExampleUnityTest.java 코드를 복사해서 현재 내가 열고 있는 똑같은 이름의 파일에 각자 붙여넣기를 해서 수정한다.

그리고 UnityLibrary의 OverrideunityActivity.java에 호환이 되지 않는 코드가 있어 수정을 해야한다.

아마 코드 내부에 UnityPlayerGameActivity라는 코드가 있을텐데 이걸 UnityPlayerActivity로 바꿔주면 된다.

유니티 2023 이후 버전에서는 호환이 되는 코드지만 2022 이전 코드에서는 지원하지 않는 코드이다.

이제 Sync가 잘 되는지 한 번 돌려준다.

잘 되면 이제 휴대폰과 연동하여 빌드하면 된다.

만약 권한 관련된 문제가 생긴다면 Android Studio를 잠시 종료한 뒤 관리자 권한으로 다시 실행해주고 Sync 돌려준 뒤 빌드하면 된다.

profile
왕초보입니다

0개의 댓글