본문 바로가기
일지/헬키

헬키 개발일지 6. 2024 06 25 때 아닌 iOS Xcode 빌드하기

by 리나그(ReenAG) 2024. 6. 26.
728x90
반응형

기록을 위해서 적는다 개발 환경 세팅은 아무래도 미리 기록 안해두면 잊어버리는 경우가 잦아서...

특히 macbook가지고 하는건 처음이라 100% 하긴 해야할 듯하다.

 

1. expo ios 프로젝트 빌드를 한다.

npx expo prebuild --platform ios

 

2. expo 빌드 스크립트를 못 찾겠다는 버그가 뜰 때가 있다. readable 하지 않다나 뭐라나 ->

xcodeproj 파일을 연다음, build settings 에서 code sandboxing을 no로 바꾼다.

(다만 이후 대부분의 작업은 xcworkspace파일로 xcode를 이용합니다. xcodeproj로 열어도 제대로 앱 빌드가 되지 않습니다. 혹여나 sourcemap문제가 자주 발생한다면 자신이 다른 프로젝트 파일을 열지 않았나 확인해야 합니다.)

 

3. main.jsbundle 없다는 오류는 다음의 명령어로 생성(package.json에 등록하자.)

 

https://stackoverflow.com/questions/35354998/react-native-ios-app-not-showing-static-local-assets-images-after-deploying

 

react-native iOS app not showing static/local assets (images) after deploying

I have all my static images in a folder called "images" in the root of my project. However, after I run the following command to bundle my app, the app works but no image is shown. The command I u...

stackoverflow.com

 

npx react-native bundle --minify --entry-file='index.js' --bundle-output='./ios/main.jsbundle' --assets-dest='./ios' --dev=false --platform='ios'

 

4. 3의 명령어를 쓰면 asset과 bundle 된 파일 2개가 나오는데 copy bundle resources에 반드시"add other"로 추가한다.

 

(위 사진에는 main.jsbundle만 있는데 asset도 동일하게 추가, + -> add other 하면 된다.)

일단 이 방법을 이용하면 5번에서 release 모드로 세팅하지 않았을 경우 asset이 제대로 로딩되는 것을 확인할 수 있었다.

 

5. release build / debug build 전환을 위해서는 다음 메뉴를 쓴다.

이 안에서 메뉴를 뒤지다 보면 딱봐도 debug -> release로 변경가능한 것이 있다.

 

6. 문제는 갑자기 비슷한데 다른 오류가 발생해서 glb파일로의 접근을 막았다.

release 빌드를 했을 때, 이들이 asset을 찾는 경로는 완전히 바뀐다. 그게 뭘 의미하는 지는 모르겠지만 경로에 expo_internal이 포함되어 있고, 해싱된 .glb파일의 이름과 정확히 같은 게 eas update를 하면 생긴다는 것도 알아냈다. app.json에 

    "assetBundlePatterns": [
      "**/*.glb"
    ],

이런 걸 추가했는데... 그 이후로 eas update를 해서 생긴 dist 폴더의 assets안에 이거랑 정확히 같은게 생겼다. 다만 이게 xcode빌드에 영향을 줄 것 같진 않다만 단서는 나왔다.

 

그리고 예상치 못하게 새로운 스택에 관련한 단서를 하나 더 얻어냈다.

expo를 이용한다면 native 코드, app config와 app icon 등을 제외한 핵심 js 코드를 업데이트 시키는 것이 가능하다는 것이다. 맨날 스토어에서 다시 배포를 시키기 보다는 다시금 publish만 해서 사용자들의 코드를 수정해 줄 수 있다면 복잡함이 훨신 줄어들 것이다. 정말 아예 바뀌는건 모르겠지만.

 

이걸 알아낸건 좋은데... 어떻게 asset를 제대로 로드할 수 있을까... 

 

7. 이후 앱 배포가 가능하다.

https://reactnative.dev/docs/publishing-to-app-store

 

Publishing to Apple App Store · React Native

The publishing process is the same as any other native iOS app, with some additional considerations to take into account.

reactnative.dev

 

728x90
반응형