React native와 expo로 앱 개발 후 안드로이드 폰으로 실행시키기 위해 apk 파일을 추출할 목적으로 빌드를 시작했다.
npm install -g eas-cli를 입력하세요
EAS CLI를 Expo계정과 연결한다.
eas login
프로젝트 루트 디렉터리에서 다음 명령어를 실행하여 eas.json 설정 파일을 생성한다. -> 그 전에는 eas.json 파일이 아예 없음
기본적으로 EAS는 Google Play Store 배포용인 .aab 파일을 생성하려고 한다. APK 파일을 받으려면 eas.json 파일에서 빌드 프로필을 수정해야 한다고 한다.
eas.json 파일을 열고, build 섹션 안에 있는 프로필(예: preview 또는 production)에 android.buildType을 apk로 설정한다.

+build type 설정해주면서 별도로 만든 env파일을 eas.json안에 넣어줘야 한다고 해서 추가해줬음. secret 변수들은 더 안전한 방법으로 저장해줘야 함.
이제 설정한 프로필로 빌드를 시작한다.
# '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가 인식을 잘 못한 것 같다.
[해결방법 2]
그런데 해결 안 되어서 또 여기저기 뒤져보니 "usesCleartextTraffic": true 을 작성하는 곳도 잘못된 거 같다. "android":{} 부분에 넣는 줄 알았는데 또 아니래요,,
[해결방법 3]
근데 여기서 중복 의존성 에러가 몇 개 있었다.
그래서 설치 제거하고 다시 설치하면서 패키지 트리 정리함
몇 번 이 과정 반복하니까,,
성공했다,,
