[React Native Expo] EAS update로 코드푸시하기

JS/React Native Expo · 2024. 1. 24. 11:42
728x90

앱은 뭔가 수정을 하면 재배포를 해야한다는 단점이 있다

하지만 RN의 장점이 바로 재배포없이 수정이 가능한 코드푸시 기능이 있는데

expo에서는 EAS update기능으로 지원한다 (아마 cli에서는 따로 라이브러리설치하고 뭐 가입하고 해야했던거로 기억하는데 꽤 복잡했음)

반면 expo버전에서는 update로 꽤나 쉽게 적용이 가능하다(단점이 횟수제한있다는거지만.. 횟수 넘어가면 유료로 돈받던가 그럼ㅎ;)

 

npx expo install expo-updates

일단 설치

 

// app.js나 app/_layout.tsx
import * as Updates from "expo-updates";
async function onFetchUpdateAsync() {
  try {
    const update = await Updates.checkForUpdateAsync();
    if (update.isAvailable) {
      await Updates.fetchUpdateAsync();
      await Updates.reloadAsync();
    }
  } catch (error) {
    alert(`Error fetching latest Expo Update : ${error}`);
  }
}
useEffect(() => {
  onFetchUpdateAsync();
}, []);

//app.json
"plugins": [
  [
    "expo-updates",
    {
      "username": "expo 계정아이디"
    }
  ]
],
"runtimeVersion": {
  "policy": "appVersion"
},
"updates": {
  "url": "https://u.expo.dev/expo APP ID값"
}

여기서 expo APP ID값은 expo 사이트 들어가서 왼쪽 네비에 overview 에 들어가면

요 ID 부분에 있는걸 넣으면된다

 

그러고 빌드를 해준 후 배포하면 그 뒤로 수정사항이 있을때마다

eas update --branch preview --message "Updating the app"

이렇게 터미널에 입력해주면 코드푸시가 가능하다

참고로 빌드 채널을 preview로 해서 저렇게 적었지 채널명이 다르면 다르게 적어야한다

 

그리고 주의할점!!

보통 재배포를 하게되면 app.json에서  version을 올려줄거다 (1.0.0이면 1.0.1 이런식으로 변경)

근데 코드푸시의경우에는 이전에 배포했던 버전과 동일해야 코드푸시가 적용된다

이것도 재배포니까 버전 올려줘야겠지? 하고 적용하면 ㅇㅇ적용안된다 재배포개념이 아님

 

그리고 코드푸시시에 js쪽 기능은 맘대로 충분히 변경이 가능하지만 네이티브쪽 코드(prebuild같은경우) 를 건들게돼면

재배포신청을 다시 해줘야한다..

728x90
Copyright © Nana
levup