프로젝트의 빌드 설정 수정
Project Navigator에서 최상위 프로젝트를 선택하고 TARGETS 패널에서 “TestApp_Swift” 타겟을 선택합니다
Section titled “Project Navigator에서 최상위 프로젝트를 선택하고 TARGETS 패널에서 “TestApp_Swift” 타겟을 선택합니다”“Build Settings” 탭을 선택하고 검색 상자에 “Other link”를 입력합니다
Section titled ““Build Settings” 탭을 선택하고 검색 상자에 “Other link”를 입력합니다”그러면 “Other Linker Flags” 필드가 표시됩니다. 이제 다음 단계에 따라 이 설정을 입력합니다.
- “Other Linker Flags” 왼쪽의 삼각형 아이콘을 클릭하여 “Other Linker Flags”를 확장합니다
-
“Debug” 항목을 선택하고 클릭하여 값을 편집/삽입한 다음 다음 텍스트를 입력합니다.
-lStaticAppSec_Debug -L$(PROJECT_DIR)/AppSealingSDK/Libraries
-
“Release” 항목을 선택하고 클릭하여 값을 편집/삽입한 다음 다음 텍스트를 입력합니다.
-lStaticAppSec -L$(PROJECT_DIR)/AppSealingSDK/Libraries
아래 단계는 Release 빌드로 시뮬레이터에서 앱을 실행할 때만 필요합니다. 시뮬레이터에서 Release 빌드를 실행할 필요가 없다면 이 단계를 건너뛸 수 있습니다.
Build Settings “Architectures – Excluded Architectures” 구성
Section titled “Build Settings “Architectures – Excluded Architectures” 구성”Build Settings 패널에서 “arch” 키워드를 검색합니다.
“Architectures” 필드가 표시된 후 다음 단계를 따릅니다.
- 왼쪽 삼각형 아이콘을 클릭하여 “Excluded Architectures”를 확장합니다.
- “Release” 항목을 선택하고 오른쪽 ”+” 아이콘을 클릭합니다.
- “Any SDK” 항목이 생성된 후 클릭하여 팝업 메뉴를 표시합니다.
- 팝업 메뉴에서 “Any iOS Simulator” 항목을 선택합니다.
- “Any iOS Simulator SDK”에 대한 값을 “arm64 i386”으로 입력합니다. (arm64와 i386 사이에 공백)
이제 AppSealing 보안 기능이 프로젝트에 적용되었습니다. 평소와 같이 ‘Build’, ‘Run’, ‘Archive’를 진행하세요.
Xcode 빌드 모드에 대한 참고사항
Section titled “Xcode 빌드 모드에 대한 참고사항”* AppSealing은 디버그 모드와 릴리스 모드에서 다르게 작동합니다.
앱을 Debug 모드로 빌드하면 편리한 개발을 위해 AppSealing의 보안 기능이 비활성화됩니다:
- 탈옥 탐지
- 안티 디버깅
- 암호화되지 않은 실행 파일 탐지
- 앱 무결성 손상 탐지
- 재서명 탐지
이러한 기능들은 앱을 Release 모드로 빌드할 때 활성화됩니다.
App Store에 배포할 때는 앱을 Release 모드로 빌드합니다. Release 모드로 AppSealing을 테스트하려면 앱이 App Store 또는 ‘TestFlight’를 통해 배포되어야 합니다. 그렇지 않으면 실행 파일이 암호화되지 않은 것으로 탐지되어 앱이 종료됩니다.
앱 무결성 및 인증서 검증 스냅샷 생성
Section titled “앱 무결성 및 인증서 검증 스냅샷 생성”앱을 테스트하거나 앱 스토어를 통해 앱을 배포할 때 앱 무결성 및 인증서를 검증하는 추가 과정이 있습니다. 이 단계를 건너뛰면 기기에서 실행되는 앱이 손상된 앱 무결성으로 인해 몇 초 후 종료됩니다.
Development 또는 Ad Hoc을 통해 Release 모드로 빌드된 앱을 배포할 때는 실행 파일이 Fairplay DRM으로 암호화되지 않았다고 알려주는 보안 검사로 인해 종료되므로 이 단계를 건너뛰면 동일한 결과가 나타나지만, TestFlight 또는 App Store를 통해 앱을 배포할 때는 이 단계를 처리해야 합니다.
App Store 또는 TestFlight에 업로드하는 과정을 단계별로 살펴보겠습니다. 아래는 Xcode에서 Archive 후 Organizer 창입니다.
“Distribute App” 버튼을 클릭하여 App Store에 업로드할 IPA를 생성합니다.
“App Store Connect”가 선택된 상태로 “Next” 버튼을 클릭합니다.
일반적으로 “Upload”를 선택하지만 AppSealing을 적용하려면 “Export”를 선택해야 합니다. 이는 앱 무결성 및 인증서에 대한 스냅샷을 생성하는 것이 필요하며 이 과정 없이는 앱이 기기에서 정상적으로 실행되지 않기 때문입니다. “Export”가 선택된 상태로 “Next” 버튼을 클릭합니다.
모든 옵션을 기본값으로 유지한 채 “Next” 버튼을 클릭합니다.
기본 옵션을 유지한 채 “Next” 버튼을 클릭합니다. 그러면 IPA로 내보낼 수 있는 창을 볼 수 있습니다.
간략한 내용을 확인하고 “Export” 버튼을 클릭합니다.
대상 대화 상자가 나타나면 저장 위치를 선택하고 “Export” 버튼을 클릭합니다. 이 문서에서는 ”~/Downloads/TestApp_Swift_Upload”라는 폴더를 사용했습니다.
“Export” 버튼을 클릭한 후 IPA 파일이 지정된 폴더에 생성됩니다. 아래와 같이 파인더에서 생성된 IPA 파일을 볼 수 있습니다. 이제 IPA의 위치를 기억해두거나 파인더 창을 열어둔 상태로 유지해야 합니다.
이제 내보낸 IPA로 다음 단계를 진행해야 합니다. 터미널 앱을 실행하고 Xcode 프로젝트 폴더로 이동합니다.
이 문서에서는 unity에서 내보낸 Xcode 프로젝트의 프로젝트 경로를 ”~/Documents/ TestApp_Swift”로 사용했습니다. 위 그림과 같이 pwd 명령으로 경로명을 확인할 수 있습니다.
아래와 같이 권한 추가 명령을 실행하고 generate_genesis 파일을 엽니다. (파인더에서 더블클릭하여 파일을 열 수 있습니다)
$ chmod +x AppSealingSDK/Tools/*$ open AppSealingSDK/Tools/generate_genesis
SDK를 처음 설치하고 generate_genesis 파일을 처음 열 때 다음 경고 창이 나타날 수 있습니다
이 경우 OK 버튼을 클릭하여 창을 닫은 다음 설정 창으로 이동하여 “보안 및 개인정보 보호” 항목을 클릭합니다.
왼쪽의 “일반” 탭을 선택하고 하단의 “확인 없이 열기” 버튼을 클릭합니다.
“확인 없이 열기” 버튼을 클릭한 후 다른 확인 창이 나타나면 “열기” 버튼을 클릭합니다.
새 터미널 창에 “열기” 작업의 실행 결과가 표시되면 창을 닫으면 됩니다.
이제 아래와 같이 ‘generate_hash’ 스크립트를 실행합니다. 이 스크립트에는 이전 단계에서 내보낸 IPA 파일의 경로인 하나의 매개변수가 있습니다. IPA 경로를 수동으로 입력하거나 이전 단계에서 열어둔 파인더 창에서 IPA 파일을 드래그 앤 드롭할 수 있습니다.
$ AppSealingSDK/Tools/generate_hash ~/Downloads/TestApp_Swift_Upload/TestApp_Swift.ipa
스크립트를 실행한 후 아래와 같은 진행 상황을 볼 수 있으며 앱 무결성 및 인증서에 대한 스냅샷이 IPA 파일에 추가됩니다.
이 과정은 “Ad Hoc”, “Enterprise”, “Development” 배포 단계에도 동일하게 적용되어야 합니다.
App Store Connect에 재서명된 IPA 업로드
Section titled “App Store Connect에 재서명된 IPA 업로드”이제 재서명된 IPA를 App Store Connect에 업로드할 수 있습니다. 이 문서에서는 편리한 업로드를 위해 Transporter 앱(MAC)을 사용합니다. MAC에 Transporter 앱이 설치되어 있지 않다면 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 배포를 위해 빌드를 제출할 수 있습니다.