KMP, Kotlin Muiltiplatform으로 안드로이드, iOS, 데스크탑 및 웹 개발을 할 수 있습니다.
웹은 현재 alpha이긴 합니다만, 한번 시도해보려고 합니다.
개발 환경은 Android Studio에서 진행합니다.
프로젝트 생성은 젯브레인의 다음 공식 글을 참고하여 진행하면 됩니다.
https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-multiplatform-create-first-app.html
Create your multiplatform project | Kotlin Multiplatform Development
www.jetbrains.com
프로젝트 생성은 Android Studio에서 하지 않고 아래 웹 페이지를 통해서 합니다.
Android Studio의 Project 생성 Wizard를 이용하면 웹 개발을 위한 환경이 세팅되지 않는 것 같습니다.
Kotlin Multiplatform Wizard | JetBrains
kmp.jetbrains.com
상기 페이지에서 웹을 체크하여 프로젝트를 생성하면 zip 파일을 다운로드 받을 수 있습니다.
zip 압축을 풀고 Android Studio에서 해당 폴더를 open하여 프로젝트를 열면 됩니다.
가이드에 나와있는데로 gradle 설정합니다.

상기 화면과 같으며, 이제 실행을 해보면 "localhost:8080" 으로 잘 실행되는 것을 확인할 수 있습니다.

이제 이 샘플 웹을 Firebase Hosting을 통해 배포해보겠습니다.
Firebase에서 Hosting이라는 기능을 제공하고 있는데, App Hosting이라는 기능이 새로 추가된 것으로 보입니다.
이 두 기능은 비슷해보이지만 일단은 서로 다른 기능인 것 같습니다.
App Hosting은 현재 실험 단계로 KMP 프로젝트는 지원하지 않는 것 같아요.
Next.js, Angular 프레임워크로 개발된 웹 서비스만 지원하는 것으로 보입니다.
따라서 Firebase Hosting 기능을 사용하여 배포하겠습니다.
배포하기 위해 다음과 같이 gradle 설정을 추가하여 빌드합니다.

wasmJsBrowserDistribution task를 추가하고 run하면 다음과 같이 composeApp/build/dist/wasmJs/productionExecutable 경로에 뭔가 파일들이 잔뜩 생성된 것을 확인할 수 있습니다.

배포할 준비는 되었고, 이제 Firebase Hosting 쪽 작업을 해보겠습니다.
Firebase Hosting 세팅 역시 다음 구글 공식 문서를 그대로 따라갑니다.
https://firebase.google.com/docs/hosting/quickstart?hl=ko&_gl=1*d1o9ww*_up*MQ..*_ga*MTMxMjE0NzM4MS4xNzI5MTc1Mzgw*_ga_CW55HF8NVT*MTcyOTE3OTA4NC4yLjAuMTcyOTE3OTA4NC4wLjAuMA..
Firebase 호스팅 시작하기 | Firebase Hosting
서버 렌더링 Angular 또는 Next.js 앱을 빌드하는 경우 최신 웹 프레임워크용 풀 스택 솔루션인 차세대 Firebase App Hosting에 대해 알아보세요. 이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의
firebase.google.com
Android Studio 터미널을 엽니다.
Firebase Cli를 통해 세팅을 하도록 하겠습니다.
다음 명령어를 통해 hosting을 설정합니다.
$ firebase init hosting
몇가지 질문들이 나오는데 저는 다음과 같이 작성하였습니다.

이와 같이 작업을 완료하게 되면 dist 경로의 index.html이 덮어씌어지는데요.
다시 wasmJsBrowserDistribution task를 실행해주시면 됩니다.
그리고 다음 명령어를 통해 배포합니다.
$ firebase deploy

배포가 정상적으로 수행되었고, 해당 링크에 접속해보면 잘 접속되는 것을 확인할 수 있습니다.

'개발' 카테고리의 다른 글
TISTORY API 사용하기 (0) | 2023.11.23 |
---|---|
Github Action으로 자동화 돌리기 (0) | 2023.04.28 |
구글 개발자들은 어떻게 일하는가 (0) | 2022.06.27 |
Review 2019 (0) | 2020.11.08 |
프로세스와 스레드 (0) | 2020.11.08 |