[Flutter] Apple iOS 패키징과 Testflight 배포 방법

겨레·2024년 10월 23일

iOS, Android 중에서 나는 iOS 배포를 담당하게 되었다. 패키징, 배포하는 시도 자체를 처음 해 보는 거라서 열심히 서치해봤다.

슬프게도 혼자 시도했던 결과는 실패...!
'flutter_inappwebview'와 관련된 오류가 발생했더랬지.
내가 잘하지 못했던 것도 있었고, OS랑 플러터 버전과도 관련있는 것 같았다.

팀장님에게 배운 뒤, 혼자 시도해보고 기록한 과정을 다시 정리해보았다.



패키징이란, Flutter로 개발된 애플리케이션을 iOS, Android 플랫폼에서 실행 가능한 형식으로 패키징하는 과정을 말한다.


📍 Flutter iOS 패키징 프로세스


📍 iOS 패키징 과정에서 중요한 점

  • Apple Developer 프로그램에 등록해야만 실제 기기에서 앱을 테스트하거나 배포할 수 있다.
  • 앱 서명과 프로비저닝 프로파일 설정은 필수며, 이 부분은 Xcode 내에서 관리된다.
  • Flutter 프로젝트는 Android와 iOS를 동시에 지원하지만, iOS 패키징을 위해서는 Xcode와 같은 iOS 전용 툴을 사용해야 한다.


Testflight란, Apple이 제공하는 앱 테스트 플랫폼으로, 개발자들이 iOS, iPadOS, watchOS, tvOS, macOS 앱을 테스트하거나 외부 사용자들에게 배포할 수 있도록 도와주는 도구이다.

TestFlight는 주로 베타 버전의 앱을 배포하는 데 사용되며, 앱이 출시되기 전에 버그를 찾거나 피드백을 받을 수 있는 중요한 단계라고 할 수 있다.


📍 Testflight 배포 방법

① 터미널 창에서 flutter clean 입력

$ flutter clean 

그렇다면, flutter clean을 하는 이유는 뭘까?

  • 이전 빌드의 잔여물이나 캐시로 인해 발생할 수 있는 문제 방지
  • 앱의 정확한 동작 확인

즉, 빌드 환경을 깨끗하게 유지하는 데 있다고 볼 수 있다.


② 터미널 창에서 flutter pub get 입력

$ flutter pub get

기껏 lutter clean을 해 놓고, 왜 다시 flutter pub get을 하는걸까? flutter clean 후 삭제된 의존성 파일들을 다시 가져오기 위함이다.

flutter clean을 실행하면 코드에 빨간줄이 엄청 뜨는데 이런저런 파일들이 삭제됐기 때문이다. 검색해보니 빌드 캐시, 프로젝트의 임시 파일들, pubspec.lock 파일을 포함한 의존성 관련 파일들이 삭제될 수 있다고 한다.


③ 터미널 창에 아래와 같은 명령어 입력

$ cd (경로)
$ rm -rf Pods
$ rm -rf Podfile.lock
$ pod install

이러한 과정을 거치는 이유는 뭘까? iOS 프로젝트에서 CocoaPods 관련 문제를 해결하거나 Pods 설정을 초기화하고 새롭게 설정하기 위함이다.

flutter clean과 flutter pub get 과정을 거친 이후에도 여전히 iOS 빌드에서 문제가 발생할 수 있다. 이러한 명령어들을 통해서 CocoaPods의 종속성과 캐시를 정리하고 새롭게 재설치하는 과정을 거친다.


④ Xcode로 Runner.xcworkspace 열기
Xcode → ios → Runner.xcworkspace → Runner

⑤ 필요한 사항 체크 및 명시

  • Background Mode의 info에 목적을 명시해준다.

  • 버전 명시
    : Version, Build Settings의 Markting version, pubspect.yaml의 version에 명시


⑥ Product → clean Build Folder

⑦ Product → Build

⑧ Product → Archive(아카이빙: 서버에 올리는 과정)

⑨ Distribute App → AppStore Connect


profile
호떡 신문지에서 개발자로 환생

0개의 댓글