본문 바로가기
Xcode/IOS

IOS) TestFlight로 앱 배포하기와 오류들 (feat : X86 제거)

by 후르륵짭짭 2023. 1. 12.
728x90
반응형

미국 하늘

안녕하세요. 후르륵짭짭입니다.

이번에 사내에서 작은 프로젝트를 진행하고 있는데, 외부로 부터 Test를 의뢰할 일이 생겨서 

TestFlight로 배포를 해봤습니다.

 

** TestFlight 배포 **

일단 Test Flight를 배포하기 위해서는 애플 계발자 등록을 해야합니다. (유료입니다,,,)

2020.12.24 - [Xcode/Apple] - Apple) Solution - your enrollment in the apple developer program could not be completed at this time

 

Apple) Solution - your enrollment in the apple developer program could not be completed at this time

안녕하세요 후르륵짭짭 입니다. 이번에 거의 6개월 만에 애플 개발자에 등록 할 수 있었습니다. 해결하는데 참 오래 걸리고 그 만큼 여러가지 방법을 동원해서 해결 할 수 있었습니다. 총 4개의

hururuek-chapchap.tistory.com

이건 예전에 발생했던 등록 오류인데, 저것 처럼 개발자 등록을 해줘야합니다.

그런 다음 인증서(CSR, Identifier, Certificate, Provisioning Profile)를 발급 받아야합니다.

https://sodevly.github.io/react-native-upload-app-on-testflight/

 

iOS앱 TestFlight에 배포하기

SoDevly의 개발 블로그

sodevly.github.io

인증서 받는 방법과 배포 방법은 여기에 자세히 적혀 있습니다!

위에 나온 방법 그대로 따라해주면 되겠습니다!

 

** CFBundleIconName 추가 오류 ** 

TestFlight에 올릴 때도 앱 아이콘이 필요하더구요.

Info.plist에 들어가서 다음과 같이 추가 해줍니다.

그리고 Asset에 들어가서 AppIcon에 이미지를 넣어줍니다.

https://stackoverflow.com/a/46348976/20580592

 

Missing CFBundleIconName in Xcode9 iOS11 app release

I'm struggling to release a new version of our app using Xcode 9 built with iOS 11 SDK. Archiving and uploading the binary goes well without any issue. The build appears in iTunes Connect under Act...

stackoverflow.com

여기에 해결 방법이 잘 적혀 있습니다!

 

** 수출규정 관련 문서 누락 ** 

위와 같은 문구가 나오면서 배포가 안될 겁니다. 

그럴 때는 관리 버튼을 누른 뒤에 맨 아래 항목인 아니요 버튼을 눌러주면 됩니다.

 

아니면 Info.plist에 추가해주면 됩니다.

이걸 추가해주면 앞으로 저런 문구가 나오지 않게 됩니다!

 

** TestFlight로 테스터 추가하기 ** 

여기에 내부 테스팅을 눌러서 그룹을 생성해줍니다.

그리고 테스터들의 이메일을 추가해주면 해당 이메일로 코드가 보내집니다.

그리고 TestFlight 앱을 설치 후에 "교환" 버튼을 눌러 추가해줍니다!

 

** x86 아키텍트 제거 **

앱을 배포할 때 Framework에 X86 아키텍트가 포함되어 있으면 배포가 되지 않습니다.

"The binary is invalid. The encryption info in the LC_ENCRYPTION_INFO load command is either missing or invalid, or the binary is already encrypted. This binary does not seem to have been built with Apple's linker.

위와 깉은 오류가 나오면 해당 아키텍트는 제거해줘야합니다. (Intel용 시뮬레이터에서 필요한 것이라 포함되어 있습니다.)

2022.07.17 - [Xcode/IOS] - IOS)XCFramework로 통합 Framework Package를 만들어보자

 

IOS)XCFramework로 통합 Framework Package를 만들어보자

안녕하세요. 후르륵짭짭입니다. 이번에는 Famework를 만드는 방법에 정리하려고 합니다. 사내에서 특정 Opensource를 받아서 저희 것으로 Custom하게 개발해야할 일이 생겼는데, 개발 된 것을 Famework로

hururuek-chapchap.tistory.com

이러한 번거로운 작업을 하지 않기 위해서는 XCFramework를 사용해야합니다.

위에 " + " 을 눌러서 Run Script를 추가해줍니다.

# Type a script or drag a script file from your workspace to insert its path.
echo "Delete x86_64 from Framework"

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"

echo "APP_PATH : $APP_PATH"

