expo로 apk 파일 빌드

yeni·2025년 10월 30일

react-native

목록 보기
1/1

React native와 expo로 앱 개발 후 안드로이드 폰으로 실행시키기 위해 apk 파일을 추출할 목적으로 빌드를 시작했다.

EAS Build 사용

1. EAS CLI 설치

npm install -g eas-cli를 입력하세요

2. Expo 계정 로그인

EAS CLI를 Expo계정과 연결한다.

eas login

3. 프로젝트 설정

프로젝트 루트 디렉터리에서 다음 명령어를 실행하여 eas.json 설정 파일을 생성한다. -> 그 전에는 eas.json 파일이 아예 없음

4. eas.json 파일 수정(APK 빌드 설정)

기본적으로 EAS는 Google Play Store 배포용인 .aab 파일을 생성하려고 한다. APK 파일을 받으려면 eas.json 파일에서 빌드 프로필을 수정해야 한다고 한다.

eas.json 파일을 열고, build 섹션 안에 있는 프로필(예: preview 또는 production)에 android.buildType을 apk로 설정한다.

+build type 설정해주면서 별도로 만든 env파일을 eas.json안에 넣어줘야 한다고 해서 추가해줬음. secret 변수들은 더 안전한 방법으로 저장해줘야 함.

5. 빌드 실행

이제 설정한 프로필로 빌드를 시작한다.

# 'preview' 프로필을 사용하는 경우
eas build -p android --profile preview

빌드가 시작되면 expo서버가 클라우드에서 빌드를 진행해서 별도로 복잡한 개발 환경을 구축할 필요가 없다고 한다.
-> 빌드 완료되면 터미널에 다운로드 URL이 만들어지고, 클릭하면 .apk 파일 다운받아서 사용하면 되는데,,,

여기서부터 진짜 시작.
서버를 http로 개발했는데 안드로이드 9이후부터는 보안상 이유로 http를 막는다고 한다. 그래서 가장 좋은 방법은 서버를 https로 개발하는 거지만, 이미 엎질러진 물. https로 바꿀 수 없어 다른 방법을 찾아보았다.

안드로이드 에뮬레이터로 실행해본 결과 카카로 로그인 단계에서{net::ERR_CLEARTEXT_NOT_PERMITTED}$ 뜨면서 백엔드로 아예 연결이 안됨.

찾아보니 app.json"usesCleartextTraffic": true을 추가해줘야 한다고 했다.

근데 계속 에러남..


그래서 계속 expo-doctor로 개발 환경에서 충돌이나 잘못된 설정 없는지 확인해보기 시작했다.

[해결방법 1]

slug 불일치 문제를 해결해주었다.
프로젝트의 슬러그 이름이 EAS 서버에 저장된 프로젝트이름은 CloudBread_client였고, app.json의 "slug" 필드 값은 다른 거여서 여기서 EAS가 인식을 잘 못한 것 같다.

  • 근데 또 name,slug,scheme 를 다 똑같이 맞추니까 scheme는 소문자만 사용가능한다고 한다.. 그래서 EAS에서 이름을 바꾸던지 나처럼 slug와 scheme를 다르게 작성해주면 될듯

[해결방법 2]
그런데 해결 안 되어서 또 여기저기 뒤져보니 "usesCleartextTraffic": true 을 작성하는 곳도 잘못된 거 같다. "android":{} 부분에 넣는 줄 알았는데 또 아니래요,,

[해결방법 3]
근데 여기서 중복 의존성 에러가 몇 개 있었다.
그래서 설치 제거하고 다시 설치하면서 패키지 트리 정리함

몇 번 이 과정 반복하니까,,

성공했다,,

profile
끄적여보는 나의 코딩 기록일지

0개의 댓글