Gluon을 사용해서 Scala로 Android programing하기

View: 347 0 0
작성자: 달빛제이크
카테고리: Scala Language
발행: 2023-12-15 수정 2024-06-21

안녕하세요. 달빛제이크입니다.

오늘은 스칼라로 안드로이드 프로그램 만드는 법을 알려 드리려고 합니다.

인터넷을 열심히 검색해서 직접 따라 해보고 사용할 만한 두 가지 방법을 찾았는데요.

그 두 가지 방법 중에 스칼라 공식 홈페이지에서 설명하고 있는 Gluon을 활용한 개발 방법을 소개하겠습니다.

제가 참고한 문서는 A TUTORIAL ON WRITING SCALA APPS ON ANDROID로 스칼라 공식 홈페이지 튜토리얼에 포함되어 있는 문서입니다.

Gluon에 대한 세부 내용은 Gluon 공식 홈페이지의 Developer Documentation에 잘 정리되어 있으니 참고하시기 바랍니다.

관련 문서와 링크는 글 마지막에 정리해두었습니다.

들어가기에 앞서,

제가 사용하는 시스템은 Debian Linux이고, IDE 뿐만 아니라 터미널에서도 개발이 가능하도록 관련 Package들을 OS에 직접 설치하려고 합니다.

다른 Linux 배포판에서는 Package Installer만 다르고 모든 과정이 동일하며, Windows와 Mac에서도 크게 다르지는 않을 것입니다.

순서대로 정리를 하고자 하니 직접 따라해 보시길 추천 드립니다.

1. Gluon built version의 GraalVM을 다운로드합니다.

GraalVM CE Gluon Download : https://github.com/gluonhq/graal/releases/latest 에서 다운로드 받습니다. GraalVM은 Oracle에서 만든 새로운 JIT 컴파일러이자 AOT 네이티브 이미지 컴파일러로 Java Code를 Binary 파일로 만들어 줍니다. 안드로이드 프로그램을 만들 때 안드로이드에서 실행되는 Binary 코드로 컴파일을 해야 하기 때문에 GraalVM을 설치합니다. 주의할 점은, GraalVM 공식 홈페이지에서 다운로드 받은 GraalVM에는 GluonFX가 포함되어 있지 않습니다. GluonFX를 통해 안드로이드 용 UI를 만들고 안드로이드의 여러 기능들을 사용할 것이기 때문에 Gluon 공식 홈페이지에서 배포하는 GraalVM을 다운로드 받아서 설치해야 합니다. Gluon Application에서 필요한 JDK version은 JDK 11 이상입니다.

2. GraalVM을 설치하고 Path를 설정 해줍니다.

GraalVM 설치 방법은 자바와 동일하고 GraalVM 자체가 고성능 자바이기 때문에 자바를 따로 설치해줄 필요가 없습니다. 관리를 용이하게 하기 위해서 root가 아닌 일반 계정의 Home Directory에 압축을 풀고 Path 설정을 해 줍니다. 저는 ~/.bashrc 마지막 부분에 하기와 같은 형식으로 Path 설정을 했습니다.

export GRAALVM_HOME=<path to GraalVM home directory>
export JAVA_HOME=$GRAALVM_HOME
export PATH=$GRAALVM_HOME/bin:$PATH

3. Path 설정이 완료되었으면 터미널에서 $ native-image 를 실행해 봅니다.

정상적으로 설치되어 있으면 관련 메세지가 표시될 것이고 설치되어 있지 않다면 아래와 같이 설치해 줍니다.

$ gu install native-image

GraalVM을 설치하고 Path 설정을 제대로 해주었으면 gu 명령어를 정상적으로 사용할 수 있습니다.

4. adb (Android Debug Bridge)를 $ sudo apt install adb 명령어로 설치해 줍니다.

USB Debugging mode로 설정한 안드로이드 폰이 PC와 연결되어 있으면 $ adb devices 명령어를 사용해서 연결된 휴대폰 목록을 볼 수 있습니다. 만약 휴대폰 목록이 나타나지 않는다면 연결 케이블을 교체해 보길 추천 드립니다. 갤럭시 폰의 경우에 삼성 휴대폰 전용 케이블을 사용해서 휴대폰 연결을 확인할 수 있었습니다. adb는 아래 명령어를 주로 사용합니다.

adb start-server
adb devices
adb install <path to APK> 
adb logcat ( | grep GraalCompiled )     

휴대폰을 USB Debugging mode로 설정하려면 설정>>휴대전화 정보(About phone)>>소프트웨어 정보(Software information)으로 들어가서 빌드번호(Build number)를 7번 연속 클릭 한 후 지문, 패턴인식 또는 PIN 번호를 입력합니다. 그러면, 휴대전화 정보(About phone) 아래에 개발자 옵션(Developer options) 메뉴가 나타나는 데, 클릭해 들어가서 보이는 여러가지 Option 중에 USB 디버깅 (USB debugging) 메뉴를 찾아서 활성화 해줍니다. 개발자 옵션을 끄고 싶으면 개발자 옵션 메뉴 상단의 사용 중(On) 버튼을 비활성화로 변경합니다.

5. gcc library를 설치합니다.

