Xcode 팁: 사전 빌드 작업

2721 단어 iostipsxcode
저번에 실제 문제를 해결하는 데 도움이 된 Xcode의 멋진 작은 기능을 만났습니다. 나는 당신이 이것을 할 수 있다고 언급하는 사람을 본 적이 없으므로 다른 누군가에게 도움이 되기를 바라며 여기에서 공유하고 있습니다.

저는 최근에 구성 파일을 사용하는 프레임워크로 작업하고 있었습니다. 이 파일은 JSON에 저장되며 앱과 함께 번들로 제공됩니다. 나는 내 앱의 dev 버전과 prod 버전에 대해 별도의 구성 파일을 쉽게 가질 수 있는 방법을 원했고 이미 이러한 서로 다른 버전에 대해 별도의 구성표를 가지고 있었습니다. 실행 시 전달된 인수나 컴파일러 플래그 등을 통해 이 작업을 수행할 수 있는 방법을 찾고 있었습니다. 나는 다양한 코드 생성 도구 등의 토끼 구멍으로 내려가기 시작했습니다. 그런데 스킴 편집기에서 무언가를 발견했습니다.

"Build"의 작은 드롭다운 아래에는 "Pre-actions"라는 항목이 있습니다. 그것을 클릭하고 하단에 있는 "+"버튼을 누르면 "스크립트 실행"을 추가할 수 있는 옵션이 있습니다. 즉, 앱의 모든 빌드(또는 실행 또는 테스트) 이전(또는 이후)에 임의의 스크립트를 실행할 수 있습니다. 그리고 그들은 다른 계획에 따라 다를 수 있습니다. 이것은 내 목표를 달성하는 완벽한 방법처럼 보였습니다!



내가 한 일은 "configuration.json"이라는 빈 JSON 파일을 내 프로젝트에 추가하고 대상에 포함시킨 것입니다. 그런 다음 "configuration-dev.json"및 "configuration-prod.json"파일을 내 앱의 디렉터리에 넣었지만(소스 제어에 포함되도록) 프로젝트 자체에는 추가하지 않았습니다.



그런 다음 내 dev 스키마에 대해 이 스크립트를 빌드 전 작업으로 추가했습니다.

cp "$SRCROOT/configuration-dev.json" "$SRCROOT/configuration.json"


bash에 익숙하지 않은 경우 cp 명령은 소스에서 대상으로 파일을 복사합니다. 이 경우 구성 파일의 dev 버전을 내가 프로젝트에 포함시킨 파일에 복사하여 이전에 있던 내용을 덮어씁니다.

또한 "다음에서 빌드 설정 제공"이 "없음"이 아니라 내 앱 대상으로 설정되었는지 확인했습니다. 이는 프로젝트 파일이 있는 디렉터리의 경로인 스크립트에서 SRCROOT를 가져오는 데 필요합니다.



그런 다음 prod 작업에 대해 동일한 작업을 수행했습니다.

cp "$SRCROOT/configuration-prod.json" "$SRCROOT/configuration.json"


이제 dev 스키마를 빌드할 때마다 configuration-dev 의 콘텐츠가 앱에 번들로 제공되고 prod 스키마를 빌드하면 configuration-prod 의 콘텐츠가 생깁니다.

간단하죠? 분명히 여기에서 훨씬 더 복잡한 스크립트를 실행할 수 있고 필요한 경우 더 많은 작업을 수행할 수 있습니다. 그러나 지금까지 이 한 줄짜리 스크립트는 내가 가진 이 작은 문제를 해결한 것으로 보이며 어떤 단점도 보지 못했습니다.

좋은 웹페이지 즐겨찾기