콘텐츠로 이동

내보낸 XCode 프로젝트 확인

iOS 대상으로 Unity 프로젝트를 빌드한 후 Unity의 ‘Console Tab’에서 빌드 후 스크립트가 실행되고 아래와 같은 결과 로그 메시지를 보여줍니다.

빌드 스크립트가 성공적으로 실행되면 콘솔 탭에 “DoveRunner Mobile App Security asset has applied to exported Xcode project successfully !!”와 같은 로그 메시지가 표시됩니다. 이 로그 메시지가 표시되지 않으면 문제 해결 섹션을 참조하여 수동으로 이 오류를 해결할 수 있습니다.

Unity에서 내보낸 Xcode 프로젝트 열기

Section titled “Unity에서 내보낸 Xcode 프로젝트 열기”

프로젝트 네비게이터에서 최상위 프로젝트를 선택하고 TARGETS에서 “Unity-iPhone” 타겟 선택

Section titled “프로젝트 네비게이터에서 최상위 프로젝트를 선택하고 TARGETS에서 “Unity-iPhone” 타겟 선택”

Section titled ““Build Settings” 탭을 선택하고 검색 상자에 “other link” 입력”

Python 스크립트가 성공적으로 실행되었다고 가정하면 _Debug / Release / ReleaseForProfilling / ReleaseForRunning_과 같은 각 구성에서 “-lStaticAppSec …”로 시작하는 “Other Linker Flags” 값을 볼 수 있습니다. 이 값이 비어 있으면 문제 해결 섹션을 참조하여 스크립트 오류를 해결하세요.

* DoveRunner Mobile App Security는 디버그 모드와 릴리스 모드에서 다르게 작동합니다.

Debug 모드로 앱을 빌드하면 편리한 개발을 위해 DoveRunner Mobile App Security의 보안 기능이 비활성화됩니다:

  • 탈옥 탐지
  • 안티 디버깅
  • 암호화되지 않은 실행 파일 탐지
  • 앱 무결성 손상 탐지
  • 재서명 탐지

이러한 기능들은 Release 모드로 앱을 빌드할 때 활성화됩니다.

App Store에 배포할 때는 앱을 Release 모드로 빌드합니다. Release 모드로 DoveRunner Mobile App Security를 테스트하려면 앱이 App Store 또는 ‘TestFlight’를 통해 배포되어야 합니다. 그렇지 않으면 실행 파일이 암호화되지 않은 것으로 감지되어 앱이 종료됩니다.

앱 무결성 및 인증서 검증 스냅샷 생성

Section titled “앱 무결성 및 인증서 검증 스냅샷 생성”

앱을 테스트하거나 앱 스토어를 통해 앱을 배포할 때 앱 무결성 및 인증서를 확인하는 추가 프로세스가 있습니다. 이 단계를 건너뛰면 기기에서 실행되는 앱이 앱 무결성 손상으로 인해 몇 초 후 종료됩니다.

Release 모드로 빌드된 앱을 Development 또는 Ad Hoc을 통해 배포할 때는 실행 파일이 Fairplay DRM으로 암호화되지 않았다는 보안 검사로 인해 종료됩니다. 이 단계를 건너뛰면 동일한 결과가 나타나지만 TestFlight 또는 App Store를 통해 앱을 배포할 때는 이 단계를 처리해야 합니다.

App Store 또는 TestFlight로 업로드하는 과정을 단계별로 살펴보겠습니다. 아래는 Xcode에서 Archive한 후의 Organizer 창입니다.

App Store에 업로드할 IPA를 생성하려면 “Distribute App” 버튼을 클릭합니다.

“App Store Connect”가 선택된 상태에서 “Next” 버튼을 클릭합니다.

일반적으로 “Upload”를 선택하지만 DoveRunner Mobile App Security를 적용하려면 “Export”를 선택해야 합니다. 이는 앱 무결성 및 인증서에 대한 스냅샷을 생성해야 하고 이 프로세스 없이는 앱이 기기에서 정상적으로 실행되지 않기 때문입니다. “Export”가 선택된 상태에서 “Next” 버튼을 클릭합니다.

모든 옵션을 기본값으로 유지하고 “Next” 버튼을 클릭합니다.

기본 옵션을 유지한 상태에서 “Next” 버튼을 클릭합니다. 그러면 IPA로 내보낼 수 있는 창을 볼 수 있습니다.

