[Expo][react-native] Expo EAS Deploy, Build(android, ios)

binary_rho·2023년 9월 26일
6

fitnee

목록 보기
3/5
post-thumbnail

eas build에 대한 정보가 부족한 것 같아서 내가 정리한 노션을 블로그에 공유하려고 한다.

EXPO deploy

Building Standalone Apps(expo build)

Building Standalone Apps

이건 더 이상 사용하지 않는다.

EAS

yarn global add eas-cli

Create your first build

Expo Application Services (EAS)

app.json

IOS

"bundleIdentifier": "co.gpthealth.fitnee", 
			"buildNumber": "1.0.0"

Android

"package": "co.gpthealth.fitnee",
			"versionCode": 1,

bundleIdentifier는 앱이 가져야 하는 고유한 이름. 보통은 회사의 도메인 이름과 앱의 이름을 적는다. buildNumber는 버전을 나타낸다. 새로운 앱을 빌드할 때마다 숫자가 하나씩 올라간다. expo는 업데이트 되므로 많이 빌드할 일 없음. 업데이트는 publish하면 된다.

expo build:ios 명령어는 2023년 1월 4일부터 사용이 중단됐다. 대신 eas build를 사용하여 iOS 앱을 빌드할 수 있다. 이를 위해 eas-cli 패키지를 설치해야 한다.

#npm install -g eas-cli
yarn global add eas-cli

#설치 후 로그인(엑스포 아이디로 하면 됨)
eas login

#로그인 성공후 프로젝트 구성
eas build:configure

eas build:configure 이 명령어는 첫 빌드에만 사용하고, 이후에는 expo build:{platform} --config app.production.json 과 같은 명령을 사용해야한다.

Configure EAS Build with eas.json

자동으로 생성된 eas.json 파일을 사용해서 빌드환경을 구성할 수 있다.

내부 (테스트) 배포용 빌드 구성하기

아래와 같이 eas.json을 열고 내부배포용 빌드 프로필을 추가

{
  "build": {
    "preview": {
      "distribution": "internal"
    }
  }
}

빌드 종류

eas device:create
eas build:resign

#내부 빌드 프로필로
# preview 구성으로 android,ios 플랫폼에 대한 빌드 생성
eas build --profile preview --platform all

# preview 구성으로 ios 플랫폼에 대한 빌드 생성
eas build --profile preview --platform ios

# preview 구성으로 android 플랫폼에 대한 빌드 생성
eas build --profile preview --platform android

#Store용 빌드
eas build --platform android

eas build --platform ios

eas build --platform all 

#development 모드
eas build --profile development --platform ios

eas build --profile development --platform android

#시뮬레이터용 develpment 모드
eas build --profile development-simulator --platform ios

eas build --profile development-simulator --platform android

#xcode로 시뮬레이터 빌드
npx react-native run-ios

prebuild 이후에는 npm start를 사용할 수 없었고, 인앱결제를 적용한 이후에는 더 이상 expo start를 사용할 수 없어서 실기계와 같은 역할을 할 수 있게 해주는 develoment모드가 매우 중요했다. 나는 이상하게 npx react-native run-ios 명령어를 사용하면 오류가 너무 많이 생겨서 아무리 해결하려고 해도 불가능했다. 핸드폰에 앱을 설치하려해도 무결성 때문에 설치할 수 없다는 문구가 생기면서 이도 불가능했다. 이때 겨우 가능했던 것이 eas build --profile development-simulator --platform ios 시뮬레이터로 develoment 빌드 하는 것이었다. 아직도 정말 이유는 알 수 없지만... 많이 유용하게 사용가능하다.

참고로, Expo CLI가 지원하는 Node.js 버전은 16.x 이하기 때문에 16.x 버전을 사용하는 것이 좋다.

빌드가 완료되면 expo.io 에 올라간다. 그리고 그 파일을 다운받으면 된다.

코드를 가지고 새로운 번들을 expo publish하면, 그 내용이 앱에 들어간다. ⇒ Over the Air Update(OTAU). Release channel은 우리가 만든 앱의 서로 다른 버전들을 말하는데, 업데이트를 하려면

expo publish —release-channel <your-channel>

라고 하면 된다. < >은 깃허브의 브랜치 같은 것이다.

Increment the Expo SDK Version
Change anything under the `ios`, `android`, or `notification` keys
Change your app `splash`
Change your app `icon`
Change your app `name`
Change your app `owner`
Change your app scheme
Change your `facebookScheme`
Change your bundled assets under `assetBundlePatterns`

이 모든 경우에는 publishing이 아니라 새로 re-building 해야한다.

빌드 확인

Expo

EAS Submit

Submit to the Apple App Store

How to resolve EAS Build Expo Doctor error?

<빌드된 앱 업데이트>

Expo 프로젝트의 app.json 파일 또는 app.config.js 파일에서

"version" 필드를 원하는 버전으로 값을 수정

예를 들어, "version": "1.0.1"과 같이 버전 번호를 업데이트

변경 사항을 커밋하고 앱의 소스 코드와 함께 저장소에 푸시

Expo CLI에서 다음 명령을 실행하여 앱의 새 버전을 게시

expo publish

yarn add react-native-svg

EAS ID

"eas": {
        "projectId": "a9c237c7-a7f7-4d65-bf88-de7f15664409"
      }

서버랑 연결해주는 ID

EAS Update

터미널에 아래와 같이 명령어를 입력해 업데이트(publish)

eas update --branch branchName --message "write your message..."

명령어를 입력하면 dist 폴더가 생성 된 뒤 변경된 내용이 작성되고, branch에 변경된 내용이 적용되고, branch와 chennel이 연결되어 있기에 빠르게 변경사항이 적용된다.

참고 사이트

[expo] ios 빌드하기

[앱 배포] ReactNative로 개발 IOS 첫 빌드 및 배포 방법 정리

profile
tistory로 옮겨갔어요 .. ! https://2wlslog.tistory.com/

0개의 댓글