RemoteMac

앱 스토어 커넥트 업로드 실패: 2026 점검법

앱 스토어 커넥트 업로드 실패: 2026 점검법

24시간 규칙부터 적용해야 합니다

앱 스토어 커넥트 업로드 실패를 만났다면 인증서를 바로 지우거나 빌드 번호를 계속 올리지 않는 편이 낫습니다. 애플은 빌드가 Processing 상태에 24시간 넘게 머물면 문제가 있을 수 있다고 안내합니다. 먼저 오류가 보관과 검증, 계정 권한, 코드 서명, 파일 전송, 애플 서버 처리 중 어디에서 발생했는지 나눠야 합니다. 그 단계가 확인된 뒤에만 수정하는 방식이 가장 빠릅니다. 빌드 업로드 상태 공식 안내

이 글은 처음 App Store Connect에 빌드를 올리는 독립 개발자, 원격 맥이나 자동화 작업에서만 실패하는 개발자, TestFlight 배포 직전에 업로드 경로가 멈춘 소규모 팀을 위한 글입니다.

먼저 성공한 단계와 실패한 단계를 분리합니다

Archive가 끝났다는 사실만으로 업로드가 성공한 것은 아닙니다. Xcode는 보관 파일을 만들고, 검증하고, 전송합니다. 그 뒤 애플 서버가 빌드를 처리합니다. 네 단계는 서로 다른 로그를 남깁니다.

  • 보관 실패: 프로젝트 설정, 의존성, 리소스, 릴리스 빌드 문제일 가능성이 큽니다.
  • Validate App 실패: 배포용 패키지와 서명, 번들 구조를 먼저 확인합니다.
  • 업로드 전송 실패: 로그인 세션, 권한, 네트워크, Transporter 또는 실행 환경을 확인합니다.
  • 전송 완료 후 미표시: 앱 기록, 버전, 빌드 식별자와 서버 처리 상태를 확인합니다.

오류 원문은 짧게라도 그대로 보관해야 합니다. 발생 시각, 사용한 도구, 앱 버전, 빌드 번호, 실행한 계정, 실행 방식도 함께 기록합니다. 같은 보관 파일로 Xcode와 Transporter를 번갈아 시험하면 새로 빌드하면서 변수가 바뀌는 일을 피할 수 있습니다.

첫 번째 비교: 실행 성공과 배포 성공은 다릅니다

시뮬레이터에서 앱이 실행되는 것은 개발 빌드가 동작한다는 뜻입니다. App Store 배포용 보관 파일이 검증된다는 뜻은 아닙니다. 애플은 배포 과정에서 보관, 서명, 심볼, 앱 기록을 별도로 처리합니다. Xcode Organizer에서 보관 파일을 선택한 뒤 Validate App 결과와 Distribute App 결과를 따로 확인해야 합니다. Xcode 배포 과정 공식 문서

다음 항목은 보관 단계에서 우선 확인할 대상입니다.

  • Release 구성으로 보관했는지 확인합니다.
  • 실제 배포 대상 플랫폼과 앱 타깃이 맞는지 확인합니다.
  • 필수 리소스와 임베디드 프레임워크가 보관 파일에 포함됐는지 확인합니다.
  • 보관 파일 내부의 번들 식별자와 버전 번호를 확인합니다.
  • Organizer의 검증 로그에서 첫 번째 오류를 기준으로 수정합니다.

단순히 일반 Build가 성공했다는 이유로 보관을 다시 반복하면 같은 오류가 재현될 뿐입니다. 검증 결과가 남아 있다면 그 결과부터 읽어야 합니다.

계정 권한과 앱 기록은 서명과 별도로 봐야 합니다

업로드 버튼이 보이지 않거나 인증 단계에서 거절된다면 코드 서명보다 계정 구조를 먼저 확인합니다. App Store Connect에는 역할별 권한이 있습니다. Developer는 개발과 전달을 관리할 수 있지만 모든 계정 관리 권한을 갖는 것은 아닙니다. App Manager, Admin, Account Holder도 접근 범위가 다릅니다. 역할별 권한 공식 문서

