[인증서] iOS 배포 인증서 이슈 (Attempted to install a Beta profile without the proper entitlement.)

2023. 11. 29. 15:28IT/iOS

반응형

iOS 앱을 개발하다 보면 마지막 배포 부분에서 꼭 이슈가 하나씩 생기는 것 같다.

나의 경험 상 개발된 앱 품질이나 UI, 라이브러리 등 iOS 가 갖는 여러 가지 장점이 많은 것도 사실이지만, 개발IDE / 앱 실행 / 인증서 등에서는 Android 에 비해 이슈가 많은 것 같다.

 

결론.

iOS 앱을 기기에서 직접 테스트 할 경우 Adhoc 프로파일로 빌드하여 테스트 할 것.

앱스토어 배포 시에만 App Store 프로파일로 빌드하여 배포할 것.

 

이번에도 App Store 프로파일로 앱을 빌드하고 아카이빙 해서 ipa 를 생성하고 디바이스 테스트를 하려고 하였으나 아래와 같은 이슈가 발생하여 열심히 구 선생님께 질문을 드렸더랬다.

 

아래와 같은 앱 무결성 오류가 나면서 설치부터 에러가 나는 것....

‘앱 이름’을(를) 설치할 수 없음
Domain: IDEInstallCoreDevice
Code: 0
Recovery Suggestion: Failed to install embedded profile for com.KoreaExpressSmt : 0xe800801f (Attempted to install a Beta profile without the proper entitlement.)
Verify that the Developer App certificate for your account is trusted on your device. Open Settings on the device and navigate to General -> VPN & Device Management, then select your Developer App certificate to trust it.
User Info: {
    DVTErrorCreationDateKey = "2023-11-29 01:21:58 +0000";
    IDERunOperationFailingWorker = IDEInstallCoreDeviceWorker;
}
--
Failed to install the app on the device.
Domain: com.apple.dt.CoreDeviceError
Code: 3002
User Info: {
    NSURL = "file:///
}
--
‘앱 이름’을(를) 설치할 수 없음
Domain: IXUserPresentableErrorDomain
Code: 14
Failure Reason: 무결성을 확인할 수 없기 때문에 이 앱을 설치할 수 없습니다.
Recovery Suggestion: Failed to install embedded profile for com.KoreaExpressSmt : 0xe800801f (Attempted to install a Beta profile without the proper entitlement.)
--
Failed to install embedded profile for com.KoreaExpressSmt : 0xe800801f (Attempted to install a Beta profile without the proper entitlement.)
Domain: MIInstallerErrorDomain
Code: 13
User Info: {
    FunctionName = "-[MIInstallableBundle _installEmbeddedProfilesWithError:]";
    LegacyErrorString = ApplicationVerificationFailed;
    LibMISErrorNumber = "-402620385";
    SourceFileLine = 200;
}
--
 
Event Metadata: com.apple.dt.IDERunOperationWorkerFinished : {
    "device_isCoreDevice" = 1;
    "device_model" = "iPhone14,6";
    "device_osBuild" = "17.1.1 (21B91)";
    "device_platform" = "com.apple.platform.iphoneos";
    "dvt_coredevice_version" = "348.1";
    "dvt_mobiledevice_version" = "1643.40.14";
    "launchSession_schemeCommand" = Run;
    "launchSession_state" = 1;
    "launchSession_targetArch" = arm64;
    "operation_duration_ms" = 2603;
    "operation_errorCode" = 0;
    "operation_errorDomain" = IDEInstallCoreDevice;
    "operation_errorWorker" = IDEInstallCoreDeviceWorker;
    "operation_name" = IDERunOperationWorkerGroup;
    "param_debugger_attachToExtensions" = 0;
    "param_debugger_attachToXPC" = 1;
    "param_debugger_type" = 3;
    "param_destination_isProxy" = 0;
    "param_destination_platform" = "com.apple.platform.iphoneos";
    "param_diag_MainThreadChecker_stopOnIssue" = 0;
    "param_diag_MallocStackLogging_enableDuringAttach" = 0;
    "param_diag_MallocStackLogging_enableForXPC" = 1;
    "param_diag_allowLocationSimulation" = 1;
    "param_diag_checker_tpc_enable" = 1;
    "param_diag_gpu_frameCapture_enable" = 0;
    "param_diag_gpu_shaderValidation_enable" = 0;
    "param_diag_gpu_validation_enable" = 0;
    "param_diag_memoryGraphOnResourceException" = 0;
    "param_diag_queueDebugging_enable" = 1;
    "param_diag_runtimeProfile_generate" = 0;
    "param_diag_sanitizer_asan_enable" = 0;
    "param_diag_sanitizer_tsan_enable" = 0;
    "param_diag_sanitizer_tsan_stopOnIssue" = 0;
    "param_diag_sanitizer_ubsan_stopOnIssue" = 0;
    "param_diag_showNonLocalizedStrings" = 0;
    "param_diag_viewDebugging_enabled" = 1;
    "param_diag_viewDebugging_insertDylibOnLaunch" = 1;
    "param_install_style" = 0;
    "param_launcher_UID" = 2;
    "param_launcher_allowDeviceSensorReplayData" = 0;
    "param_launcher_kind" = 0;
    "param_launcher_style" = 99;
    "param_launcher_substyle" = 8192;
    "param_runnable_appExtensionHostRunMode" = 0;
    "param_runnable_productType" = "com.apple.product-type.application";
    "param_structuredConsoleMode" = 1;
    "param_testing_launchedForTesting" = 0;
    "param_testing_suppressSimulatorApp" = 0;
    "param_testing_usingCLI" = 0;
    "sdk_canonicalName" = "iphoneos17.0";
    "sdk_osVersion" = "17.0";
    "sdk_variant" = iphoneos;
}
--
 
 
System Information
 
macOS Version 14.1.1 (Build 23B81)
Xcode 15.0.1 (22266) (Build 15A507)
Timestamp: 2023-11-29T10:21:58+09:00

 

 

알고보니 적절한 프로파일로 빌드를 하지 않아서 설치 오류가 발생한 것이다.

모두 나의 무지에서 비롯된 것... 애플의 공식 문서를 찾아보니 인증서 사용에 대한 안내가 정확히 나와 있었다.

 

앱 스토어 배포 전 기기에 직접 설치하여 테스트 하고 싶다면 Ad Hoc 프로파일로 생성하여 빌드 및 아카이빙을 해야한다.

앱 스토어 배포 용 앱을 빌드 및 아카이빙 할 경우 App Store 프로파일로 생성하여 진행하도록 한다.

이 때 인증서는 Apple Distribution 을 공통으로 써도 무방하다.

 

추가로 인증서 만료가 가까워져 업데이트 필요할 경우도 있는데, 아래의 가이드를 살펴보자.

 

아래의 공식 홈페이지의 가이드라인을 잘 살펴보자.

https://developer.apple.com/support/certificates/

 

Certificates - Support - Apple Developer

Feedback Assistant Submit feedback, report bugs, and request enhancements to APIs and developer tools. Send us feedback

developer.apple.com

 

여기서 주목해야 할 것은 아래의 노란 부분이다.

잘 읽어보면, 너의 개발자 멤버십이 유효하다면, 너가 앱스토어에서 배포하던 기존 앱은 아무 영향없이 잘 동작할 것이다. 만약 너가 기업용(In-House) 멤버십을 가지고 있다면, 인증서 만료 전 인증서 갱신 후 앱을 재배포를 해야한다.

 

 

반응형