본문 바로가기
C.W.K.
Stream
Lesson 02 of 05 · published

iOS & Android: init과 dev

~14 min · tauri, mobile, ios, android

Level 0웹 관광객
0 XP0/56 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"모바일 init은 진짜 Xcode랑 Gradle 프로젝트를 만들어내. 네이티브 툴체인에서 벗어나는 게 아냐 — Tauri가 대신 운전대를 잡아주는 거지."

전제조건이 훨씬 무거워

데스크톱 Tauri는 가벼운 도구 몇 개면 되는데, 모바일은 네이티브 스택을 통째로 요구해. iOS엔 Mac이랑, Command Line Tools가 아니라 Xcode 앱 전체랑, CocoaPods랑, iOS용 Rust 타깃이 필요해. Android엔 SDK랑 NDK가 딸린 Android Studio랑, 환경 변수(ANDROID_HOME, NDK_HOME)랑, Android용 Rust 타깃이 필요하고. 타깃은 rustup target add로 넣어. 이 중 뭐 하나라도 빠뜨리는 게 첫 init이나 dev가 실패하는 흔한 이유야.

init이 플랫폼 프로젝트를 만들어

tauri ios init이랑 tauri android init이 (안에서 cargo-mobile2를 써서) 네이티브 프로젝트를 src-tauri/gen/apple이랑 gen/android 아래 만들어. 네 Tauri 앱을 감싸는 진짜 Xcode랑 Gradle 프로젝트야. 보통은 손대지 않지만, 플랫폼별 서명이랑 설정이 사는 곳이기도 해. gen/을 커밋할지(다시 만들 수 있지만 네가 손본 설정이 들어 있어) gitignore 하고 CI에서 다시 만들지, 작정하고 정해둬.

dev가 시뮬레이터나 실제 기기에서 돌아

tauri ios devtauri android dev가 앱을 빌드해서 시뮬레이터나 에뮬레이터, 또는 연결된 기기에 올려줘. 데스크톱에서 익숙한 그 프론트엔드 핫리로드까지 같이. 이게 네 모바일 개발 루프야. 첫 실행은 느리고(새 타깃을 컴파일하니까) 기기나 시뮬레이터를 고르고 서명 관련 물음에 답해야 할 수도 있어 — 근데 일단 돌기 시작하면 프론트엔드를 고칠 때마다 폰에서 데스크톱처럼 바로 갱신돼.

Code

타깃, init, dev·bash
# 모바일용 Rust 타깃 추가 (한 번).
rustup target add aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-ios
rustup target add aarch64-linux-android armv7-linux-androideabi \
  i686-linux-android x86_64-linux-android

# 네이티브 플랫폼 프로젝트 생성.
npm run tauri ios init
npm run tauri android init

# 시뮬레이터/에뮬레이터나 기기에서 실행 (데스크톱처럼 핫리로드).
npm run tauri ios dev
npm run tauri android dev

External links

Exercise

툴체인이 갖춰져 있으면 Rust 모바일 타깃을 넣고 tauri android init(Mac이면 ios init)을 돌린 다음, tauri android dev로 기존 앱을 에뮬레이터에 올려봐. 지금 스택을 다 깔 수 없으면 대신 플랫폼별 전제조건이랑, 모바일이 데스크톱보다 왜 더 많은 걸 요구하는지를 정리해서 적어. 어느 쪽이든 '모바일로 간다'는 게 세팅에서 뭘 요구하는지 알게 돼.
Hint
플랫폼 triple은 rustup target add로. iOS는 Xcode 전체 + CocoaPods, Android는 Android Studio SDK/NDK랑 ANDROID_HOME/NDK_HOME. 첫 dev 실행은 새 타깃을 컴파일하니까 기다릴 각오를 해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.