본문 바로가기
개발 블로그/아이폰개발

[iOS Swift] Xcode Server ipa 파일을 만들기 위한 exportOptionPolist 설정 항목에 대하여..

by 육아빠 snapshot 2020. 8. 4.

Xcode Server를 이용해서 또는 iOS앱의 ipa 패키지를 만들 때는 xcodebuild의 -expoertOptionsPlist 옵션파일을 지정해야 한다. 

 

 

이런식의 파일을

파일은 이런식으로 되어있다. 

아마 IPA 파일을 만들고 Export 를 하게 되면 그 안에 저 파일이 들어 있으니 한번 보길...

 

위에서부터 설명

compileBitcode

  • compileBitcode : Bool
    For non-App Store exports, should Xcode re-compile the app from bitcode? Defaults to YES.

 

iOS 앱은 LLVM을 컴파일러로 이용하고 Bitcode는 LLVM이 생성하는 중간 코드이다.

Bitcode를 사용하는 경우 AppStore에서 필요한 경우에 해당 코드를 사용하여 다시 최적화 된 바이너리를 생성하여 End user에게 전송해 주는 역할을 담당한다.

complieBitcode 플래그를 true로 설정하면 패키지를 만들 때 Bitcode이 다시 컴파일 된다. App Store 용 ipa를 만들때  이 설정에 관계없이 다시 컴파일 되지 않는다.

 

참고


destination

  • 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.

App Store 용 패키지 작성시 upload로 설정해 두면 동시에 TestFlight에 업로드를 실행한다. 계정은 Xcode의 Preference에서 설정 한 내용이 사용된다. 기본값은 export로 아카이브를 로컬에 만든다. 

 


method

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

아카이브를 export하는 방법을 지정하는 것이다. 유효한 값으로는 app-store, validation, package, ad-hoc, enterprise, development, developer-id, and mac-application 에서 아카이브 유형에 따라 허용되는 값은 달라진다. 

 

 

Key 의미
app-store App Store에 업로드 용
validation 패키지의 내용에 문제가 없는가? App Store에 업로드하고 검증 된
package MacOS 용?
ad-hoc AdHoc 배포
enterprise In-house 배포 (조직 배포)
development 개발
developer-id MacOS 용?
mac-application MacOS 용?

 


 

provisioningProfiles

  • provisioningProfiles : Dictionary
  • For manual signing only. Specify the provisioning profile to use for each executable in your app. Keys in this dictionary are the bundle identifiers of executables; values ​​are the provisioning profile name or UUID to use.

manual signing의 경우 App의 각 실행 파일이 사용하는 프로 비저닝 프로파일을 지정한다. 값은 프로파일의 이름 또는 UUID를 사용한다. 

Xcode server에서 ipa 파일을 만들기 위해서 ad-hoc 프로파일의 이름을 지정해줬다. 

 


 

signingCertificate

  • signingCertificate : String
  • For manual signing only. Provide a certificate name, SHA-1 hash, or automatic selector to use for signing. Automatic selectors allow Xcode to pick the newest installed certificate of a particular type. The available automatic selectors are "Mac App Distribution" " iOS distribution ","iOS Developer ","Developer ID Application ","Apple distribution ","Mac Developer ", and"Apple Development "Defaults to an automatic certificate selector matching the current distribution method.

manual signing의 경우 인증서의 이름, SHA-1 해시 또는 자동 선택 중 하나를 시정한다. 자동 선택기를 사용하면 Xcode가 설치 된 최신의 인증서를 적절하게 선택한다. 

가능한 값은 Mac App Distribution, iOS Distribution, iOS Developer, Developer ID Application, Apple Distribution, Mac Developer, and Apple Development합니다. 기본적으로 method설정에 맞는 것을 선택된다.

 

Apple Distribution과 Apple Development는 Xcode 11에서 추가 된 인증서 iOS 또는 Mac에 관계없이 사용할 수 있다.

 


 

signingStyle

  • signingStyle : String
  • The signing style to use when re-signing the app for distribution. Options are manual or automatic. Apps that were automatically signed when archived can be signed manually or automatically during distribution, and default to automatic. Apps that were manually signed when archived must be manually signed during distribtion, so the value of signingStyle is ignored.

배포를 위해 앱을 다시 서명 할 때 사용할 서명 스타일이다. manual 또는 automatic으로 지정 가능하다. 보관시 자동으로 서명 된 앱은 menual 이지만 automatic 으로 설정 할 수 있다. 보관시 menually signed 된 앱은 배포 용으로 manually signed 해야한다. 그래서 signingSytle 값은 무시된다.

 


stripSwiftSymbols

  • stripSwiftSymbols : Bool
  • Should symbols be stripped from Swift libraries in your IPA? Defaults to YES.

true로 설정하면 IPA 파일의 Swift 라이브러리에서 심볼을 잘라 버려 IPA 파일의 크기를 줄일 수 있다. 기본값은 true이다.

 


 

teamID

  • teamID : String
  • The Developer Portal team to use for this export. Defaults to the team used to build the archive.

export에 사용 Developer Portal 팀을 지정한다. 기본값은 보관시에 사용하는 팀이다.


thinning

  • thinning : String
  • For non-App Store exports, should Xcode thin the package for one or more device variants? Available options : (Xcode produces a non-thinned universal app) (Xcode produces a universal app and all available thinned variants), or a model identifier for a specific device (eg "iPhone7,1"). Defaults to.

App Store 용하지 export하도록 구성된 패키지를 특정 장치에 Thinning할지 여부를 설정한다. <none>를 지정하면 Xcode가 Thinning없이 universal app을 생성한다. 기본값은 <none>이다. <thin-for-all-variants>를 지정하면 Xcode는 universal app과 Thinning이 유효한 모든 대상에 대해 대상을위한 패키지를 생성한다. 기타는 iPhone7,1등 각종 장치의 식별자를 지정할 수 있다.

시도에 <thin-for-all-variants>지정하면 Apps 디렉토리에 다음 용으로 ipa 파일이 여러 생성된다.

 

 

기본적으로 Xcode Server를 통해서 ipa 파일을 만들 때에는 이 정도 옵션만 있으면 가능하다.

다른 expoert 옵션을 알고 싶으면 밑의 링크로 가면 된다.

 

 

참고

https://qiita.com/taisuke_h/items/e37d96c96a811b630c0c

 

댓글0