한줄 총평
: 누구인가? 누가 이걸 쉽다고 하였느냐?
시리즈 (일반 : 2번 ~ 4번 | 심화 : 5번)
- 빌드 및 배포 전체메모 : https://radpro.tistory.com/461
- 빌드 준비 (Google 설정 등) : https://radpro.tistory.com/464
- 일반 로컬 빌드 (Expo 빌드) 및 Google Play 배포 : https://radpro.tistory.com/466
- EAS(Expo Application Sevice) 자동화 : 현재 글
- Git Actions 연결 : https://radpro.tistory.com/465
목표
: EAS 자동화를 이용해 명령어를 이용한 CI/CD를 완성한다. (Expo를 이용해 프로젝트를 완수했을 때만 가능)
준비사항
1. 빌드준비과정을 모두 완수해야 한다. [시리즈 중 빌드 준비 글 참고]
2. 일반 빌드 후 Google Play Developer Console을 이용해 최초 1회 배포해야한다 (ver 1 배포) [일반 로컬 빌드 글 참고]
3. 선택사항 : Git Actions를 이용한 자동화 [Git Actions 연결글 참고]
방법
1. EAS CLI 설치 및 Expo계정 인증
npm install -g eas-cli
eas login
2. 로컬 프로젝트 루트경로에 eas.json을 만들어준다
/* 예시 코드 */
{
"cli": {
"version": ">= 3.1.1"
},
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"preview": {
"distribution": "internal"
},
"production": {}
},
"submit": {
"production": {
"android": { // <= 안드로이드 빌드 설정
"serviceAccountKeyPath": "../path/to/cryptic-hawk-000000-000000000000.json", // <= cryptic으로 시작하는 서비스 어카운트 키 패스 JSON 파일명 입력 (Google service 키JSON과 다름)
"track": "internal"
},
"ios": { // <= ios 빌드시 설정
"appleId": "애플_ID",
"ascAppId": "애플_PW"
}
}
}
}
3. app.json에서 버전을 수정한다 (Google play에 등록된 버전과 다르게 등록해야함, 안그럼 아래와 같은 에러 발생)
...
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/아이콘 설정.png",
"backgroundColor": "#FFFFFF"
},
"package": "com.본인기관명.어플명",
"versionCode": 2, // <= 버전 수정 위치
"permissions": [
"CAMERA",
"READ_EXTERNAL_STORAGE"
]
},
...
Waiting for submission to complete. You can press Ctrl+C to exit.
✖ Something went wrong when submitting your app to Google Play Store.
You've already submitted this version of the app.
Versions are identified by Android version code (expo.android.versionCode in app.json).
If you're submitting a managed Expo project, increment the version code in app.json and build the project with eas build.
Learn more: https://expo.fyi/bumping-android-version-code
4. expo 빌드완료 후, Expo.dev에서 summit코드 받아 submit과정 시작 (혹은 eas 빌드 중 택 1)
1) 일반 expo 방법
/* 빌드 명령어: 명령어 실행 후 bundle로 빌드 */
expo build:android
/* Submission details 링크 접속 후 Options -> Submit to an app store */
/* 아래와 같은 명령어가 나오며, 로컬 프로젝트에서 실행 */
/* 이미 eas 클라이언트가 설치되어 있다면 두번째 명령어만 실행 */
npm install --global eas-cli
eas submit --platform android --url https://exp-shell-app-assets.s3.us-west-1.amazonaws.com/android/%40neoguri/dsplayer-00000000000000000000000000000000-signed.aab
2) eas 빌드 방법
// eas로 빌드 = 서버에서 빌드 및 배포 (안드로이드 | ios | 전체 | 혹은 eas build 후 선택 가능)
eas build --platform android
eas build --platform ios
eas build --platform all
5. 키JSON 입력
: 4번과정을 입력하면, 터미널에 아래와 같은 키JSON 입력을 요청하는 안내가 나온다.
A Google Service Account JSON key is required to upload your app to Google Play Store.
If you're not sure what this is or how to create one, learn more: https://expo.fyi/creating-google-service-account
√ Path to Google Service Account file:
: 아래의 과정에 따라 키JSON파일을 다운받은 후 프로젝트 루트경로에 넣어주고, 해당 파일명을 입력해준다.
*API 키 종류가 많아 헷갈릴 수 있으니 아래의 순서로 들어가 발급받은 키JSON파일을 사용하면된다.
1) Google Play Developer console
2) 모든 앱
3) 사이드 바에 있는 설정 => API 액세스
4) API키 보기
5) 서비스 계정 => 이메일 클릭
6) 상단의 키 탭 => 키 추가 => JSON 생성

6. 만약 JSON 키 파일을 잘못 입력했을 경우, Expo.dev홈의 Credencial탭에서 해당 프로젝트를 선택 후 변경 가능
1) Google Service Account Key에서 등록된 파일을 지우고 새로 업로드하면됨
2) 만약 FCM(Firebase Cloud Messaging)을 사용한다면, Firebase에서 발급받은 토큰값을 업로드해줘야 함
(JSON형식의 키파일을 받아 올릴 수도 있으나, FCM v1이 지원안된다는 에러가 발생하므로 토큰입력 권장)
(Firebase 홈 => 해당 프로젝트 => 프로젝트 개요 옆 설정아이콘
=> 프로젝트 설정 => 클라우드 메시징 => 서버키 토큰)

'React-native > 정리' 카테고리의 다른 글
[Expo] Git Actions 연동 [5/5] (선택사항) (0) | 2023.01.01 |
---|---|
[Expo] 빌드 준비 (Google 설정 등) [2/5] (0) | 2023.01.01 |
[Expo] 빌드 및 배포 [1/5] (1) | 2023.01.01 |
Youtube search 기능 구현하기 (진행중) (0) | 2022.06.19 |
iframe API - videoID로 연속재생 구현하기 [2편 임의의 keys로 된 JSON] (0) | 2022.06.17 |