간략한 내용을 확인하고 “Export” 버튼을 클릭합니다.

대상 대화 상자가 나타나면 저장 위치를 선택하고 “Export” 버튼을 클릭합니다. 이 문서에서는 ”~/Downloads/Unity-iPhone_Upload”라는 폴더를 사용했습니다.

“Export” 버튼을 클릭한 후 IPA 파일이 지정된 폴더에 생성됩니다. 아래와 같이 파인더에서 생성된 IPA 파일을 볼 수 있습니다. 이제 IPA의 위치를 기억하거나 파인더 창을 열어 둬야 합니다.

이제 내보낸 IPA로 다음 단계를 처리해야 합니다. 터미널 앱을 실행하고 Xcode 프로젝트 폴더로 이동합니다.

이 문서에서는 Unity에서 내보낸 Xcode 프로젝트 경로로 ”~/Documents/ xcode_project_appsealing_pizza”를 사용했습니다. 위 그림과 같이 pwd 명령으로 경로 이름을 확인할 수 있습니다.

아래와 같이 권한 추가 명령을 실행합니다.

Terminal window
$ chmod +x Libraries/AppSealingSDK/Tools/*
$ open Libraries/AppSealingSDK/Tools/generate_genesis

SDK를 처음 설치하고 generate_genesis 파일을 처음 열 때 다음과 같은 경고 창이 나타날 수 있습니다.

이 경우 OK 버튼을 클릭하여 창을 닫은 다음 설정 창으로 이동하여 “Security and Privacy” 항목을 클릭합니다.

왼쪽에서 “General” 탭을 선택하고 하단의 “Open Anyway” 버튼을 클릭합니다.

“Open Anyway” 버튼을 클릭한 후 또 다른 확인 창이 나타나면 “Open” 버튼을 클릭합니다.

새 터미널 창에서 “Open” 액션의 실행 결과가 표시되면 창을 닫습니다.

이제 아래와 같이 ‘generate_hash’ 스크립트를 실행합니다. 이 스크립트에는 이전 단계에서 내보낸 IPA 파일의 경로인 하나의 매개변수만 있습니다. IPA 경로를 수동으로 입력하거나 이전 단계에서 열린 Finder 창에서 IPA 파일을 끌어서 놓을 수 있습니다.

Terminal window
$ Libraries/AppSealingSDK/Tools/generate_hash ~/Downloads/Unity-iPhone_Upload/pizza.ipa

스크립트를 실행한 후 아래와 같은 진행 상황을 볼 수 있으며 앱 무결성 및 인증서에 대한 스냅샷이 IPA 파일에 추가됩니다.

이 프로세스는 “Ad Hoc”, “Enterprise”, “Development”와 동일하게 배포 단계에 적용되어야 합니다.

재서명된 IPA를 App Store Connect에 업로드

Section titled “재서명된 IPA를 App Store Connect에 업로드”

이제 재서명된 IPA를 App Store Connect에 업로드할 수 있습니다. 이 문서에서는 편리한 업로드를 위해 Transporter 앱(MAC)을 사용합니다. Transporter 앱이 MAC에 설치되지 않은 경우 Mac AppStore를 열고 “Transporter”를 검색하여 설치할 수 있습니다.

설치 후 Transporter를 실행하면 아래와 같이 Apple ID를 요청받습니다. Apple ID와 비밀번호를 입력합니다. (이 단계는 처음에만 한 번 필요합니다)

ID와 비밀번호로 로그인한 후 아래와 같은 Transporter 창을 볼 수 있습니다. 왼쪽 상단의 ”+” 버튼이나 가운데의 “ADD APP” 버튼을 클릭하여 업로드할 IPA를 선택하고 이전 단계에서 재서명된 IPA를 선택합니다.

새 버전이나 더 높은 빌드 번호로 IPA 파일을 추가하여 앱을 업데이트할 때 동일한 번들 ID로 인해 아래와 같은 경고 대화 상자가 나타날 수 있습니다. 이 경우 “Replace” 버튼을 클릭하여 새 IPA를 업로드합니다.

IPA 파일이 추가된 후 “DELIVER” 버튼을 클릭하면 App Store Connect로 확인 및 업로드 프로세스가 진행됩니다.

아래 창이 나타나면 업로드 프로세스가 완료된 것이며 App Store 검토 또는 TestFlight 배포를 위해 빌드를 제출할 수 있습니다.