Flutter로 Mac 없이 iOS 앱 개발 및 배포
게시 됨: 2019-08-23편집자 참고 사항: Miquido에서는 Flutter 애호가 커뮤니티를 지원하며 Flutter 네트워크 전반에 걸쳐 지식 공유에 기여하게 되어 항상 기쁩니다. 오늘, 우리는 Flutter로 iOS 앱을 개발하고… macOS 장치 없이… 그것의 모든 조각을 즐기십시오!
대부분의 경우 iOS 앱은 macOS 시스템에서 개발 및 배포됩니다. macOS 없이 iOS 플랫폼용 앱을 개발하는 것은 상상하기 어렵습니다. 하지만 Flutter와 Codemagic을 함께 사용하면 macOS를 사용하지 않고도 iOS 앱을 개발하고 배포할 수 있습니다. 이전 게시물에서 Mac 없이 iOS 앱을 코드 서명하는 과정을 설명했습니다. 이 게시물에서는 Linux에서 Flutter 앱을 개발하고 Codemagic으로 사용자 지정/수동 코드 서명을 사용하여 Comagic-Demo 앱 예제에서 앱 서명을 완전히 제어하는 프로세스를 자세히 다룰 것입니다.
Linux에서 Flutter 앱 개발
Flutter는 동일한 소스 코드에서 iOS 및 Android 앱을 개발할 수 있는 크로스 플랫폼 모바일 애플리케이션 개발 프레임워크입니다. 그러나 iOS 앱 개발에 사용되는 Apple의 기본 프레임워크는 Linux 또는 Windows와 같은 다른 플랫폼에서 컴파일할 수 없습니다. 기본 iOS 구성 요소를 사용하려면 iOS 앱을 개발하고 배포하려면 macOS 또는 Darwin이 필요합니다. 그러나 Flutter와 같은 기술을 통해 Linux 또는 Windows에서 플랫폼 간 앱을 개발한 다음 Codemagic CI/CD 솔루션을 사용하여 Google Play Store 또는 Apple App Store에 앱을 배포할 수 있습니다.
Linux에서 Flutter 앱 받기
Android 앱은 Linux 플랫폼에서 빌드, 테스트 및 게시할 수 있습니다. 이 Android 기능을 활용하여 Linux에서 Flutter 앱 개발을 활성화할 수 있습니다. Flutter 앱의 이름은 Comagic-Demo입니다. 이 앱을 사용하여 Linux에서 Android 및 iOS용으로 빌드하는 방법을 보여줍니다. 그러나 iOS가 아닌 Linux의 Android에 대해서만 개발할 수 있다는 점을 염두에 두십시오. Linux에서 Android 앱을 개발하는 동안 App Store에 배포할 수 있는 iOS 앱은 계속 제공됩니다. 다양한 방법을 사용하여 Comagic-Demo를 Linux로 가져올 수 있습니다.
리눅스 머신 가져오기
이미 Linux가 설치된 컴퓨터가 있는 경우 전체 프로세스가 쉽습니다. Linux 머신에 Android SDK와 Flutter를 설치하기만 하면 됩니다. Comagic-Demo 앱을 복제하면 바로 작업을 시작할 수 있습니다.
도커 컨테이너 생성
Linux에서 Flutter 앱을 얻는 또 다른 방법은 Docker를 사용하는 것입니다. Docker 생태계에 익숙하다면 Android SDK와 Flutter가 설치된 Dockerfile 을 생성할 수 있습니다. Dockerhub에는 Android Dockerfile이 많이 있습니다. Flutter SDK로 해당 이미지를 확장하기만 하면 됩니다. Android 및 Flutter 환경을 Docker 컨테이너로 가져오기 위해 여기에서 샘플 Android 도커 이미지를 확장하는 간단한 Dockerfile을 만들어 보겠습니다. Dockerfile은 앱을 컨테이너에 복사하고 Flutter Android 환경을 실행해야 합니다. Comagic-Demo용 예제 Dockerfile은 다음과 같습니다.
runmymind/docker-android-sdk에서 실행 mkdir /codemagic-demo WORKDIR /codemagic-demo 추가하다 . /codemagic-demo 실행 apt-get 업데이트 && \ apt-get install -y lcov git-core curl 압축 풀기 && \ 자식 복제 https://github.com/flutter/flutter.git && \ /flutter/bin/flutter 닥터 && \ apt-get 제거 -y 컬 압축 해제 && \ 적절한 자동 제거 -y && \ rm -rf /var/lib/apt/lists/* 환경 경로 $ 경로:/flutter/bin/cache/dart-sdk/bin:/flutter/bin 런 플러터 닥터
이 코드 조각은 설명을 위한 것이지만 필요에 따라 Dockerfile을 사용자 지정할 수 있습니다. Dockerfile과 Docker가 설치되면 Docker를 사용하여 Codemagic-app을 얻을 수 있습니다.
$ docker build -t codemagic-demo . $ docker run --name codemagic-demo
이 명령을 실행하면 Flutter 환경에서 Docker 컨테이너가 실행됩니다.
Dockerising Futter 앱은 다른 주제가 될 것이며 향후 게시물에서 자세히 다룰 것입니다.
App Store Connect에서 코드 서명 자산 생성
iOS 앱을 코딩하려면 Apple 개발자 계정, 개발 및 배포 인증서, 앱 ID 및 앱용으로 생성된 프로비저닝 프로필이 필요합니다. 코드 서명 활동에 대한 자세한 내용은 이전 게시물에서 다루었습니다. Codemagic에서 iOS 앱의 개발 또는 디버그 빌드를 위한 수동 코드 서명을 구성하려면 다음이 필요합니다.
- .P12 형식의 개발 또는 배포 인증서
- App Store Connect 또는 Apple 개발자 포털에서 다운로드한 프로비저닝 프로필
- iOS 앱의 번들 식별자
Apple 개발자 포털의 인증서, 식별자 및 프로필 섹션에서 인증서와 프로비저닝 프로필을 모두 다운로드할 수 있습니다. 안에
마찬가지로 Apple 개발자 포털에서 프로비저닝 프로필을 다운로드할 수 있습니다.
Codemagic에서 iOS 앱을 코드 서명하려면 인증서와 프로비저닝 프로필이 모두 필요하므로 나중에 사용할 수 있도록 이 파일을 저장합니다.
Xcode 프로젝트 파일 업데이트
이제 Apple 개발자 포털에서 모든 코드 서명 자산을 얻었습니다. 다음으로 올바른 팀 및 프로비저닝 프로필과 함께 수동 코드 서명을 사용하도록 Xcode 프로젝트 파일을 정렬해야 합니다. Xcodeproj Gem을 사용하는 Ruby 스크립트를 사용하여 이를 수행하거나 i os/YOUR_APP.xcodeproj/project.pbxproj 파일에서 다음 필드를 변경할 수 있습니다.

