EDM4U(External Dependency Manager for Unity) 정리
왜 필요한가
섹션 제목: “왜 필요한가”Unity로 모바일 게임을 만들 때 Firebase, AdMob, Facebook SDK 같은 플러그인을 여럿 쓰면 아래 문제가 생긴다.
- 종속성 충돌: 플러그인 A는
Google Play Services 19.0.0을, 플러그인 B는18.5.0을 요구하면 빌드 시 충돌이 난다. - 플랫폼별 관리: Android는 Gradle/Maven, iOS는 CocoaPods로 패키지 관리 시스템이 달라서 OS별로 따로 설정해야 한다.
EDM4U는 라이브러리들이 요구하는 버전을 확인해 사용할 버전을 정하고, 자동으로 내려받아 설정한다.
Android Resolver
섹션 제목: “Android Resolver”- 역할: Android 빌드에 필요한
.aar,.jar라이브러리를 관리한다. - 동작 방식: Gradle로 Maven 저장소에서 필요한 라이브러리를 가져온다.
- 설정:
mainTemplate.gradle이나launcherTemplate.gradle을 자동으로 수정해 종속성을 주입한다.
iOS Resolver
섹션 제목: “iOS Resolver”- 역할: iOS 빌드에 필요한 네이티브 framework와 library를 관리한다.
- 동작 방식: CocoaPods로 의존성을 해결한다.
- 결과: Unity 빌드 후 생성되는 Xcode 프로젝트에
.xcworkspace를 만들어 Pod들이 올바르게 연결되게 한다.
Version Handler
섹션 제목: “Version Handler”프로젝트 안의 여러 Unity 패키지(플러그인) 사이에서 파일 중복이나 버전 충돌을 관리하고 정리한다.
사용 방법
섹션 제목: “사용 방법”각 외부 플러그인은 MyPluginDependencies.xml 같은 파일에 자기에게 필요한 라이브러리를 명시한다.
- Android:
Assets > External Dependency Manager > Android Resolver > Force Resolve를 누르면 라이브러리를 내려받고 설정을 맞춘다. - iOS: 빌드할 때 CocoaPods가 자동으로 실행되어 워크스페이스를 구성한다.
참고 사항
섹션 제목: “참고 사항”- Version Handler는 Unity 에디터 안의 패키지 간 충돌을 막고, Resolver는 패키지가 필요로 하는 라이브러리를 외부에서 가져온다.
- Android에는 변경된 부분만 처리하는 Resolve와 모든 종속성을 처음부터 다시 정리하는 Force Resolve가 있다.
- 빌드 머신에 CocoaPods가 반드시 설치되어 있어야 EDM4U가 정상 동작한다.
sudo gem install cocoapods