Trouble Shooting/iOS

엔터프라이즈 배포 파일(ipa) 설치 후 실행시 종료되는 케이스

Gradler 2019. 6. 25. 17:10

엔터프라이즈 인증서로 빌드해서 IPA 파일을 만들어 배포했는데 디바이스에 설치는 정상적으로 됐지만 실행하면 곧바로 꺼지는 케이스가 발생했다.

맥북의 console.app으로 디바이스 로그를 확인했을 때 아래와 같은 로그를 남기면서 꺼졌다.

 


[device log]

error 10:41:53.245044 +0900 assertiond Unable to obtain a task name port right for pid 1280: (os/kern) failure (0x5)

error 10:41:53.245554 +0900 assertiond Failed to start job with error <NSError: 0x104704730; domain: NSPOSIXErrorDomain; code: 3; reason: "The process failed to exec"> {

    description = "Unable to get valid task name port right for pid 1280";

    failureReason = "The process failed to exec";

    recoverySuggestion = "Consult /var/log/com.apple.xpc.launchd/launchd.log for more information";

}

error 10:41:53.246260 +0900 SpringBoard [my.bundle.id] Bootstrap failed with error: <NSError: 0x28048ab80; domain: BKSProcessErrorDomain; code: 1 (bootstrap-failed); reason: "Failed to start job">

error 10:41:53.246582 +0900 SpringBoard Bootstrapping failed for <FBApplicationProcess: 0x11097a790; myBundleId; pid: -1> with error: Error Domain=BKSProcessErrorDomain Code=1 "Unable to bootstrap process with bundleID my.bundle.id" UserInfo={NSLocalizedDescription=Unable to bootstrap process with bundleID my.bundle.id, BKSProcessExitReason=0, NSLocalizedFailureReason=Failed to start job, NSUnderlyingError=0x280488240 {Error Domain=NSPOSIXErrorDomain Code=3 "No such process" UserInfo={NSLocalizedFailureReason=The process failed to exec, NSLocalizedRecoverySuggestion=Consult /var/log/com.apple.xpc.launchd/launchd.log for more information, NSLocalizedDescription=Unable to get valid task name port right for pid 1280}}, BSErrorCodeDescription=bootstrap-failed}


분명히 내 맥북에서 만든 빌드 파일은 정상적으로 실행되는데, 동료의 맥북으로 빌드한 파일만 이런 현상이 발생한다.

다 똑같이 한 것 같은데 뭐가 문제일까?

 

결론부터 말하면 사이닝이 정상적으로 되지 않았기 때문에 발생하는 이슈였다.

 

배포파일을 만들 때 (앱에 사이닝을 할 때) 필요한 파일들은 다음과 같다.

  1. Apple Worldwide Developer Relations Certification Authority (키체인 위치 system & login) - Apple Developer 사이트에서 다운로드 받을 수 있음
  2. iPhone Distribution 인증서와 개인키 (키체인 위치 login) - 인증서를 최초 생성한 맥에서 export -> 빌드 하려는 맥에 import
  3. (푸시 서비스를 이용한다면) Apple Push Services: bundle id 인증서 (키체인 위치 login) - 인증서를 최초 생성한 맥에서 export -> 빌드 하려는 맥에 import
  4. Provisioning Profile - Apple Developer 사이트에서 다운로드 후 finder에서 실행하거나(실행해도 아무일도 일어나지는 않음) Archive 하는 과정에서 다운로드 하는 방법도 있음

Provisioning Profile의 로컬 경로 : ~/Library/MobileDevice/Provisioning Profiles/

> 로컬 경로는 적어둔 이유는 가끔 과정(4)으로 import 시켜도 기존 프로비저닝 프로파일이 갱신되지 않아 문제가 해결되지 않는 케이스가 있다로컬 경로에서 확실하게 지운  다시 import 시키는 방식이 가장 확실한 방법이다.

 

나의 경우 동료의 맥북에서 위 파일들을 모두 제거한 후 새롭게 import 시킨 후 다시 사이닝 했더니 케이스가 해결 되었다.