- 개발팀 = YOUR_DEVELOPMENT_TEAM_ID
- ProvisioningStyle = 수동
- PROVISIONING_PROFILE_SPECIFIER = NAME_OF_YOUR_PROVISIONING_PROFILE
Codemagic-Demo 앱에서 GitHub의 Xcode 프로젝트 파일을 편집해야 합니다. 내부 빌드의 디버그 구성과 App Store 빌드의 릴리스 구성에 대해 이러한 변경을 수행해야 합니다. project.pbxproj 에서 값을 설정하면 문제 없이 Codemagic에서 iOS 앱을 배포할 준비가 됩니다.
Codemagic에서 수동 코드 서명 설정
Linux에서 개발할 때 Xcode 및 iOS 도구는 Linux에서 설치하거나 실행할 수 없으므로 Android 앱의 상태만 볼 수 있습니다. Linux에서 Swift 및 iOS 도구를 가져오려는 지속적인 노력이 있지만 시간이 많이 걸릴 것입니다. 앱을 배포할 준비가 되면 Codemagic을 사용하여 앱에 대한 CI/CD를 쉽게 설정할 수 있습니다. 여기에서 시작 가이드를 참조하세요. OnCodemagic에서는 Apple 개발자 포털에서 다운로드한 인증서와 프로비저닝 프로필을 업로드하여 게시 섹션에서 iOS 코드 서명을 활성화할 수 있습니다. Codemagic 앱에서 설정 → 게시 → iOS 코드 서명 → 수동 으로 이동하여 인증서 및 프로비저닝 프로필을 업로드합니다.
이제 빌드를 실행하면 프로비저닝된 장치에 배포할 수 있는 IPA 파일 형식의 iOS 앱이 제공됩니다. Codemagic의 빌드 아티팩트 목록은 다음과 같습니다.
Artifacts 섹션에서 볼 수 있듯이 충돌 보고서를 위한 codemagic_demo.ipa 와 dSYM 파일이 있습니다. 프로비저닝 프로필에 추가된 모든 iOS 기기에 이 앱을 설치하고 iOS 앱을 테스트할 수 있습니다. 버그가 발견되면 언제든지 Linux 환경으로 돌아가 해당 버그를 수정할 수 있습니다.
iOS 앱을 App Store에 배포
현재로서는 내부 테스트를 위해 iOS 앱의 디버그 버전을 구축했습니다. 비슷한 방법으로 iOS 앱을 App Store에 배포할 수 있습니다. 앱을 App Store에 배포할 준비가 되면 릴리스 모드에서 앱을 빌드해야 합니다. 배포 인증서 및 프로덕션 프로비저닝 프로필을 사용하여 수행할 수 있습니다. 비슷한 방식으로 인증서와 프로필을 생성할 수 있습니다. 그러나 프로비저닝 프로파일을 생성하는 동안 App Store 배포를 선택해야 합니다.
배포 프로비저닝 프로필은 모든 기기에서 iOS 앱을 실행하므로 프로비저닝 프로필에 기기를 명시적으로 추가할 필요가 없습니다. App Store 프로비저닝 프로필은 다음과 같습니다.
iOS 배포 인증서 와 프로덕션 프로비저닝 프로필 이 있으면 릴리스 모드를 선택할 수 있습니다. 아래와 같이 Codemagic에서 섹션을 빌드합니다.
또한 디버그 대신 릴리스하도록 빌드 인수를 설정했습니다. 게시 섹션에서 앱의 App Store 버전을 생성하려면 배포 인증서와 프로덕션 프로비저닝 프로필을 업로드해야 합니다.
Codemagic이 빌드 아티팩트를 생성하면 App Store 지침에 따라 App Store Connect(이전 명칭: iTunesConnect)에 빌드하고 검토를 위해 앱을 제출할 수 있습니다.
결론
크로스 플랫폼 모바일 애플리케이션 개발 프레임워크와 Codemagic과 같은 마법 같은 CI/CD 솔루션의 조합으로 iOS 앱 개발을 위한 Mac 소유는 전혀 필수가 아닙니다. iOS용으로 개발하는 동안 앱을 디버깅하는 데 몇 가지 문제가 있을 수 있지만 Flutter와 Codemagic의 조합을 사용하여 iOS 앱을 개발하고 App Store에 게시하는 것은 완전히 가능합니다.
귀하의 비즈니스를 위한 미래 지향적인 앱을 구축하고 싶으십니까?
같이 일하자