React-native 공식 문서를 보고,,
이렇게 expo 로 설치하는 방법을 확인하고 그렇게 진행을 했다.
근데 Xcode 에서 ios 핸드폰 렌더링 화면을 보고 싶어서 연동을 해보니까, 다음과 같은 문제를 확인할 수 있었다.
문제상황.
1️⃣ Xcode 에서 나의 프로젝트가 열리지 않음.
2️⃣ 열ㄹ지 않는 이유는 프로젝트 폴더 내에 .xcodeproj 또는 .xcworkspace 파일이 없거나 손상되었을 가능성이 있음.
3️⃣ 해당 파일을 다시 세팅하기 위해서는 ios 폴더 안에서 pod install 를 해야함.
4️⃣ 음.. 근데 내 프로젝트는 Ios 폴더 자체가 없음.
이 문제를 계속 확인해보다가, 내가 react-native init으로 프로젝트를 생성하지 않고, Expo를 사용해서 설치했기 때문인가? 라는 의문이 들었다.
이에 대해 검색해보니, 다음과 같은 내용을 확인할 수 있었다.
알게된 사실.
📌 Expo를 사용하고 있다면, ios 폴더가 기본적으로 존재하지 않음!
Expo에는 두 가지 워크플로우가 존재하는데, 내가 사용한 것은 Managed Workflow였다.
- react-native init을 사용하면 Bare Workflow 방식으로 네이티브 코드(ios, android 폴더 포함)가 생성됨.
- 반면, Expo는 기본적으로 “관리형(Managed) 워크플로우”를 사용하며 ios 및 android 폴더가 없음.
- 즉, expo init으로 생성한 프로젝트는 기본적으로 iOS 및 Android 폴더가 포함되지 않는 것이 정상.
👉 따라서 내 프로젝트에서 ios 폴더가 없는 것은 정상적인 동작이었다.
package.json에서 Expo 패키지가 존재하는지 확인하면, 현재 프로젝트가 Expo Managed Workflow인지 쉽게 알 수 있다.
cat package.json | grep "expo"
✔️ 만약 "expo" 관련 패키지가 포함되어 있다면, ios 폴더가 없는 것이 정상적인 상태다.
해결하려면?
📌 Expo 프로젝트에서 ios 폴더를 생성하려면 expo prebuild 명령어를 실행해야 함.
iOS 폴더가 필요하다면, Expo 프로젝트를 Bare Workflow로 전환해야 한다.
이를 위해 expo prebuild 명령어를 실행하면 된다.
npx expo prebuild
📌 이 명령어를 실행하면 다음 작업이 수행됨:
- ios 및 android 폴더 자동 생성
- expo 관련 네이티브 설정 적용
다음과 같이 ios 파일이 생성 되는 것을 확인할 수 있었다.
React-native 공식 문서를 보고,,
이렇게 expo 로 설치하는 방법을 확인하고 그렇게 진행을 했다.
근데 Xcode 에서 ios 핸드폰 렌더링 화면을 보고 싶어서 연동을 해보니까, 다음과 같은 문제를 확인할 수 있었다.
문제상황.
1️⃣ Xcode 에서 나의 프로젝트가 열리지 않음.
2️⃣ 열ㄹ지 않는 이유는 프로젝트 폴더 내에 .xcodeproj 또는 .xcworkspace 파일이 없거나 손상되었을 가능성이 있음.
3️⃣ 해당 파일을 다시 세팅하기 위해서는 ios 폴더 안에서 pod install 를 해야함.
4️⃣ 음.. 근데 내 프로젝트는 Ios 폴더 자체가 없음.
이 문제를 계속 확인해보다가, 내가 react-native init으로 프로젝트를 생성하지 않고, Expo를 사용해서 설치했기 때문인가? 라는 의문이 들었다.
이에 대해 검색해보니, 다음과 같은 내용을 확인할 수 있었다.
알게된 사실.
📌 Expo를 사용하고 있다면, ios 폴더가 기본적으로 존재하지 않음!
Expo에는 두 가지 워크플로우가 존재하는데, 내가 사용한 것은 Managed Workflow였다.
- react-native init을 사용하면 Bare Workflow 방식으로 네이티브 코드(ios, android 폴더 포함)가 생성됨.
- 반면, Expo는 기본적으로 “관리형(Managed) 워크플로우”를 사용하며 ios 및 android 폴더가 없음.
- 즉, expo init으로 생성한 프로젝트는 기본적으로 iOS 및 Android 폴더가 포함되지 않는 것이 정상.
👉 따라서 내 프로젝트에서 ios 폴더가 없는 것은 정상적인 동작이었다.
package.json에서 Expo 패키지가 존재하는지 확인하면, 현재 프로젝트가 Expo Managed Workflow인지 쉽게 알 수 있다.
cat package.json | grep "expo"
✔️ 만약 "expo" 관련 패키지가 포함되어 있다면, ios 폴더가 없는 것이 정상적인 상태다.
해결하려면?
📌 Expo 프로젝트에서 ios 폴더를 생성하려면 expo prebuild 명령어를 실행해야 함.
iOS 폴더가 필요하다면, Expo 프로젝트를 Bare Workflow로 전환해야 한다.
이를 위해 expo prebuild 명령어를 실행하면 된다.
npx expo prebuild
📌 이 명령어를 실행하면 다음 작업이 수행됨:
- ios 및 android 폴더 자동 생성
- expo 관련 네이티브 설정 적용
다음과 같이 ios 파일이 생성 되는 것을 확인할 수 있었다.