콘텐츠로 이동

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 빌드에 필요한 .aar, .jar 라이브러리를 관리한다.
  • 동작 방식: Gradle로 Maven 저장소에서 필요한 라이브러리를 가져온다.
  • 설정: mainTemplate.gradle이나 launcherTemplate.gradle을 자동으로 수정해 종속성을 주입한다.
  • 역할: iOS 빌드에 필요한 네이티브 framework와 library를 관리한다.
  • 동작 방식: CocoaPods로 의존성을 해결한다.
  • 결과: Unity 빌드 후 생성되는 Xcode 프로젝트에 .xcworkspace를 만들어 Pod들이 올바르게 연결되게 한다.

프로젝트 안의 여러 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