확인 순서는 다음과 같습니다.

  1. Xcode에서 선택한 팀이 실제 앱이 속한 팀인지 확인합니다.
  2. App Store Connect의 Users and Access에서 사용자의 역할을 확인합니다.
  3. 해당 사용자가 앱 기록에 접근할 수 있는지 확인합니다.
  4. 업로드 대상 앱 기록이 App Store Connect에 생성됐는지 확인합니다.
  5. 조직 계정이라면 개발자 사이트의 인증서와 식별자 접근 권한도 확인합니다.

앱 기록이 없으면 빌드를 연결할 대상 자체가 없습니다. 애플은 첫 업로드 전에 앱 기록을 만들어야 한다고 안내합니다. App Store Connect 작업 흐름 공식 문서

주의: App Store Connect에 초대된 사용자는 앱 콘텐츠에는 접근할 수 있어도 개발자 프로그램 팀의 모든 자원에 접근하는 것은 아닙니다. App Store Connect 역할과 인증서 관리 권한을 같은 것으로 보면 안 됩니다.

코드 서명과 식별자는 한 묶음으로 검증합니다

원격 맥 업로드에서 가장 흔히 시간을 잃는 지점은 인증서 하나가 아니라 연결 관계입니다. 다음 다섯 항목이 같은 팀과 앱을 가리켜야 합니다.

  • Team
  • App ID
  • Bundle ID
  • Distribution Certificate
  • Provisioning Profile

자동 서명과 수동 서명도 구분해야 합니다. 자동 서명은 Xcode가 필요한 자산을 관리하도록 맡기는 방식입니다. 수동 서명은 프로젝트 설정에 지정된 프로파일과 인증서가 실제 키체인에 있어야 합니다. Xcode 서명 및 배포 공식 문서

버전 번호와 빌드 번호도 앱 기록과 연결됩니다. 번들 안의 번들 식별자와 버전 번호로 앱과 버전 기록을 연결하고, 빌드 문자열로 빌드를 구분합니다. 빌드 업로드 공식 안내

따라서 다음 오류를 같은 문제로 취급하면 안 됩니다.

  • 인증서가 만료됨: 배포 인증서와 개인 키 상태를 확인합니다.
  • 프로파일이 앱 식별자와 맞지 않음: 프로파일의 앱 ID와 타깃 번들을 비교합니다.
  • 빌드 번호가 이미 사용됨: 앱 기록에 올라간 빌드 번호와 비교합니다.
  • 팀이 일치하지 않음: Xcode 계정과 서명 설정의 팀을 비교합니다.

실패한 빌드는 같은 빌드 번호를 다시 사용할 수 있습니다. 그러므로 오류가 서명이나 패키지에 있다는 증거 없이 빌드 번호를 계속 증가시킬 필요는 없습니다. 빌드 업로드 상태 공식 안내

개인 키를 백업하지 않은 상태에서 인증서와 프로파일을 전부 삭제하는 방식은 피해야 합니다. 복구해야 할 대상이 늘어나고, 로컬과 자동화 환경의 차이도 더 커집니다.

전송 도구 문제와 네트워크 문제를 나눕니다

Xcode Organizer와 Transporter는 모두 업로드 경로로 사용할 수 있습니다. 그러나 도구가 제공하는 로그와 실행 조건은 다릅니다. Xcode에서 실패했다고 곧바로 프로젝트를 다시 빌드하지 말고, 동일한 보관 파일을 Transporter로 전달해 보십시오. 반대로 Transporter에서만 실패하면 로그인 세션, 앱 권한, 네트워크 경로와 Transporter 로그를 먼저 봅니다. Transporter와 업로드 방법 공식 안내

다음 환경 요인은 업로드 중단의 원인이 될 수 있습니다.

  • 계정 인증 세션이 만료된 경우
  • 조직 계정에서 앱 접근 권한이 빠진 경우
  • 프록시나 방화벽이 전송을 끊는 경우
  • SSH 세션 종료와 함께 백그라운드 작업이 끝난 경우
  • 원격 데스크톱 연결이 끊겨 대화형 인증이 중단된 경우
  • 자동화 작업이 키체인 잠금 상태에서 실행된 경우

