UaaL (안드로이드&유니티 간의 통합)
이라는 주제에 집중하기 위해 Android, Unity 프로젝트 각각을 제작하는 과정은 생략하겠습니다.
깃허브의 uaal-example 레포지토리에서 미리 만들어진 프로젝트들을 클론/다운로드 해주세요.
해당 레포지토리에 포함되어있는 프로젝트들은 다음과 같습니다:
NativeAndroidApp
: Unity 프로젝트가 통합될 Android Studio의 Basic Activity application 입니다. OverrideUnityActivity를 extends하여 만든 심플한 UI의 MainUnityActivity가 있고, 이는 Intent를 통해 시작할 준비가 되어있습니다.UnityProject
: 표준 Android 애플리케이션에 통합될 Unity로 만든 간단한 데모 프로젝트입니다.Unity Editor에서 UnityProject
를 열어주세요!
Build Settings
Android Platform
으로 Switch
해줍니다Player Settings
버튼, 또는, Edit > Project Settings > 왼쪽의 Player
탭Other Settings
의 Configuration
섹션에서 Target Architectures
를 선택해줍니다Q. 'Target Architectures'에서 ARMv7, ARM64, x86 (Chrome OS), x86-64 (Chrome OS)가 '모두' 활성화가 안 되어있고 몇 개만 선택이 가능하도록 뜬다면?
A. 'Scripting Backend'가 'Mono'로 설정되어있진 않은지 확인하고, 이를 'IL2CPP'로 변경해주세요. 그러면 모든 Target Architectures가 활성화되어 선택 가능해집니다.
Q. Target Architectures를 선택하는 기준은?
A. 웬만하면 모든 Architectures를 선택해주세요. 왜냐하면 어플리케이션을 디바이스 상에서 돌리려 할 때, 디바이스의 아키텍처와 맞지 않으면 build 자체가 안 되는 문제가 발생할 수 있어서 처음부터 다 포함해주는 게 낫습니다. 나중에 변경해주려면 export부터 다시 해야해요.
만약 아키텍처에 관해 잘 알고 계시고, 그래서 특정 아키텍처로 정말 타겟팅하고자 하는 상황이라면 해당 아키텍처만 골라서 export하는 게 당연히 문제되지 않습니다.
Export Project
옵션을 선택합니다 (※ '3-②' 단계와 이어집니다. 주의해주세요!)Export
버튼을 누릅니다androidBuild
폴더에 UnityProject를 export 해주세요Q. 'Android SDK is outdated'라는 팝업이 떴습니다!
A. 저는 'Use Highest Installed'을 클릭했더니 별 문제 없이 해결되었습니다.
이제부터는 아까 export 시킨 AndroidBuild/unityLibrary
모듈을 Android Studio의 NativeAndroidApp Gradle 프로젝트에 추가해주기 위한 작업을 해볼 예정입니다.
Android Studio에서 NativeAndroidApp
를 열어주세요!
unityLibrary
모듈을 가리키는 새 프로젝트를 추가해줍니다include ':unityLibrary'
project(':unityLibrary').projectDir=new File('..\\UnityProject\\androidBuild\\unityLibrary')
dependencyResolutionManagement{repositories{
블럭 내부에 다음 내용을 추가합니다flatDir {
dirs "${project(':unityLibrary').projectDir}/libs"
}
그 결과, settings.gradle 파일 :
dependencies{
블럭 내부에 다음 내용을 추가합니다implementation project(':unityLibrary')
implementation fileTree(dir: project(':unityLibrary').getProjectDir().toString() + ('\\libs'), include: ['*.jar'])
android{defaultConfig{ndk{
블럭 내부의 abiFilters
가, 아까 '2-③' 단계에서 UnityProject를 export 시키기 직전에 선택했던 Export Project
옵션의 아키텍쳐(들)과 완전히 일치하는지 꼭 확인해주세요!UnityProject
의 gradle.properties 파일의 내용을 복사해서, NativeAndroidApp
의 gradle.properties 파일에 붙여넣기 해주세요sync
를 해주세요 (시간 좀 걸릴 수 있어요 기다려주세요~)지금까지 모두 잘 따라왔다면, 다음과 같이 Android 뷰에 unityLibrary가 잘 추가되어있는 모습을 확인할 수 있습니다!
빌드 & 실행(run) & 디버그 해봅시다!
아래는 앱 시연 영상입니다!
참고한 공식 문서 : https://github.com/Unity-Technologies/uaal-example/blob/master/docs/android.md