Android Studio에서 AAR 파일 생성 및 Unity에서 사용하는 방법
안녕하세요! 이번 포스트에서는 Android Studio에서 AAR 파일을 생성하고 이를 Unity 프로젝트에서 사용하는 방법에 대해 알아보겠습니다. AAR 파일은 Android Archive의 약자로, 안드로이드 라이브러리를 패키징하는데 사용됩니다. Unity에서는 네이티브 안드로이드 기능을 활용하기 위해 AAR 파일을 사용합니다.
이 블로그에서 사용하는 버전은 다음과 같습니다.
- android-studio-2024.1.1.11-windows
- Unity (2022.3.32f1) LTS
Android Studio에서 AAR 파일 생성하기
새 프로젝트 생성 또는 기존 프로젝트 열기
- Android Studio를 실행하고 새 프로젝트를 생성하거나 기존 프로젝트를 엽니다.
- Activity 기능은 사용하지 않으니 NoActivity로 설정합니다.
- 원하는 이름으로 바꿔줍니다. 이 블로그에서는 MyApplication 이름 그대로 사용합니다.
- Package name은 Unity 프로젝트와 맞춰주는 것이 좋습니다. 지금은 Unity와 동기화할 필요가 없기 때문에 기본 패키지 네임을 사용합니다.
- 저장 경로와 언어 최소 SDK버전을 설정하고 Finish를 누릅니다.
- 생성이 완료되면 Gradle 설정과 이것저것 로딩됩니다.
- 로딩이 완료되면 왼쪽 상단의 Project가 Android로 바뀝니다.
- 바뀌지 않는 경우 드롭다운 리스트에서 선택할 수 있습니다.
- 최신 UI가 불편한 분들은 File-Setting-NewUI에서 Enable new UI를 사용하거나 비활성화 할 수 있습니다.
라이브러리 모듈 추가
- File > New > New Module을 선택합니다.
- Android Library를 선택하고 Next를 클릭합니다.
- 라이브러리 이름과 패키지 이름을 설정한 후 Finish를 클릭합니다.
new Module 을 만들 때 package name을 신경씁니다.
- 모듈이 생성되면 Project 창에 생성한 라이브러리 파일이 추가됩니다.
- mylibrary-kotlin+java-com.company.mylibrary의 (test)와(androidTest) 폴더는 사용하지 않으니 삭제합니다.
- 한번에 삭제되지 않고 폴더 상단으로 이동하며 삭제 대기가 되니 한 번 더 삭제 해줍니다.
- 삭제가 완료되면 mylibrary-kotlin+java-com.company.mylibrary 폴더 안에 JavaClass를 생성해줍니다.
코드 작성
- project의 경우 src/main/java 폴더에 필요한 클래스 파일을 추가하고, src/main/res 폴더에 리소스를 추가할 수 있습니다.
클래스 이름은 알기 쉽게 PluginTest로 작성합니다.
- 라이브러리 모듈에 필요한 코드를 작성합니다.
package com.company.mylibrary;
import android.content.Context;
public class PluginTest {
private static PluginTest instance;
public static PluginTest Instance()
{
if(instance == null)
instance = new PluginTest();
return instance;
}
private static Context _Context;
public String SetContext(Context context)
{
_Context = context;
return "ContextSuccess" + _Context.toString();
}
public String TestFunction()
{
return "Success";
}
}
위 코드에서는 클래스를 instance로 생성하여 싱글톤 패턴과 같이 사용합니다.
Activity를 대신하여 Unity에서 처리해주기 때문에 Context는 받아서 사용합니다.
이후 TestFunction을 사용하는 것 까지 Unity에서 호출해주도록 합니다.
AAR 파일 빌드
- 라이브러리 프로젝트를 선택한 후 Build > Make Module (ProjectName.libraryName)를 선택하여 프로젝트를 빌드합니다.
- 빌드가 완료되면 ProjectFile패널로 바꾼 후 build/outputs/aar 디렉토리에서 AAR 파일을 찾을 수 있습니다.
Unity에서 AAR 파일 사용하기
- Unity 프로젝트에 AAR 파일 추가
- Unity 프로젝트를 엽니다.
- Assets 폴더에 Plugins 폴더를 생성합니다.
- Plugins 폴더 안에 Android 폴더를 생성합니다.
- build/outputs/aar 디렉토리에서 생성한 AAR 파일을 Assets/Plugins/Android 폴더로 복사합니다.
C# 스크립트 작성
- Unity에서 AAR 파일의 기능을 호출할 C# 스크립트를 작성합니다.
- 예를 들어, 안드로이드의 네이티브 기능을 호출하는 경우, 아래와 같은 코드를 작성할 수 있습니다.
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PluginTest : MonoBehaviour
{
[SerializeField] Text Temp;
// Start is called before the first frame update
void Start()
{
using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); // Android context 대신
AndroidJavaObject library = new AndroidJavaObject("com.company.mylibrary.PluginTest"); // 클래스 가져오기
AndroidJavaObject libraryInstance = library.CallStatic<AndroidJavaObject>("Instance"); // 인스턴스 사용
string context = libraryInstance.Call<string>("SetContext", activity); // context 등록
string test = libraryInstance.Call<string>("TestFunction"); // 테스트 함수
string tempStr = "AndroidJavaClass : " + unityPlayer.ToString();
tempStr += "\n Android Java Object : " + activity.ToString();
tempStr += "\n Android Java Object class : " + library.ToString();
tempStr += "\n Android Java Object Instance : " + libraryInstance.ToString();
tempStr += "\n context : " + context;
tempStr += "\n testFunction : " + test;
Temp.text = tempStr;
}
}
}
해당 코드는 Editor에서 실행되지 않기 때문에 안드로이드 환경에서 실행해야 합니다.
- 캔버스에 Text를 추가하여 로그를 남길 수 있습니다.
작성한 스크립트에 Text 컴포넌트를 넣어줍니다.
Unity에서 빌드
- Unity 에디터에서 File > Build Settings를 선택합니다.
- 플랫폼을 Android로 선택하고 Switch Platform을 클릭합니다.
- Build 버튼을 클릭하여 안드로이드 빌드를 진행합니다.
또는 핸드폰의 개발자 모드를 켠 상태에서 Build And Run을 클릭하여 실행합니다.
이렇게 하면 Android Studio에서 생성한 AAR 파일을 Unity 프로젝트에서 사용할 수 있습니다. 이 과정에서 AAR 파일의 기능을 Unity에서 제대로 호출할 수 있는지 확인하기 위해 테스트하는 것이 중요합니다.
AAR 파일을 활용하여 Unity 프로젝트에서 안드로이드 네이티브 기능을 보다 쉽게 사용할 수 있습니다. 즐거운 개발 되세요!
'Unity > Manual' 카테고리의 다른 글
Unity SoundManager 구현하기 싱글톤 패턴을 활용한 BGM 및 SFX 관리 (3) | 2024.11.09 |
---|---|
Unity Android 로그인 구현 (0) | 2024.07.08 |
Unity에서 Android 빌드 환경 설정하는 방법 단계별 가이드 (0) | 2024.07.06 |
Unity에서 데이터 테이블 사용하기: 게임 개발의 효율성을 높이기 위한 방법 (0) | 2024.06.18 |
Unity의 코루틴(Coroutine)에서 사용되는 yield return 구문 총 정리 (1) | 2024.06.16 |