프로젝트는 실행되는데 제출할 파일이 없고, Run만 눌러서는 친구의 아이폰에 설치할 수 없습니다.
가장 빠른 해결은 프로젝트를 먼저 점검한 뒤 Archive를 만들고, 과제 목적에 따라 내보내거나 업로드하는 것입니다. 맥이 없다면 코드는 다른 컴퓨터에서 준비하고, 마지막 빌드와 보관만 호환되는 실제 맥 또는 원격 맥에서 진행하면 됩니다.
이 글은 첫 SwiftUI 프로젝트를 완성한 학생을 위한 실행 순서입니다. 선생님에게 소스 코드를 제출할 사람, 수업에서 실행 화면을 보여 줄 사람, 친구에게 테스트 버전을 전달할 사람 모두에게 맞도록 단계별로 나눴습니다. 이미 시뮬레이터는 실행되지만 Debug, Archive, 내보내기 파일과 TestFlight의 차이를 모르는 경우에도 사용할 수 있습니다.
먼저 제출 목적을 정합니다
같은 프로젝트라도 필요한 결과물은 다릅니다. 아래처럼 목적을 먼저 정하면 불필요한 서명이나 배포 설정을 줄일 수 있습니다.
- 소스 코드 제출: 프로젝트 폴더와 필요한 설명을 정리합니다. 선생님이 코드를 확인하는 과제라면 설치 파일이 필요하지 않을 수 있습니다.
- 수업 시연:
Run으로 시뮬레이터나 연결된 기기에서 화면을 보여 줍니다. 이것은 동작 확인이지 배포용 파일 생성은 아닙니다. - 친구의 실제 기기 테스트: Archive를 만든 뒤 등록된 기기에 설치할 수 있는 방식으로 내보내야 합니다. Apple은 등록된 기기에 앱을 배포하는 절차를 별도로 안내합니다. 등록된 기기에 앱을 배포하는 공식 안내를 확인하세요.
- TestFlight 테스트: App Store Connect에 앱 기록을 준비하고 빌드 업로드와 테스트 설정을 이어 갑니다. TestFlight는 단순히 파일을 보내는 기능이 아니라 별도의 테스트 배포 흐름입니다. TestFlight 공식 개요를 기준으로 확인하세요.
- 설치 파일 없이 코드만 제출하면 된다면: Archive는 선택 사항입니다.
- 선생님이 직접 앱을 실행해야 한다면: 기기와 계정 조건을 먼저 확인한 뒤 Archive를 준비합니다.
- 여러 사람이 일정 기간 테스트해야 한다면: TestFlight를 검토합니다.
첫 단계: 프로젝트를 깨끗한 상태로 정리합니다
패키징 전에 시뮬레이터에서 현재 프로젝트가 실행되는지 확인합니다. 여기서 발생하는 문제를 나중에 서명 문제로 오해하지 않는 것이 중요합니다.
먼저 프로젝트를 열고 사용하는 Scheme을 확인합니다. Scheme은 어떤 앱 대상과 빌드 설정을 사용할지 정하는 작업 묶음입니다. 여러 앱 대상이 있는 프로젝트라면 수업에서 실제로 만든 앱을 선택해야 합니다. Scheme 설정은 프로젝트 구조에 따라 달라질 수 있으므로 Apple의 빌드 Scheme 안내를 기준으로 확인합니다.
다음 항목도 차례로 살펴봅니다.
- Swift 파일에 빨간색 컴파일 오류가 없는지 확인합니다.
- 이미지, 앱 아이콘, 색상 파일이 프로젝트에 실제로 포함되어 있는지 확인합니다.
Bundle Identifier가 수업에서 정한 앱 식별자와 맞는지 확인합니다.- 버전과 빌드 번호가 이전 제출물과 충돌하지 않는지 확인합니다.
- 필요한 패키지가 모두 내려받아졌는지 확인합니다.
- 프로젝트가 사용하는 iOS 대상 버전과 현재 Xcode 환경이 맞는지 살펴봅니다.
**주의:** 시뮬레이터에서 실행된다는 결과는 “현재 코드가 해당 환경에서 실행된다”는 뜻입니다. 실제 기기에 설치할 수 있는 파일이 준비되었다는 뜻은 아닙니다.
Run과 Archive를 구분합니다
Run은 수업 시간의 초안 확인에 가깝습니다. 코드를 빠르게 빌드해 시뮬레이터 또는 연결된 기기에서 결과를 확인합니다. 반면 Archive는 나중에 내보내기나 배포를 이어 갈 수 있도록 빌드 결과를 보관하는 과정입니다.
Apple은 앱을 배포하기 전에 Xcode archive를 만들고, Archives organizer에서 후속 배포 작업을 진행하는 흐름을 안내합니다. 앱 배포 전 준비에 관한 공식 문서를 참고하면 Run 결과와 Archive 결과를 혼동하지 않을 수 있습니다.
초보자용 비교
Run: 화면과 기능을 빠르게 확인합니다. 오류가 있으면 즉시 수정하고 다시 실행합니다.Archive: 배포나 테스트에 사용할 보관 항목을 만듭니다. 빌드 로그와 설정을 함께 확인해야 합니다.- 내보내기: Archives organizer의 보관 항목에서 목적에 맞는 파일이나 업로드 작업을 선택합니다.
- TestFlight: App Store Connect를 통해 테스트 빌드를 관리합니다.
두 번째 단계: Xcode 27에서 Archive를 만듭니다
Xcode 27의 화면 문구나 지원 범위는 설치한 macOS와 프로젝트 설정에 따라 달라질 수 있습니다. 메뉴 이름이 조금 다르게 보이면 최신 화면을 억지로 따라 하기보다 현재 선택한 Scheme과 빌드 로그를 먼저 확인해야 합니다.
작업 순서는 다음과 같습니다.
- 프로젝트를 열고 수업용 앱 Scheme을 선택합니다.
- 실행 대상에서 Archive에 맞는 일반 기기 대상을 선택합니다. 특정 시뮬레이터를 그대로 대상으로 삼으면 Archive가 진행되지 않을 수 있습니다.
- 먼저 빌드 오류가 없는지 확인합니다.
- 메뉴에서
Product를 연 뒤Archive를 선택합니다. - 빌드가 진행되는 동안 오류가 발생하면 반복해서 Archive를 누르지 말고 로그의 첫 오류를 확인합니다.
- 성공하면 Archives organizer에 새 보관 항목이 나타나는지 확인합니다.
Archive가 실패할 때는 문제를 세 가지로 나누면 쉽습니다.
- 컴파일 오류: 코드나 패키지, 지원 버전 문제입니다.
- 리소스 오류: 아이콘, 이미지, 파일 포함 설정 문제입니다.
- 서명 오류: 계정, 인증서, 앱 식별자 또는 기기 등록 조건을 확인해야 합니다.
세 번째 단계: 목적에 맞게 내보냅니다
Archive가 만들어졌다면 Archives organizer에서 보관 항목을 선택합니다. 여기서 Distribute App을 선택할 수 있지만, 모든 학생이 같은 배포 방식을 사용해야 하는 것은 아닙니다.
파일만 제출하는 경우
과제 지침이 소스 코드와 보관 결과 확인을 요구한다면 프로젝트 폴더, 사용한 설정, 버전 정보를 함께 정리합니다. 선생님이 특정 설치 파일을 요구하지 않았다면 정식 출시 절차까지 진행할 필요는 없습니다.
친구가 실제 기기에서 테스트하는 경우
친구의 기기가 등록되어 있는지, 개발자 계정이 필요한 방식인지 먼저 확인합니다. 등록되지 않은 기기에 설치하려고 서명 오류를 반복하면 해결되지 않습니다. Apple의 공식 안내는 등록된 기기로 앱을 배포하는 조건과 흐름을 설명합니다.
TestFlight를 사용하는 경우
App Store Connect에 앱 기록이 준비되어 있어야 합니다. 새 앱 기록을 만드는 공식 안내를 먼저 확인한 뒤, Archive에서 업로드 흐름을 선택합니다. 앱 기록, Bundle Identifier, 계정 권한이 맞지 않으면 업로드 단계에서 멈출 수 있습니다.
여기서 중요한 점은 “내보내기 성공”과 “설치 성공”이 같지 않다는 것입니다. 파일이 생성되어도 계정, 서명, 기기 등록 조건이 맞지 않으면 다른 사람의 기기에서 실행되지 않을 수 있습니다.
맥이 없을 때 원격 맥으로 이어서 작업합니다
윈도우나 크롬북에서 코드 작성, 화면 설계, 문서 정리는 할 수 있습니다. 그러나 Xcode를 이용한 최종 iOS 빌드와 Archive는 호환되는 macOS 환경에서 진행해야 합니다. Apple의 Xcode 시스템 요구 사항에서 현재 Xcode와 macOS의 조합을 먼저 확인하세요.
원격 맥을 사용할 때는 작업을 두 부분으로 나누면 됩니다.
- 다른 컴퓨터: SwiftUI 코드 작성, 이미지 준비, 프로젝트 백업, 저장소 커밋을 진행합니다.
- 원격 맥: 프로젝트를 열고 패키지를 확인한 뒤 빌드, Archive, 내보내기를 진행합니다.
SSH는 파일 확인이나 제한된 명령 실행에 편리하지만, SSH 접속 자체가 iOS 빌드 도구는 아닙니다. 처음부터 전체 과제를 옮기지 말고 작은 검증 작업으로 시작하세요.
- 프로젝트 폴더를 원격 맥에 전달합니다.
- Xcode 27에서 프로젝트가 열리는지 확인합니다.
- SwiftUI 화면이 컴파일되는지 확인합니다.
- Archive가 생성되는지 확인합니다.
- 결과 파일을 다시 내려받아 열 수 있는지 확인합니다.
제출 직전에는 결과를 체크합니다
아래 목록은 과제 파일을 보내기 전에 직접 체크할 수 있는 최소 확인선입니다.
- [ ] 올바른 프로젝트와 수업용 Scheme을 선택했습니다.
- [ ] 시뮬레이터에서 핵심 화면과 기능을 실행했습니다.
- [ ] 코드와 프로젝트 폴더를 별도로 백업했습니다.
- [ ] Bundle Identifier와 버전 정보를 확인했습니다.
- [ ] Archive가 Archives organizer에 나타납니다.
- [ ] 필요한 경우 적절한 방식으로 내보내기를 완료했습니다.
- [ ] 설치 대상과 테스트 방법을 제출 설명에 적었습니다.
- [ ] 선생님에게 보낼 파일과 개인 인증 정보를 분리했습니다.
- [ ] 인증서나 개인 키를 다른 사람에게 공유하지 않았습니다.
- 내 컴퓨터에서 실행됨: 개발 중 확인한 상태입니다.
- 시뮬레이터에서 실행됨: 해당 시뮬레이터 환경에서 확인한 상태입니다.
- 다른 기기에 설치됨: 서명과 배포 조건까지 확인한 상태입니다.
초보자 FAQ
Xcode 27에서 iOS App 보관 파일은 어떻게 만드나요?
프로젝트를 열고 올바른 Scheme과 Archive에 맞는 실행 대상을 선택한 다음 Product 메뉴의 Archive를 실행합니다. 성공하면 Archives organizer에 보관 항목이 생깁니다. 항목이 나타나지 않으면 서명 설정을 먼저 바꾸기보다 빌드 로그의 첫 오류와 Apple의 아카이브 문제 해결 문서를 대조하세요.
SwiftUI 프로젝트를 선생님에게 테스트용으로 보내려면 어떻게 하나요?
먼저 선생님이 소스 코드만 필요한지, 실제 기기에 설치할 파일을 원하는지 확인합니다. 소스 코드 제출이라면 프로젝트와 실행 방법을 정리하면 됩니다. 설치 테스트라면 기기 등록과 계정 조건을 확인한 뒤 Archive에서 알맞은 내보내기 방식을 선택합니다. 파일과 함께 버전, 설치 방법, 알려진 제한 사항도 적습니다.
맥이 없어도 iOS App 패키징을 끝낼 수 있나요?
코드 작성과 프로젝트 정리는 윈도우나 크롬북에서 할 수 있지만, Xcode의 최종 빌드와 Archive는 호환되는 맥 환경에서 진행해야 합니다. 원격 맥을 사용하면 화면을 보면서 Xcode 작업을 이어 갈 수 있습니다. 다만 접속만으로 완료되는 것은 아니며, 프로젝트 열기와 컴파일, Archive 결과를 차례로 확인해야 합니다.
Xcode의 Archive와 Run은 어떻게 다른가요?
Run은 현재 프로젝트를 시뮬레이터나 기기에서 실행해 화면과 기능을 확인하는 작업입니다. Archive는 배포나 테스트를 이어 갈 수 있도록 빌드 결과를 보관하는 작업입니다. Run이 성공해도 설치 가능한 파일이나 TestFlight 업로드가 자동으로 준비되지는 않습니다. 제출 목적이라면 Archive 성공 여부를 별도로 기록해야 합니다.
학생 과제로 앱을 제출할 때 필요한 단계는 무엇인가요?
과제 지침부터 확인해야 합니다. 소스 코드만 제출하면 백업과 실행 설명이 핵심이고, 시연만 하면 Run 결과로 충분할 수 있습니다. 친구의 기기 테스트가 필요할 때는 Archive, 서명, 기기 등록을 추가합니다. 여러 명이 테스트하면 App Store Connect와 TestFlight 흐름까지 확인하되, 정식 출시가 요구되지 않는다면 그 단계는 생략합니다.
현재 윈도우나 크롬북에서 준비하는 방식은 코드 작성에는 편하지만, Xcode 화면을 직접 조작할 수 없고 최종 Archive 단계에서 환경을 다시 옮겨야 하며, 서명 오류를 원격으로 확인하기도 어렵습니다. 반대로 맥을 바로 구매하면 초기 비용과 관리 부담이 생기고, 수업 과제 하나 때문에 장비를 계속 보유해야 할 수 있습니다. 프로젝트가 열리고 컴파일되고 Archive까지 되는지 먼저 확인한 뒤, 임시 제출이 목적이라면 MACGPU의 원격 맥을 짧게 사용해 보는 편이 더 현실적인 선택일 수 있습니다. 단, 장기간 매일 무거운 작업을 하거나 물리적인 아이폰 연결이 꼭 필요하다면 구매한 맥이 더 적합합니다.
처음 이용한다면 먼저 작은 SwiftUI 프로젝트로 열기, 빌드, Archive를 확인한 뒤 필요한 기간만 MACGPU 원격 맥을 선택하세요.