필요한 gcc version은 최소 version 6 이고, native-image를 build하는 데 필요합니다.
사용하는 시스템에 따라서 필요로 하는 C library들이 다를 수 있으니 에러 메세지가 표시하는 데로 설치해 줍니다.
시스템에서 지원하는 package installer를 사용해서 설치해 줍니다. debian, ubuntu는 apt나 dpkg를 사용하고, CentOS는 yum을 사용합니다.
gcc library를 설치하지 않고 다음 Step으로 넘어가게 되면, 결국 mvn 컴파일하는 와중에 설치해야 한다고 에러 메세지가 나타납니다.
제가 설치 목록은 아래와 같습니다.

libasound2-dev (for pkgConfig alsa)
libavcodec-dev (for pkgConfig libavcodec)
libavformat-dev (for pkgConfig libavformat)
libavutil-dev (for pkgConfig libavutil)
libfreetype6-dev (for pkgConfig freetype2)
libgl-dev (for pkgConfig gl)
libglib2.0-dev (for pkgConfig gmodule-no-export-2.0)
libglib2.0-dev (for pkgConfig gthread-2.0)
libgtk-3-dev (for pkgConfig gtk+-x11-3.0)
libpango1.0-dev (for pkgConfig pangoft2)
libx11-dev (for pkgConfig x11)
libxtst-dev (for pkgConfig xtst)

6. apache-maven 최신 버전을 설치하고 Path 설정을 합니다.

Apache Maven으로 build process를 진행하기 위해 Apache Maven 공식 홈페이지에서 apache-maven 최신 버전을 내려받아 설치하고, 프로젝트 홈 디렉토리에서 명령어를 사용할 수 있도록 Path 설정을 합니다.
설치가 완료되면 mvn 명령어를 통해 native-image를 build 할 수 있습니다.

$ mvn gluonfx:run --> GraalVM을 통해 desktop에서 GUI가 어떻게 보이는지 먼저 확인한다.
$ mvn gluonfx:build gluonfx:nativerun --> standalone desktop application으로 build 한다.
$ mvn -Pandroid gluonfx:build gluonfx:package --> mobile device용 cross-platform build를 진행해서 APK file을 만든다.

Cross-compile을 통해 만들어진 APK file은 target/gluonfx/aarch64-android/gvm 경로에 위치합니다.

7. Android NDK와 Android SDK 설치가 필요합니다.

$ mvn -Pandroid gluonfx:build 를 실행하면 Gluon이 자동으로 NDK와 SDK를 다운로드 받아 설치합니다.
Android NDK는 C 및 C++와 같은 언어로 작성된 네이티브 코드 라이브러리를 사용하기 위해서 필요하고, Android SDK는 Android 개발에 필요한 패키지를 설치하고 업데이트 할 때 필요합니다.
Android SDK가 지원하는 도구 중에서 우리가 필요한 것은 sdkmanager라는 명령줄 도구이고, Android Studio를 설치하거나 sdkmanager만 따로 다운로드 받아서 설치할 수 있습니다.
만약 Gluon을 통해 정상적인 설치가 이루어지지 않거나 build 도중 관련 에러가 발생한다면 직접 설치를 진행할 수 있습니다. 직접 설치를 위해서는 공식 홈페이지에서 최신 버전을 다운로드 받아서 압축을 풀어주고 Path 설정을 해줍니다.

export ANDROID_NDK=~/android-sdk-linux/ndk/<version>/
export ANDROID_SDK=~/android-sdk/cmdline-tools/<version> or latest/bin/

8. 예제를 다운로드하거나 직접 작성해서 빌드 합니다.

Scala on Android github 저장소에 있는 HelloScala 예제를 통해 간단하게 Android 프로그램을 작성하고 Build 해봅니다.

scalaonandroid/helloscala : https://github.com/makingthematrix/scalaonandroid/tree/main/helloscala

Build는 6번 과정을 참고하세요. Build에 성공하면 target/gluonfx/aarch64-android/gvm 에 apk 파일이 생성됩니다.

다른 과정들은 모두 Gluon으로 Android 개발 환경을 구축하는 과정이고, 이번 과정이 Scala로 Android 프로그램을 작성하는 핵심이기 때문에 소스 코드를 직접 작성하며 실행해 보시기를 권장합니다.

9. adb install 명령어로 build한 apk 파일을 안드로이드 폰에 설치합니다.

휴대폰은 먼저 개발자 옵션의 USB debugging이 활성화되어 있어야 하며 연결한 후에는 build 과정에서 보여지는 USB debugging Pop-up 메세지를 확인하고 승인을 해줘야 합니다.
Success 메세지가 터미널에 표시되고 휴대폰에 아이콘이 하나 만들어지면 휴대폰에 정상적으로 Porting이 완료된 것입니다.
아이콘을 클릭해서 실행합니다.

10. Gluon으로 개발된 앱을 배포하기 위해서는 유료 결재가 필요합니다.

Gluonfx는 멀티 플랫폼을 겨냥한 JavaFX tool/components Set이고 Mobile 개발을 위해서 GraalVM과 함께 Gluon Mobile이라는 제품으로 개발자들에게 제공됩니다.
Free Version으로 대부분의 주요 기능들을 사용할 수 있으나 휴대폰에 포팅된 프로그램을 실행하면 Nag Screen (실행 시 보여주는 광고 메세지)가 존재하기 때문에 앱을 만들어 배포하고자 할 때는 구매를 고려해야 합니다.
Gluon Mobile의 가장 낮은 가격은 Indie version으로 1년에 $499이며, 더 자세한 가격 정책은 하기 링크를 참고하세요.

Gluon 가격 정책 : https://gluonhq.com/pricing/

감사합니다.

comments 0