hbc studio › 제작기 › 씨앗

맥 없이 윈도우 PC로 iOS 앱 내기: 씨앗의 하루

씨앗은 웹으로 먼저 만들고, 같은 코드를 iOS 앱으로 감싸(Capacitor) 내놓았어요. 그런데 손에 맥이 없었어요. iOS 앱은 보통 맥의 Xcode로 빌드하니, 이건 꽤 큰 제약이에요. 2026년 5월 17일 하루에만 27번 커밋하면서 이 문제를 풀었어요.

빌드는 클라우드에서

맥이 없으니 빌드는 Codemagic이라는 클라우드 빌드 서비스에 맡겼어요. 빌드할 때마다 iOS 프로젝트 폴더를 처음부터 새로 만들고, 필요한 설정(URL 스킴, 위젯 확장 등)을 스크립트로 덧붙인 뒤, 빌드해서 TestFlight로 바로 올려요. 프로젝트 폴더를 손으로 관리하지 않으니, 맥이 없어도 모든 변경이 저장소의 파일과 스크립트에 남아요.

첫 장애물은 의존성 관리 도구였어요. Capacitor 8은 기본으로 Swift Package Manager를 쓰는데, 이 구성에서는 CocoaPods가 필요해서 강제로 지정해야 했어요.

켜자마자 꺼지는 앱

18번째 빌드는 iOS에서 실행하자마자 꺼졌어요. 맥이 있으면 연결해서 충돌 기록을 바로 볼 텐데, 그럴 수가 없었어요. 가장 의심스러운 건 시작 화면(스플래시)이라, 먼저 그걸 꺼서 범위를 좁혔어요.

진짜 원인은 다른 데 있었어요. 광고 SDK(Google Mobile Ads)가 앱 설정 파일(Info.plist)에 자기 앱 ID가 없으면 실행 즉시 앱을 멈추는데, 그 값이 빠져 있었어요. 값을 넣자 앱이 켜졌고, 꺼 두었던 시작 화면은 나흘 뒤 다시 켰어요. 범위를 좁히려고 끈 것은, 원인을 찾은 뒤 꼭 되돌려야 해요.

돌아오지 않는 로그인

다음은 Google·카카오 로그인이었어요. 웹에서는 로그인 후 원래 페이지로 돌아오지만, 앱 안의 웹 화면 주소(capacitor://localhost)는 로그인 서비스가 돌려보낼 수 있는 주소가 아니에요. 그래서 앱 전용 주소(seeat://login-callback)로 돌아오게 바꿨어요.

그래도 로그인 후에 앱이 멈춰 있었어요. 몇 가지가 겹쳐 있었어요.

  • 앱이 완전히 꺼진 상태에서 로그인 주소로 열리면, 그 주소를 따로 꺼내 읽어야 했어요.
  • 로그인 결과가 주소의 # 뒤에 담겨 오는 방식이었는데, iOS의 웹 엔진은 seeat:// 같은 앱 주소에서 이 부분을 일반적인 방법으로 읽지 못했어요.
  • 카카오톡 안에서 링크를 연 경우를 위해 “씨앗 앱에서 열기”로 빠져나가는 길도 만들었어요.

맥의 콘솔이 없으니, 원인을 찾으려고 휴대폰 화면 위에 로그인 진행 상황을 띄우는 진단용 띠를 잠깐 넣었어요. 화면에 직접 쓰는 것이 유일한 디버거였던 셈이에요. 며칠 뒤 결제 문제를 추적할 때도 같은 방법으로, 오류 원문을 화면에 작게 띄웠어요.

정리하면

  • 맥이 없어도 iOS 앱은 낼 수 있어요. 대신 iOS 프로젝트를 매번 스크립트로 재생성하게 만들어, 모든 걸 저장소에 남겨야 해요.
  • 콘솔이 없을 때는 화면이 콘솔이에요.
  • 범위를 좁히려고 꺼 둔 기능은, 원인을 찾은 뒤 되돌리는 것까지가 수정이에요.

씨앗 — 씨앗은 혼자서도, 가족·연인·룸메이트와 함께도 쓰는 가계부예요. 평소 말투로 말하면 씨앗AI 비서가 기록과 검색을 대신해 줘요.

씨앗 소개 보기 · App Store에서 받기 ↗

다른 제작기

제작기 전체 보기