프론트엔드 개발자 중규리 입니다 ദി ᷇ᵕ ᷆ ) 자세히보기

개발/frontend

[EAS-iOS Build] expo 빌드 + 제출 과정에서 발생하는 다양한 에러 대응 방법

중규리 2024. 5. 5. 18:11

🚨 에러 종류

EAS 빌드 과정 중 발생한 에러

 

[Application Loader Error Output]: Asset validation failed SDK version issue. This app was built with the iOS 16.1 SDK. All iOS and iPadOS apps must be built with the iOS 17 SDK or later, included in Xcode 15 or later, in order to be uploaded to App Store Connect or submitted for distribution.

Fastlane pilot failed fastlane exited with non-zero code: 1 Failed to submit the app to the store

 

-

 

Build failed: Your project requires a newer version of CocoaPods

 

-

 

#  from /Users/expo/workingdir/build/TERMTERM/ios/Podfile:47

#  -------------------------------------------

# >    use_react_native!(

#      :path => config[:reactNativePath],

#  -------------------------------------------

 

-

 

Error: Cannot find module 'string-width'

 

-

 

const stringWidth = require('string-width');

 

 

등등...

 

발생 환경

Expo SDK 46 

 

원인과 해결 방법

우선 Expo SDK는 iOS SDK와 직결되기 때문에 최신 버전을 따라가는게 베스트다.

만약 deprecated된 버전을 이용한다면 최신 버전의 시뮬레이터에서 실행이 안되고, 빌드가 되더라도 appstoreconnect에 submission할 수 없다.

 

최신 버전 업데이트 방법은 아래와 같다.

 

Upgrade Expo SDK

Learn how to incrementally upgrade the Expo SDK version in your project.

docs.expo.dev

웬만하면 문서의 모든 절차를 따라해서 모듈의 버전까지 잘 맞춰주도록 한다.

 

이후 SDK를 업데이트하면, 각종 에러와 만나게 될 것이다. 특히 모듈을 덕지덕지 가져다 쓴 프로젝트는 에러의 정도가 심할 것...

 

그게 바로 저예요...

 

여튼 이때 각종 문제가 발생하고 로그 길이는 몇만줄이고... 멘탈 가루가 되지만 빌드를 웹에 계속 올려서 돌려보지 말고 아래 순서를 따라 로컬에서 문제를 먼저 파악하는게 좋다.

  1. npx react-native-clean-project
  2. npx expo-doctor
  3. npx expo install --fix
  4. npx expo prebuild --clean
  5. yarn ios

이 과정에서 에러가 뜨면 웬만하면 eas에서도 빌드가 안된다.

여기서 발생하는 에러를 잘 처리하면, 웬만하면 빌드가 된다.

 

 

SDK 49 - eas build ios failed on "run fastlane" · Issue #2109 · expo/eas-cli

Build/Submit details page URL https://expo.dev/accounts/johnfa/projects/carles-connect/builds/5f04dc92-7dbc-42c8-9f9f-bb1dac0c7b2c#run-fastlane Summary We started a new project with expo 49. It err...

github.com

SDK 업데이트하면서 빌드 지옥에 빠진 사람들이 아주 많다...

 

나같은 경우에는 string-width?라는 모듈에서 문제가 있었는데, 해당 모듈은 직접 사용한게 아니라 다른 모듈들의 peer 종속성이라 자동으로 설치된 경우여서... 뭐 내가 임의로 코드를 건들 수 있는 상황이 아니기 때문에 에러를 해결하는 데에 더더 더 더더더더더더 더더더더더더 오래걸렸다.

 

임의로 할 수 있는 해결 방법은 아래와 같다.

 

1. package.json에 아래 문구 추가

  "resolutions": {
    "jackspeak": "2.1.1"
  }

2. yarn.lock 제거

3. yarn install 실행

 

이후 다시 eas 빌드를 돌려보면 정상적으로 수행된다.

대신 시간이 엄청 오래걸리거나, 

 

We've lost connection to the worker.

Two common reasons:
1. Worker ran out of memory.
   Try running your build on a large worker. Learn more at https://docs.expo.dev/build/eas-json/#selecting-resource-class
2. Worker experienced a network issue.
   This is most likely an intermittent problem. Try running the build again.

 

라면서 빌드를 취소해버리고 돈내라고 하는 경우가 있는데

침착하게 캐시지우고 rebuild해주면 운좋게 성공할 수 있다... 돈 안낼거면 CPU 안터지는 시간에 운에 기대서 빌드 돌려야할둣^^,,

 

후기

더이상 expo go와 EAS를 사용할 일은 제 인생에 없을 것입니다.