본문 바로가기
ios,And 빌드 관련

EDM4U - Depenencies.xml 종속성 관리(Android/ios)

by JunHDev 2025. 6. 7.

 

최근 iOS 빌드를 진행하던 중, 새로운 패키지를 추가하면서 의존성 충돌 이슈로 상당한 시간을 낭비했습니다.

당시 사무실에는 혼자 남아 있었기에 문제를 해결하기 위해 지속적인 서칭을 통해 시간내에 완료하였는데

그 과정에서 미처 깨닫지 못했던 부분들을 정리했다.

 

==========================================================================

 

EDM(External Dependency Manager for Unity).

 ◎ 하단의 목록들을 편리하게 사용하기 위한 툴이다.

 

| 항목                                                    |
| ------------------------------------------------ |
| Android 관련 라이브러리(예: AAR).     |
| iOS CocoaPods.                                |
| Version에 따른 종속성 관리                 |
| 패키지 관리자(PM) 레지스트리 관리.    |

 

● 왜 EDM(External Depenecy Manager)을 사용해야 하는가?

 ◎ 많은 Unity 플러그인은 Android 특정 라이브러리, iOS CocoaPods에 의존하고 떄로는 다른 Unity 플러그인에 대한 전이적 의존성을 가지고 있다.

 ◎ Unity 프로젝트 내에서 플랫폼 별 라이브러리를 통합하는 것은 복잡할 수 있으며 Unity 플러그인 유지 관리자에게 부담이 될 수 있다.

 ◎ 플랫폼 별 라이브러리에서 충돌하는 종속성을 해결하는 프로세스는 Unity 플러그인을 사용하려는 개발자가 해당 플렛폼 빌드 중 오류를 푸시한다.   

 

 

 ● 그럼 의존성과 종속성은 뭐야?

  ◎ 의존성 : 소프트웨어를 빌드하거나 실행하기 위해 "필요로 하는 라이브러리,모듈,플러그인" 자체를 가리키는 용어다.

  EX ) : 만약에 A 라는 패키지가 동작하려면 B라이브러리가 반드시 있어야 한다라는 전재가 있으면 "A는 B에 의존성           (dependency)이 있다.

 

  ◎ 전이적 의존성(종속성, transitive dependency) : 내가 직접 선언하지 않은,플러그인 내부에서 또 필요로 하는 라이브러리가     있는 것을 종속성이라고 한다.

  EX ) : A가 B라이브러리가 필요하는 상황을 의존성이라고 하지만 B라이브러리를 실행하기 위해서는 C모듈이 필요하다. 이것을     종속성 이라고 표현한다.

 

CocoaPods

 ◎  ios,Mac서 사용하는 의존성 문제를 해결해주는 툴이다.

 ◎ Podfile에 선언한 직접 의존성 뿐 아니라,그 의존성이 또 필요로 하는 종속성까지 자동으로 다운받고, 버전 제약에 맞춰 설치해     준다.

 

Podfile

 ◎ CocoaPods가 "어떤 외부 라이브러리를 이 Xcode 프로젝트에 포함시킬지"를 정의하는 설정파일<DSL>이다.

 "Domain Specific Language"의 약자로, 특정 도메인 또는 분야에 특화된 언어를 의미합니다.

target 'MyApp' do … end 블록 안에 pod 'Alamofire', '~> 5.4'처럼 사용할 라이브러리 이름과 버전을 선언하면, 그 아래에 필요한 전이적 종속성까지 자동으로 내려받고 설치한다.

 

https://github.com/googlesamples/unity-jar-resolver