SwiftUI프로그래밍

앱스토어에 어플 배포 또는 등록을 위해 Xcode에서 해야할 일

앱스토어에 어플 등록을 하거나 업데이트해서 올일 일이 자주 하지 않다보니, 매번 할때마다 방법이 생각나지 않는다.

그래서 이번기회에 기록해두기로 한다.

앱스토어에 배포를 위한 절차를 알아보자.



앱스토어에 어플 업로드 방법

  1. Xcode 의 왼쪽 프로젝트 영역에서 프로젝트 이름을 클릭하면 XXXXXX.xcodeproj를 파일이 열린다.
  2. TARGETS에서 어플을 클릭 후 오른쪽 영역에서 General 탭을 클릭한다.
  3. Identity 에서 Version과 Build 버전 정보를 상향한다.
  4. Xcode 상단 메뉴 중에 Product 클릭 > Archive 메뉴를 클릭한다.
  5. Archives 창이 열리면 우측영역에서 Distribute App 버튼을 클릭한다.
  6. Select a method for distribution팝업창이 열리면 Custom를 선택하고 Next 버튼을 클릭한다.
  7. App Store Connect 를 선택 후 Next버튼을 클릭한다.
  8. Distribute 버튼을 클릭한다.
  9. Upload를 선택 후 Next 버튼을 클릭
  10. Development Team를 선택 후 Next 버튼을 클릭
  11. Upload your app’s symbols 및 Manage version and build number 기본 선택값 유지 하고 Next 버튼 클릭
  12. Automatically manage signing 선택 후 Next 버튼 클릭
  13. 정상적으로 수행되면, Upload 버튼 클릭
  14. Done 버튼 클릭하여 마무리



배포전에 맥북에 설치해서 테스트 해보고 싶다면?

  1. Xcode 의 왼쪽 프로젝트 영역에서 프로젝트 이름을 클릭하면 XXXXXX.xcodeproj를 파일이 열린다.
  2. TARGETS에서 어플을 클릭 후 오른쪽 영역에서 General 탭을 클릭한다.
  3. Identity 에서 Version과 Build 버전 정보를 상향한다.
  4. Xcode 상단 메뉴 중에 Product 클릭 > Archive 메뉴를 클릭한다.
  5. Archives 창이 열리면 우측영역에서 Distribute App 버튼을 클릭한다.
  6. Select a method for distribution팝업창이 열리면 Custom를 선택하고 Next 버튼을 클릭한다.
  7. App Store Connect 를 선택 후 Next버튼을 클릭한다.
  8. Distribute 버튼을 클릭한다.
  9. Export를 클릭 후 Next 버튼을 클릭
  10. Development Team를 선택 후 Next 버튼을 클릭
  11. Upload your app’s symbols 및 Manage version and build number 기본 선택값 유지 하고 Next 버튼 클릭
  12. Automatically manage signing 선택 후 Next 버튼 클릭
  13. 정상적으로 수행되면, Export버튼 클릭
  14. Export를 선택한 경우 폴더 선택 후 Export 버튼 클릭 하여 마무리
  15. Export한 해당 폴더를 찾아가면 폴더안에 pkg과 plist 확장자를 가진 파일이 생성된다. (로그파일 포함)
  16. pkg 파일을 더블클릭하여 설치를 시작한다.

Xcode에서 어플을 실행하면 콘솔창에 오류는 없는데, 실행 후에 어떤 행동이든 클릭을 하면 앱이 종료되어서 확인이 필요하여 Export를 하여 테스트를 진행하였다.

설치가 잘되었는데, 왜 열 수 없다고 뜨지?

cmd + space 클릭 후 콘솔.app를 검색하여 실행 후 스트리밍시작을 클릭한 다음 앱을 다시 실행해보니 아래오 같은 오류 메세지가 노출된다.


Disallowing BatteryChargeAlarm because no eligible provisioning profiles found

적격한 프로비저닝 프로필을 찾을 수 없으므로 BatteryChargeAlarm을 허용하지 않는다.

Xcode에서 Provisioning Profile 설정 확인 진행

  1. Xcode 실행
  2. 프로젝트 선택 (BatteryChargeAlarm)
  3. Targets → “BatteryChargeAlarm” → Signing & Capabilities 탭 이동
  4. Automatically manage signing 옵션이 활성화되어 있음을 확인
  5. Team 선택 > Apple Developer 계정이 등록되어 있는지 확인

아 정상인데 뭐가 문제일까?


Provisioning Profile 다시 생성하기

  1. Xcode에서 “Clean Build Folder” (Shift + Cmd + K) 실행
  2. Build (Cmd + B) 실행
  3. 다시 실행 (Cmd + R) 해보고 앱이 정상적으로 실행되는지 확인

embedded provisioning profile not valid: file:///Applications/BatteryChargeAlarm.app/Contents/embedded.provisionprofile error: Error Domain=CPProfileManager Code=-215 "Only Development Provisioning Profiles can be installed in System Settings. Production Provisioning Profiles are imported within Xcode." UserInfo={NSLocalizedDescription=Only Development Provisioning Profiles can be installed in System Settings. Production Provisioning Profiles are imported within Xcode.}

원인은 배포(Production)용 Provisioning Profile이 사용하였기 때문이란다.
macOS에서 실행하려면 Development Provisioning Profile을 사용해야 된다.

그러나 여전히 앱이 종료된다.

RBSStateCapture remove item called for untracked item 603-598-16227 (target:[app<application.BatteryChargeAlarm.38890275.38890280(501)>:6797])

이 오류는 macOS의 Responsibility System (RBS) 과 관련된 문제야.
앱이 실행되다가 macOS가 이를 추적하지 못하고 종료하는 현상인데, 주된 원인은 다음과 같아

앱이 백그라운드 프로세스로 실행되다가 종료됨

앱이 백그라운드에서 실행될 수 있도록 설정되지 않아서 macOS가 강제로 종료할 가능성이 있어.

해결 방법

  1. Xcode에서 Info.plist 수정
    • Application is agent (UIElement) 키를 추가하고 YES로 설정
    • NSEnableIdleTimer 값을 NO로 설정 (백그라운드 실행 방지)
    • NSHighResolutionCapable 값을 YES로 설정
  2. 앱을 다시 빌드 후 실행 bash복사편집

error: Content is protected !!