find "$APP_PATH" -name "*.framework" | while read FRAMEWORK;
do 
    echo "FRAMEWORK : $FRAMEWORK" 
    FRAMEWORK_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
    FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_NAME"
    echo $(lipo -info "$FRAMEWORK_EXECUTABLE_PATH")
    
    FRAMEWORK_TMP_PATH="$FRAMEWORK_EXECUTABLE_PATH-temp"
    
    case "${TARGET_BUILD_DIR}" in
        *"iphonesimulator")
            echo "No need to remove archs"
            ;;
        *)
            if $(lipo "$FRAMEWORK_EXECUTABLE_PATH" -verify_arch "x86_64") ; then
            lipo -output "$FRAMEWORK_TMP_PATH" -remove "x86_64" "$FRAMEWORK_EXECUTABLE_PATH"
            echo "x86_64 architecture removed"
            rm "$FRAMEWORK_EXECUTABLE_PATH"
            mv "$FRAMEWORK_TMP_PATH" "$FRAMEWORK_EXECUTABLE_PATH"
            fi
            ;;
    esac
    
    echo "Compelte : $(lipo -info "$FRAMEWORK_EXECUTABLE_PATH")"
    
done

그리고 위와 같이 Shell Script를 추가해줍니다.

위와 같이 작업을 하면 Test Flight에 배포가 완료가 될 것입니당~~~!!!

 

** 참고 사이트  ** 

TestFlight에 앱 배포 

https://sodevly.github.io/react-native-upload-app-on-testflight/

 

iOS앱 TestFlight에 배포하기

SoDevly의 개발 블로그

sodevly.github.io

 

App Icon 오류 

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=websearch&logNo=221110556257 

 

[아이폰] Info.plist 파일에 CFBundleIconName 설정 방법

Info.plist 파일에 CFBundleIconName 설정 방법은 다음과 같습니다. * "Icon Name" key 를 추...

blog.naver.com

https://stackoverflow.com/questions/46216718/missing-cfbundleiconname-in-xcode9-ios11-app-release

 

Missing CFBundleIconName in Xcode9 iOS11 app release

I'm struggling to release a new version of our app using Xcode 9 built with iOS 11 SDK. Archiving and uploading the binary goes well without any issue. The build appears in iTunes Connect under Act...

stackoverflow.com

 

X86 아키텍트 제거 

https://zetal.tistory.com/entry/App-Store-Connect-Operation-Warning

 

App Store Connect Operation Warning

외부 SDK를 프로젝트에 임포트하고 개발 중이었습니다. 빌드도 잘되고 실기기에서 디버깅도 잘되고 문제가 없어 보였습니다. 혹여나 배포하는 과정에서 에러가 발생하지 않을까 테스트플라이트

zetal.tistory.com

https://swift-it-world.tistory.com/36

 

iOS 네이버맵 SDK i386, x86_64 제거

iOS 네이버맵 SDK 추가 후 앱스토어에 배포할 때 i386, x86_64 아키텍쳐를 지원하는 문제가 있었습니다. i386, x86_64는 시뮬레이터 아키텍쳐로 아카이브 시 불필요한 아키텍쳐입니다. NMapsMap.framework 파

swift-it-world.tistory.com

 

수출규제 

https://green1229.tistory.com/206

 

TestFlight 업로드 시 수출규정 관련 문서 누락 메시지 해결하기

안녕하세요. 그린입니다🟢 이번 포스팅에서는 앱 심사를 하기 전 TestFilght에 업로드 할때 수출규정 관련 문서 누락되었다는 메시지를 해결해보겠습니다🙌 (아주 간단하고 짧습니다..!) 개발자

green1229.tistory.com

 

테스터 추가 

https://devparklibrary.tistory.com/43

 

[유니티 / iOS] TestFlight 로 업로드한 앱 테스트 하기

App Store Connect에 앱을 업로드 했다면 출시 하기 전에 TestFlight 를 통해 테스트를 할 수 있습니다. App Store Connect에서 업로드한 앱에 TestFlight를 선택합니다. 업로드한 빌드가 있을경우 위 스샷과 같

devparklibrary.tistory.com

 

Shell Script 

while문 다중 결과 

https://the-dev.tistory.com/14

 

[ShellScript] while문을 이용한 다중 결과 반복 처리

안녕하세요. 개발개입니다. 이번 글에서는 1) 파일을 라인 단위로 읽은 결과나 2) 명령어 처리 결과에 대한 다중 결과를 while 문을 통해 반복 처리하는 방법에 대해 알아보도록 하겠습니다. 오타,

the-dev.tistory.com

Info.plish 내용 읽기

https://stackoverflow.com/questions/4328501/how-to-read-plist-information-bundle-id-from-a-shell-script

 

How to read plist information (bundle id) from a shell script

I'd like to write a script that can read info like Bundle Identifier or maybe version number from the Info.plist of the app. Xcode doesn't seem to give that information in it's environment variable...

stackoverflow.com

case - in 

https://codechacha.com/ko/shell-script-case/

 

Bash Shell - Case 조건문

Bash shell script의 Case 조건문에 대해서 알아보겠습니다. Case는 다른 언어의 Switch-Case 와 같은 문법입니다. 다음과 같이 Case를 이용하여 var에 해당하는 문자열을 출력할 수 있습니다. 다음은 User Input

codechacha.com

 

728x90
반응형

댓글