RAD Studio에서는 XE7 버전 이상부터 Fire Monkey Desktop Application과 Fire Monkey Mobile Appliction을 통합한 Multi-Device Application을 지원합니다. 이 글은 RAD Studio 10.1 Berlin을 기준으로 하기에 해당 형식의 애플리케이션을 만들도록 할 것입니다.
Delphi Multi-Device Application을 생성하기 위해서는 다음과 같이 들어가서 생성합니다:
"File" > "New" > "Multi-Device Application - Delphi"
그러면 다음과 같은 화면이 보이는데, 여기에서 "Blank Application"을 선택하시고 "OK"를 눌러주시면 프로젝트가 생성됩니다.
프로젝트가 생성되면 이 글에서 목표로 하는 타겟이 Android 디바이스이므로 다음과 같이 디자인 기준을 "Android"로 맞춰줍니다.
그리고 화면이 잘 뜨는지 테스트하기 위해서 TLabel 하나를 만들고 텍스트를 적어봅니다.
이제 Android SDK와 NDK를 설정하겠습니다.
Delphi가 Fire Monkey를 통한 Cross-Platform 애플리케이션을 지원하지만, 각 플랫폼 별로 빌드를 위한 별도의 툴은 반드시 필요합니다. 이 글에서는 Android를 기준으로 하기에 Android 프로젝트를 빌드하기 위한 필수 요소인 SDK와 NDK를 설치하여 RAD Studio와 연결하겠습니다.
먼저 SDK와 NDK를 설치할 디렉터리를 특정짓는 것이 좋습니다. 권장하는 폴더 경로는 다음과 같습니다:
- SDK 권장 설치 경로
- .....\Embarcadero\Studio\18.0\PlatformSDKs\(설치할 폴더명 - e.g. SDK)- NDK 권장 설치 경로
- .....\Embarcadero\Studio\18.0\PlatformSDKs\(설치할 폴더명 - e.g. NDK)
위의 두 경로를 앞으로의 설치 과정에서 사용할 것입니다. NDK 같은 경우에는 설치할 디렉터리를 미리 만들지 않으셔도 되지만, SDK 같은 경우에는 미리 만들어두시는 것을 권장합니다.
SDK를 설치하기 위해 먼저 Android SDK Installer를 다운받고 실행합니다.
인스톨러를 실행하시면 다음과 같이 뜰 것입니다. 여기에서 Platform Tools 체크박스에 꼭 체크하신 후에 Download를 클릭합니다.
그러면 SDK를 설치할 디렉터리를 지정하는 파일 탐색기가 뜨면 이전에 설치하기로 했던 경로를 선택하면 다음과 같이 뜹니다.
권장 경로: .....\Embarcadero\Studio\18.0\PlatformSDKs\(설치할 폴더명 - e.g. SDK)
여기서 "OK"를 클릭하여 설치를 진행하면 다운로드를 마친 후에 다음과 같은 화면이 보입니다.
여기에서 "Build Tools"는 목록에 나온 어떤 버전을 설치해도 상관이 없습니다. 그러나, "Platforms"의 경우는 반드시 "android-22"를 선택하시기 바랍니다. 자세한 이유는 이 링크와 이 링크를 참고하시기 바랍니다.
선택한 후에 "Install"을 클릭하고 설치가 완료되면 인스톨러를 닫습니다.
Delphi 10.1 Berlin의 경우 r9c 버전의 Android NDK를 사용합니다. 이 링크를 통해 다운받으시면 됩니다.
다운받은 압축파일을 이전에 Android SDK 관련 디렉터리로 지정했던 그 디렉터리에 압축 해제합니다:
권장 경로: .....\Embarcadero\Studio\18.0\PlatformSDKs\(설치할 폴더명 - e.g. NDK)
(단, NDK의 경우 압축 해제하면 폴더 형태로 나오기에 PlatformSDK 안에 해제만 하면 별도의 디렉터리를 만들 필요는 없음)
해제를 완료했으면 압축 파일을 삭제하고 Delphi와의 연동 작업에 들어가겠습니다.
이제 RAD Studio로 다시 돌아와서 다음 메뉴 경로로 들어갑니다:
"Tools" > "Options" > "Environment Options" > "SDK Manager"
여기에서 "Add"를 클릭하여 뜬 창에서 "Select an SDK version"에서 "Add New"를 클릭합니다.
이 때, "Make the selected SDK active"를 꼭 체크하시기 바랍니다.
그러면 다음과 같이 각각 SDK와 NDK 경로를 지정하는 설정창이 나옵니다.
여기서 각각 "..."을 눌러 Android SDK와 Android NDK를 이전에 설치했던 경로로 지정해줍니다.
"Next>>"를 클릭하고 잠시 기다리면 다음과 같이 필요한 각 툴들 및 실행 파일들의 경로가 자동으로 로드됩니다. C++ Builder NDK 경로에 뜨는 경고 마크는 무시하셔도 상관 없습니다. 여기서 "Finish"를 누르면 자동으로 SDK 경로 설정창이 종료됩니다.
그러면 SDK Manager 설정창이 다음과 같이 보일 것입니다.
여기서 "SDK API-Level location" 경로 옆에 뜨는 경고는 정확한 API level 디렉터리가 정의되지 않아서 나오는 경고입니다. 따라서 다음과 같이 "..."를 클릭하고 ".....\platforms" 디렉터리 밑에 있는 "android-22" 디렉터리를 선택합니다.
선택 후에는 다음과 같이 경고가 없어지는 것을 볼 수 있습니다. 이제 "OK"를 클릭합니다.
Android SDK가 제대로 연동되었는지 확인하기 위해서 오른쪽 윗 패널의 "Project Manager"의 Target Platforms 메뉴를 확장시킵니다. 확장시켰을 때 다음과 같이 Android SDK의 버전이 명확하게 나온다면 잘 연동된 것입니다.
이제 이 프로젝트를 실제 Android 앱으로 실행시켜 보겠습니다.
Delphi에서는 다른 Cross-Platform 애플리케이션 개발 프레임워크들에서는 적극적으로 지원하고 있는 Emulator 사용을 세부적인 문제들로 인해서 권장하지 않습니다. 그래서 직접 Android 모바일 기기와 연동하는 것을 권장하며, 그럼에도 Emulator를 사용해야 한다면 이 문서와 이 문서를 참고하시기 바랍니다.
RAD Studio에서 Android 기기를 인식하게 하기 위해서는 먼저 Android에서 개발자 모드를 활성화하고 USB 디버깅을 허용해야 합니다. 자세한 방법은 이 문서를 보시고 설정하시기 바랍니다.
USB 디버깅을 설정하셨다면 아래처럼 버튼을 클릭하여 기기 인식을 새로고침하시면 다음과 같이 현재 USB 디버깅으로 연결된 Android 디바이스를 보여줍니다.
이제 Ctrl+Shift+F9으로 프로젝트를 빌드/실행하시면 휴대폰에 Firemonkey 아이콘의 앱이 설치되고 다음과 같이 잘 실행되는 모습을 볼 수 있을 것입니다.