[Xcode] Distribute App에서 선택하는 method 와 destination은 plist 파일에서 어떻게 보여질까?

xcodebuild -exportOptionsPlist 옵션에서 method, destination 에 대해 알아보자

naljin
6 min readOct 9, 2021

보통 내 앱을 빼내려면? 일단 archive 해서 Distribute App 클릭한다.

그러면 distributuion method를 선택하라는 창이 뜬다 (Select a method of distribution)

App Store Connect 클릭 후 Next 를 누르면 destination 을 선택하라고 뜬다.

여기서 Upload 를 누르면 App Store 에 업로드 되고, Export 를 누르면 .ipa 파일을 포함한 결과물이 담긴 폴더를 빼낼 수가 있다.

우선 Export 를 선택해서 폴더를 빼내보자.

Export 된 폴더 안을 보면 .ipa 파일과 함께 ExportOptions.plist 파일도 있다. 내 아카이브를 어떻게 export 할거냐에 대한 옵션 정보가 담겨 있을거 같은디!! 한번 까보자.

ExportOptions.plist 파일을 열어보면 method 와 destination 이 포함되어 있따.

응? method는 app-store 고, destination은 export 네?

생각해보니 우리가 위에서 엑코에서 앱을 빼낼 때 선택한 옵션과 동일하다. 즉, 이 옵션으로 내 앱이 추출 된 것이라는 사실을 알 수 있다.

여기서 조금 다른 주제로 넘어가 보자. 우리는 보통 archive 된 앱을 빼낼 때 위에서 본 것처럼 엑스코드에서 클릭, 클릭,,해서 적절한 옵션을 선택했을 것이다.

그런데 터미널에서도 xcodebuild 명령어를 통해 앱을 archive 하고 export 할 수 있따는 사실!

xcodebuild -exportArchive -archivePath $XC_ARCHIVE -exportOptionsPlist ExportOptions.plist -exportPath . -allowProvisioningUpdates

여기서 -exportOptionsPlist 옵션을 보자.

specifies a path to a plist file that configures archive exporting

즉 인자로 들어가는 plist 파일은 archive exporting 에 관한 내용을 담고 있어야 한다.

그러면 xcodebuild를 실행할 때 위에서 뽑아낸 plist 파일을 -exportOptionsPlist 옵션으로 넣어주면 엑코에서 선택한 것과 동일한 옵션으로 export 되겠군?!

흠 그렇다면 plist 값들을 바꾸면 다른 옵션으로 export 된다는 건데..! 만약 Ad Hoc 으로 빼내고 싶으면 plist 값을 어떻게 바꿔야하지!?

xcode에서 직접 선택을 통해 확인해보자

우선 distributuion methodAd Hoc 으로 고르고 Next를 클릭한다.

이때는 destination 선택 창이 안뜬다. 왜냐? 어차피 export 옵션 하나기 때문에~~! ( App Store Connect 로 method 선택 후 Next 하는 경우는 destination 으로 upload / export 를 선택해야했다 )

그리고 추출된 ExportOptions.plist 파일을 보면? destination은 export, method는 ad-hoc 으로 되어있다. 오호.. method를 ad-hoc 으로 바꾸면 되는군!

그럼 development 로 빼내려면?! method를 development 로 바꾸면 된다.

어떻게 알았냐? 우선 터미널에서 xcodebuild -h 치면 도움말을 볼 수 있따.

요 내용 중에 Available keys for -exportOptionsPlist: 라고 하면서 -exportOptionsPlist 의 key 로 사용 가능한 것들을 쭉 설명하는 부분이 있는데, method 쪽은 요렇게 써있기 때문.

method : StringDescribes how Xcode should export the archive. Available options: app-store, validation, ad-hoc, package, enterprise, development, developer-id, and mac-application. The list of options varies based on the type of archive. Defaults to development.

사용 가능한 옵션 중에 development 가 있다. xcodebuild -h명령어 치기 귀찮으면 여기서 보등가.

desination 에 대한 설명도 봐보자.

destination : String

Determines whether the app is exported locally or uploaded to Apple. Options are export or upload. The available options vary based on the selected distribution method. Defaults to export.

export 할거냐 upload 할거냐를 선택할 수 있다고 한다. 그니까 엑코에서는 요 화면에서 선택하는 값이 되겠지.

만약 plist 파일에서 destination 값을 upload, method 값을 app-store 로 수정하고, xcodebuild 를 실행하면 archive 된 파일을 바로 app store 에 업로드하게 된다.

--

--