[React Native] 2. android 사용자의 ios 앱 개발기

임소현·2024년 9월 6일
0

React Native

목록 보기
3/17

앞서 말했듯, react native를 이용하면 하나의 코드로 android와 ios 모두 개발 가능하다. 하지만, 이 말이 정말로 하나의 코드가 모든걸 다 커버해줄 거라 생각한다면 android와 ios의 native적인 특성을 이해하지 못하고 있는 것이다. ( 내가 그랬다.)

react native라는 프레임워크를 정하기 전, react native와 관련된 다양한 포스팅을 읽어보았다. 그 중에서도 가장 인상깊었던 글은 react native나 flutter같은 프레임 워크도 native 지식이 정말로 많이 필요하다는 것이다. 그 글을 읽을 당시에는 대수롭지 않게 넘겼지만, 지금와서 다시 생각해보면 정말 그 말이 맞는지도 모르겠다.

나는 폰이 안드로이드 기종이라, 우선적으로 안드로이드 버전으로 모든 개발을 진행했었다. 처음에는 안드로이드와 ios 모두 빌드 세팅을 함께 하며 진행하였지만, 자연스럽게 둘 중 하나는 소홀해질 수 밖에 없었고, 난 폰이 안드로이드였고, ios는 방치될 수 밖에 없었다.

android 버전으로 앱을 만드는 것도 쉬운 일이 아니었다.

react native는 react 기반 코드를 작성하고, 그 코드를 native로 빌드함으로써 앱 개발을 할 수 있다.

하지만, 이 빌드는 알아서 되는 것이 아니다.

결국, 정말로 간단한 앱을 만들지 않는 이상, 여러가지 라이브러리나 추가 기능을 사용하게 될텐데, 이것과 관련된 모든 세팅을 개발자가 일일히 코틀린 파일에 직접 적용시켜줘야 한다.

그래서, 보통 쉽게 해결하지 못하는 에러들 중 대부분은 이렇게 네이티브와 관련된 에러들이었다. 보통 빌드 과정에서 나는 에러기 때문에, 화면으로 잘 보이지도 않고, 찾기도 힘들고, 앱 자체는 작동이 안되고,, 그래도 인터넷 상에서는 나처럼 함께 고통받는 rn 개발자들이 있어 외롭지는 않았다.

이제, 안드로이드로 웬만큼의 세팅을 하고, ios로 빌드를 도전해보았다.

ios를 해보니, android는 양반이었다.

애플은 굉장히 까다롭다. 시뮬레이터로는 앱 실행이 수월하게 잘 되는 편이지만, 실제 기기에서 테스트를 해보고 싶거나, 배포 버전으로 만들어야 할 경우, 반드시 XCode를 이용해야 한다.

android는 gradle을 사용하여 빌드를 진행하기에, 따로 android studio를 이용할 필요가 없었지만, 애플은 모든 최적화가 XCode로 되어있기 때문에, 사용하는 ide를 아예 바꿔서 진행해야 했다.

ios를 개발할 때 신경써야할 것은 세 가지이다.

왜 3가지로 정했냐면, 이 3박자가 정확히 맞아 떨어져야 에러 없이 앱을 테스트해 볼 수 있다.

  1. Apple Developer Program - Certificates, Identifiers & Profiles
    아마, 실제 기기를 이용하여 테스트해볼 경우, 반드시 확인해보아야 한다.
    특히, apple은 실제 기기에서 테스트해볼 경우, 기기를 등록하고, 다시 기기가 등록된 profile을 생성한 후, 이 profile이 적용된 app을 기기에 설치해야 앱이 실행된다. profile은 debug, release, app store 용 등 목적에 맞게 다양하게 생성 가능하다. 또, 추가로 고려할 점은 profile에 등록한 인증서와 xcode에서 앱에 등록한 인증서가 일치해야 된다는 점..

  2. XCode
    xcode에서 전체적인 앱 세팅과 빌드, 릴리즈 등을 실행 가능하다. 기기 등록도 xcode에서 진행하고, 앱 이름이나 아이콘 설정도 xcode에서 진행하면 된다. 주의할 점은 react native로 만든 앱 같은 경우, 프로젝트를 열 때 ios 폴더를 열어주어야 빌드가 제대로 된다. xcodeproj로 하면 안될 수도 있다..

RCTAppDelegate.h' file not found

위 에러는 ios 폴더를 루트 폴더로 프로젝트를 시작하지 않았기 때문에 상위 폴더에 있는 파일을 찾을 수 없어 발생하는 에러이다. 다시 ios 폴더를 루트 폴더로 설정해준다면 에러가 해결될 것이다!

  1. 실제 기기
    일단, ios는 실제 ios 기기를 소유하고 있지 않으면 굉장히 불편하다. 나도 처음 profile 설정할 당시 아이폰을 소유하고 있지 않았는데, 실제 기기가 없으면, 자동으로 xcode에서 해주던 세팅을 일일히 해야 하는 불편한 점이 있었다. 또, 테스트 해보려면 일단 무조건 하나는 있어야 한다.
    실제 기기에서도, 앱을 다운받아 설치하려면 프로필을 설치한 후, 설정을 해줘야 한다.

정리

적다보니 별로 정보를 줄만한 글은 되지 못한 것 같지만, 글에 작성하고 싶었던 부분은 react native도 결국은 native 개발이라는 점이다. 생각보다 앱과 웹의 차이는 개발할 때 더 크게 다가올 것이다. 그래도 하나의 코드로 ios와 android 모두 빌드가 가능한 상태를 만들어놓는다는 점은 정말 큰 장점이니, 만약 react native로의 개발을 고민중이라면 신중하게 생각해보길 바란다. react 개발과 native 개발하면서 겪을 수 있는 모든 issue를 해결해볼 수 있는 경험을 할 수 있다..

0개의 댓글