명령줄 업로드를 사용한다면 실행 계정과 키체인 잠금 상태를 기록해야 합니다. SSH에 접속한 셸에서 성공한 명령이 무인 작업에서는 실패할 수 있습니다. 이때는 명령 자체보다 세션, 환경 변수, 인증 정보 접근 권한을 비교해야 합니다.

빌드가 보이지 않을 때는 처리 상태를 확인합니다

업로드가 완료됐다는 메시지를 받았는데 빌드가 보이지 않는다면 App Store Connect의 Build Uploads 기록으로 이동합니다. 상태에 따라 행동이 달라집니다.

  • Processing: 애플 서버가 아직 처리 중입니다.
  • Complete: 테스트에 사용할 수 있는 상태입니다.
  • Failed: 오류와 경고를 열고 문제를 해결한 뒤 다시 전달합니다.
  • Invalid Binary: 업로드 요건을 충족하지 못한 바이너리입니다.
  • Missing Compliance: 수출 규정 관련 정보를 추가해야 합니다.

Processing은 즉시 재업로드할 신호가 아닙니다. 애플은 이 상태가 24시간 넘게 지속되면 피드백 지원 또는 개발자 지원을 이용하라고 안내합니다. Failed라면 상태 상세 화면의 오류를 모두 확인한 뒤 다시 업로드해야 합니다.

Missing Compliance는 새 인증서를 만드는 문제가 아닙니다. 수출 규정 질문에 답하거나 필요한 문서를 추가하는 작업입니다. 빌드 선택 및 규정 정보 공식 문서

업로드 전 최종 점검 목록

아래 항목을 순서대로 확인하면 불필요한 재빌드를 줄일 수 있습니다.

  • [ ] 오류 원문과 전달 로그를 별도 파일로 저장합니다.
  • [ ] 오류가 보관, 검증, 전송, 처리 중 어느 단계인지 표시합니다.
  • [ ] Xcode Organizer에서 ArchiveValidate App 결과를 각각 확인합니다.
  • [ ] 앱 기록, 플랫폼, 버전 번호, 빌드 번호를 비교합니다.
  • [ ] Xcode의 팀과 App Store Connect의 앱 접근 권한을 확인합니다.
  • [ ] 번들 식별자와 App ID가 같은 앱을 가리키는지 확인합니다.
  • [ ] 배포 인증서에 대응하는 개인 키가 키체인에 있는지 확인합니다.
  • [ ] 프로비저닝 프로파일의 팀, 앱 ID, 배포 목적을 확인합니다.
  • [ ] 같은 보관 파일을 다른 업로드 도구로 시험합니다.
  • [ ] SSH 세션, 키체인 잠금, 프록시, 방화벽, 무인 작업 종료 여부를 기록합니다.
  • [ ] Processing이 24시간을 넘었을 때만 지원 요청을 준비합니다.
  • [ ] Complete, Failed, Invalid Binary, Missing Compliance 상태별 조치를 적용합니다.

이 목록을 통과하지 못했다면 빌드 번호 증가나 인증서 전체 삭제는 보류하는 편이 안전합니다.

자주 묻는 상황별 해결법

Xcode 보관은 성공했지만 업로드가 실패하는 경우

보관 성공은 로컬 파일 생성이 끝났다는 뜻입니다. 업로드 단계에서는 계정 권한, 서명 자산, 네트워크와 전달 도구가 추가로 검증됩니다. Organizer의 전달 로그를 먼저 확인하고 같은 보관 파일을 Transporter에서 시험하면 프로젝트 오류와 전달 환경 오류를 구분할 수 있습니다.

업로드 후 빌드가 나타나지 않는 경우

앱 기록의 플랫폼과 버전이 맞는지 확인한 뒤 Build Uploads 상태를 확인합니다. 처리 중이면 기다리고, 완료라면 TestFlight 영역에서 빌드를 찾습니다. 실패라면 상태 상세 화면의 오류를 기준으로 수정합니다. 앱 기록이 없거나 다른 팀에 업로드했다면 빌드 번호를 바꿔도 해결되지 않습니다.

Transporter 로그를 읽는 방법

