Live Activity 추가 후 Xcode 아카이브 및 배포 에러 트러블슈팅
원래 pirl 단일 앱이었을 때는 eas cli로 로컬 빌드를 돌리고 TestFlight에 올리는 흐름이 매끄러웠다. 그런데 Live Activity 익스텐션 타겟을 새로 추가하고 나서부터 Xcode 아카이브 단계에서 프로비저닝 프로파일을 못 찾거나 Automatic signing cannot update... 같은 HealthKit 권한 오류가 연달아 발생했다. 같은 명령어인데 빌드가 통째로 막힌 셈이라 한참 헤맸다.
무엇이 문제였나
타겟이 둘로 늘어나면서, 메인 앱(pirl)과 익스텐션(LiveActivity) 각각에 고유한 App ID와 배포용(Distribution) 프로비저닝 프로파일이 모두 필요해졌다. 로컬에서만 빌드를 돌리던 기존 흐름은 이걸 모르고 있었다.
배포 인증서와 프로파일이 애플 개발자 센터·EAS 서버 양쪽에 완전히 동기화되어 있지 않은 상태였고, 이 상태로 Xcode 아카이브를 시도하니 Xcode가 적합한 프로파일을 찾지 못해 자동 서명을 시도했다. 자동 서명이 권한 검증을 거치면서 HealthKit 충돌 같은 에러가 연쇄적으로 터졌다.
풀어낸 방법
EAS 원격 빌드 한 번을 명시적으로 돌리기
로컬에서 꼬여 있는 인증 상태를 그대로 풀려고 시도하기보다는, EAS 원격 빌드를 최초 1회 강제로 돌리는 쪽을 택했다. 이렇게 하면 Expo 서버가 애플 개발자 센터와 연동해서 pirl 메인 앱뿐 아니라 새로 추가된 LiveActivity 확장에 대해서도 고유한 App ID, 인증서(Certificate), 배포용 프로파일(Provisioning Profile)을 서버에 자동으로 만들어 등록해준다. 서버 단의 자격 증명이 한 번에 정렬됐다.
로컬 빌드와 Xcode 아카이브 정상화
서버 쪽에서 모든 타겟의 인증서·프로비저닝 프로파일이 동기화된 상태가 되니, eas credentials 동기화를 받은 다음 로컬 빌드(pnpm build 혹은 로컬 프리빌드)를 돌렸다. 그 후 Xcode를 열어 각 타겟에 맞는 Distribution 프로파일을 수동으로 지정할 수 있었고, Product > Archive도 별 충돌 없이 통과했다. TestFlight 배포까지 한 번에 마무리됐다.