2023. 11. 29. 15:28ㆍIT/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/
여기서 주목해야 할 것은 아래의 노란 부분이다.
잘 읽어보면, 너의 개발자 멤버십이 유효하다면, 너가 앱스토어에서 배포하던 기존 앱은 아무 영향없이 잘 동작할 것이다. 만약 너가 기업용(In-House) 멤버십을 가지고 있다면, 인증서 만료 전 인증서 갱신 후 앱을 재배포를 해야한다.