TestFlight

 

앱스토어는 회사 내부용, 직원들만 쓰는 사내 어플에 대해서 공식 출시를 승인하지 않고 있기 때문에  회사 내부 어플 배포용으로도 쓰인다.

또한 안드로이드와 달리 기본적으로 애플 App ID 에 등록된 기기만 앱을 배포할 수 있기 때문에 다른사용자들에게 배포가 불가능 하다.  

 

해당 앱을 이용하고자 하는 아이폰 사용자들의 TestFlight 앱 을 통해  Apple 이메일 주소로 초대가 가능하며 앱이 정상적으로 TestFlight에 업로드 될 시, 이메일로 앱 다운 초대 메일이 발송된다.

 

 

언리얼 같은경우 Test / Shipping 버전을 허용된 인원에 한해서 베타 버전 실행 경험과 피드백 가능하다.

 

Test - Shipping 에 몇 가지 콘솔 명령, 통계, 프로파일링 기능이 추가된 빌드

 

 

 

우선 애플 계정의 사용하고 있는 인증서(Identifier) 에 해당 기능을 추가 한다.

(AppAttest 옵션이 Bundle ID 에 와일드 카드(*) 가 있으면 비활성화 되는것 같다)

App ID 를 새로 만들었다면 연관된 프로파일들의 App ID도 수정해 준다.

 

 

그리고 배포(Distribution) 증명서를 하나 만들어 주어야 한다.

필자는 IOS 만 사용하기 때문에 IOS Distribution 을 사용하였다.

 

만들었으면 같은 서명자(회사) 인지 한 번 확인해보고 같은 주체에 있으면 잘 만들어 진 것

XCode - Preferences - Accounts

 

 

App Store Connect https://appstoreconnect.apple.com/apps 에서

 

해당 칸을 채워서 생성한다.

단, 이 앱을 지우는데 내 맘대로 지울 수 있는게 아닌것 같으니 확실하게 한번에 생성하도록 하자

SKU 는 앱 스토에서 애플리케이션에 사용되는 고유 추적 번호이기 때문에 무조건 고유해야하는 스트링이면 된다고 한다.

 

 

 

XCode - Archive (자꾸 서명오류 뜨는데 해결 불가)

더보기

빌드가 끝나면 다음과 같은 창이 나타나는데, 뜨지 않으면 Window - Organizer 을 클릭

 

 

TestFlight (Cmd)

 

XCode 상에서 안되고, 자동화 목적이기 때문에 명령어 빌드

 

Clean (Binaries / Intermediate) -> Package -> 앱 검증 -> 앱 업로드

Clean Entitlements file was modified during the build, which is not supported

전 버전의 빌드가 캐시되어 패키징 할 때 해당 오류를 발생시키는데 CODE_SIGN_ALLOW_ENTITLEMENTS_MODIFICATION 옵션을 Yes 로 설정해주면 해결이 가능한데, 젠킨스 빌드 과정에서 Clean (Binaries / Intermediate) 을 먼저 할 것이라 놔둠
Package 언리얼 Test / Shipping 배포 버전으로 패키징
Validate App xcrun -altool --validate-app

말 그대로 앱을 AppStore에 올릴 수 있는지 검증하는 과정
버전 확인 (이미 올라간 버전과 같거나 낮으면 허용 x)
앱 로고 (로고가 알파채널 있으면 허용 x)
PList 확인 (생략된 옵션이 있으면 허용 x) 등 다양한 오류 사전에 확인 가능
Upload App xcrun altool --upload-app

App을 AppStore 에 업로드 함
앱 크기확인은 이 때 확인 가능 한 듯

 

그리고 언리얼 에서 프로젝트 세팅 - IOS Generate xcode archive package 옵션 true로 변경

[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
bGenerateXCArchive=True

 

 

또한 cmd 에서 TestFlight 를 업로드 하려면 앱 암호가 필요하다 https://appleid.apple.com/

해당 사이트에서 앱 암호를 하나 만들도록 하자

 

 

// 배포 방식으로 패키지
${MAC_WORKSPACE_DIRECTORY}/${ENGINE_RUNUAT} \
-ScriptsForProject=${UPROJECT_PATH} \
Turnkey -command=VerifySdk -platform=${TARGET_PLATFORM} -UpdateIfNeeded -project=${UPROJECT_PATH} \
BuildCookRun -nop4 -utf8output -build -cook -stage -package -archive -project=${UPROJECT_PATH} \
-target=${UPROJECTNAME} -platform=${TARGET_PLATFORM} -clean -pak -iostore -compressed -ddc=DerivedDataBackendGraph \
-archivedirectory=${TESTFLIGHT_ARCHIVE_DIR} -clientconfig=${buildConfig} -distribution


// AppStore(TestFlight) 에 업로드 할 수 있는지 검증
xcrun altool --validate-app \
    --type ios --file "${TESTFLIGHT_ARCHIVE_DIR}/${TARGET_PLATFORM}/${UPROJECTNAME}.ipa" \
    --username "${APPLE_USER}" \
    --password "${APPLE_APP_PASSWORD}"


// AppStore(TestFlight) 에 업로드
xcrun altool --upload-app \
    --type ios --file "${TESTFLIGHT_ARCHIVE_DIR}/${TARGET_PLATFORM}/${UPROJECTNAME}.ipa" \
    --username "${APPLE_USER}" \
    --password "${APPLE_APP_PASSWORD}"

 

EGINE_RUNUAT Engine/Build/BatchFiles/RunUAT.sh 경로
TESTFLIGHT_ARCHIVE_DIR TestFlight용 Ipa가 저장되어있는 디렉토리
TARGET_PLATFORM 타겟 플랫폼
UPROJECTNAME 프로젝트 이름
UPROJECTPATH .project 디렉토리
APPLE_USER 애플 계정
APPLE_APP_PASSWORD 애플 앱 암호

 

 

xcrun altool --upload-app 이 실행 완료되고 TestFlight에 올라가는데 까지 시간이 조금 걸리고 완료처리되면 애플 계정으로 메일이 간다.

 

 

 

FORBIDDEN_ERROR.CONTACT_NOT_VALID

 

중간에 해당 오류가 발생하였었는데 계약이 종료되었다는? 에러이다

 

애플 계정에 계약 검토하기를 눌러주어 갱신하면 간단하게 해결 됨

 

 

 

TestFlight 버전 설정

 

DefaultEngine.ini

VersionInfo 설정

문자열 안 됨 -> 소수점만 되는 듯

+ Recent posts