로그에서 처음 등장하는 오류를 기준으로 봅니다. 뒤에 이어지는 메시지는 앞선 실패의 결과일 수 있습니다. 인증 오류라면 계정과 세션을 확인하고, 파일 검증 오류라면 보관 파일과 코드 서명을 확인합니다. 전송 중단이라면 프록시, 방화벽, SSH 연결과 작업 종료 기록을 함께 비교합니다.

원격 맥에서만 코드 서명이 실패하는 경우

로컬 맥과 원격 맥의 팀, 키체인, 인증서, 프로파일, 환경 변수를 비교합니다. 특히 개인 키가 없는 인증서만 복사됐거나 자동화 계정이 잠긴 키체인에 접근하지 못하는 경우가 있습니다. 자산을 삭제하기 전에 백업하고, 대화형 로그인과 무인 작업에서 동일한 보관 파일을 각각 검증해야 합니다.

원격 맥에서 복구 환경을 검증하는 방법

오류가 임시 컴퓨터나 끊어진 SSH 세션에서만 반복된다면, 먼저 로그와 서명 상태를 보존할 수 있는 원격 맥에서 같은 보관 파일을 시험하는 편이 낫습니다. 원격 환경은 다음 세 방식으로 나눠 확인합니다.

  1. 대화형 로그인으로 Xcode Organizer에서 검증과 업로드를 실행합니다.
  2. SSH 세션에서 같은 파일과 명령을 실행합니다.
  3. 무인 작업으로 실행한 뒤 로그, 키체인 접근, 작업 종료 상태를 확인합니다.
  4. 업로드 뒤 App Store Connect의 Build Uploads 상태를 확인합니다.
  5. 재접속 후 로그와 작업 결과가 남아 있는지 확인합니다.

판정은 세 단계로 기록합니다.

  • 통과: 세 방식에서 같은 보관 파일이 정상적으로 전달되고 상태가 완료로 바뀝니다.
  • 조건부 통과: 대화형 실행만 성공하며 키체인이나 세션 보완이 필요합니다.
  • 불통과: 서명, 권한 또는 처리 오류가 재현되고 원인이 아직 분리되지 않았습니다.

원격 맥을 장기 배포 환경으로 사용할지는 이 판정 뒤에 결정해야 합니다. 단순히 접속할 수 있다는 사실보다 로그 보존, 개인 키 관리, 재시작 뒤 복구, 무인 작업의 재현성이 중요합니다. ProxyMac의 원격 맥 콘솔 사용 안내도움말을 함께 확인하면 접속 방식과 관리 절차를 먼저 점검할 수 있습니다.

현재 사용 중인 임시 노트북이나 개인 맥은 인증서가 분산되고, SSH가 끊기면 작업이 중단되며, 재부팅 뒤 키체인과 환경 변수를 다시 맞춰야 하는 단점이 있습니다. 반면 장기간 무거운 빌드를 계속 돌리거나 물리 기기와 직접 연결해야 한다면 맥을 직접 구매하는 편이 더 적합할 수 있습니다. 다만 오류를 재현할 임시 환경이나 TestFlight 복구용 iOS 빌드 서버가 필요한 상황이라면, ProxyMac에서 원격 맥을 일정 기간 임대해 같은 보관 파일로 먼저 검증하는 방식이 비용과 위험을 함께 줄이기 쉽습니다. ProxyMac 원격 맥 이용 안내

앱 스토어 커넥트 업로드 실패의 해결 순서는 인증서가 아닙니다. 오류 단계 확인, 원본 로그 보존, 같은 보관 파일 재현, 상태별 조치가 먼저입니다. 이 순서를 지키면 불필요한 재빌드와 서명 자산 삭제를 피하면서 TestFlight와 App Store 제출 경로를 더 빠르게 복구할 수 있습니다.

업로드 오류를 원격 맥에서 다시 점검해 보세요

ProxyMac의 원격 맥에서 같은 보관 파일과 서명 환경을 재현해 오류가 발생한 단계를 빠르게 확인할 수 있습니다.
필요한 맥 환경을 원격으로 이용해 개인 장비의 설정 차이로 인한 업로드 실패를 줄일 수 있습니다.