Aplikacje na Androida w Delphi (Embarcadero Delphi and Mobile Add-on Pack)
rk7771
Przykład konfiguracji środowiska Embarcadero Delphi z pakietem Mobile Add-on Pack do tworzenia aplikacji na system Android.
***
Aplikacje na Androida w Delphi (Embarcadero Delphi and Mobile Add-on Pack).
Przykład zastosowania pakietu mobilnego w środowisku Embarcadero Delphi.
W celu rozpoczęcia pracy z pakietem mobilnym w środowisku Delphi należy przygotować środowisko Androida w systemie Windows.
Czynność tą wykonujemy poprzez uruchomienie programu Android Tools dołączonego do wersji instalacyjnej zakupionego środowiska developerskiego.
W uruchomionym oknie zaznaczamy do instalacji następujące komponenty:
- Tools : Android SDK Tools revision 25.2.5
- Tools : Android SDK Platform-tools revision 29.0.1
- Tools : opcjonalnie kolejne wydania SDK - przykładowo SDK Build-tools revision 25, 25.0.3
- Android 7.1.1 (API 25) : SDK Platform
- Android 7.1.1 (API 25) : Intel x86 Atom System Image (obraz systemu dla wersji 7.1.1)
- Android 7.1.1 (API 25) : Sources for Android SDK
Program dodatkowo zaznaczy do instalacji Extras : Google USB Driver.
Uruchamiany Install packages i czekamy na pobranie wszystkich składników.
Miejsce repozytorium pobieranych plików:
- Embarcadero Delphi 10.2 (Tokyo) składniki będą umieszczone w katalogu C:\Users\Public\Documents\Embarcadero\Studio\19.0\PlatformSDKs\
- Embracadero Delphi 10.1 (Berlin) składniki będą umieszczone w katalogu C:\Users\Public\Documents\Embarcadero\Studio\18.0\CatalogRepository\AndroidSDK-2433_18.0.25048.9432
Kolejny program jaki uruchamiamy to Android AVD Manager. W programie tym możemy dodać virtualne urządzenie z adroidem. Poniżej przykład konfiguracji dla Galaxy Nexus 4.65:
- AVD Name: Nazwa wirtulanego urządzenia na przykład: Galaxy-nexus-4.65
- Device: wybieramy Galaxy Nexus (4.65", 620 x 1290; xhdpi)
- Target: Android 7.1.1 - API Level 25
- CPU/ABI: Google APIs Intel Atom (x86)
- Keybord: zaznaczamy Hardware keyboard present
- Skin: Skin with dynamic hardware controls
- Front Camera: opcjonalnie None/Emulated/Webcam0
- Back Camera: opcjonalnie None/Emulated/Webcam0
- Memory Options RAM: system podpowie 1024 (seugerowana wielkosć od strony systemu operacyjnego Windows to 768)
- Memory Options VM Heaps: 64
- Internal Storage: 200 MiB
- SD Card: opcjonalne pola do wskazania wielkości karty lub wskazania pliku
- Emulation Options: opcjonalnie pola Snapshot lub Use Host GPU
Po zaakceptowaniu ustawień należy wykonać test działania wirtualnego systemu android. Wykonujemy to wybierając (zaznaczając) na liście przygotowanych wirtualnych systemów nasz system Galaxy-Nexus-4.65 i wybieramy przycisk Start ... . W nowym oknie winien pojawić się ekran symulacji wirtualnego androida o wielkości okna zgodnie z zaznaczonymi parametrami Skin.
Windows powinien prawidłowo wystartować wirtualny system w ciągu kilkunatu sekund, brak wystarowania systemu będzie skutkowało czarnym ekranem (należy wówczas poprawić / wybrać inne opcje dostępne w parametrze Skin).
Konfiguracja środowiska Embarcadero Delphi (na przykładzie 10.2.3 Tokyo) - po uruchomieniu środowiska wybieramy:
- File -> New -> Multi Device Appkication - Delphi
- Select a Multi-Device Application type: wybieramy Blank Application
- opcjonalnie: zapisujemy nasz projekt
- w zakładce Projekt Manager wybieramy Target Platform -> naciskamy prawym przyciskiem myszy, z menu wybieramy Add-Platform
- w nowym oknie wybieramy system Android - system wyświetli kolejne opcje konfiguracyjne
Opcje konfiguracyjne Android SDK - najważniejsze parametry:
- SDK base path: C:\Users\Public\Documents\Embarcadero\Studio\19.0\PlatformSDKs\android-sdk-windows
- ZipAlign Location: C:\Users\Public\Documents\Embarcadero\Studio\19.0\PlatformSDKs\android-sdk-windows\build-tools\25.0.0\zipalign.exe
- Aapt locations: C:\Users\Public\Documents\Embarcadero\Studio\19.0\PlatformSDKs\android-sdk-windows\build-tools\25.0.0\aapt.exe
- SDK API-Level location: C:\Users\Public\Documents\Embarcadero\Studio\19.0\PlatformSDKs\android-sdk-windows\platforms\android-29
- NDK base path: C:\Users\Public\Documents\Embarcadero\Studio\19.0\PlatformSDKs\android-ndk-r9c
- Java - KeyTool location: przykładowo C:\Program Files\Java\jdk1.8.0_60\bin\KeyTool.exe
- Java - Jarsigner location: przykładowo C:\Program Files\Java\jdk1.8.0_60\bin\JarSigner.exe
Pozostałe opcje winny zostać uzupełnione automatycznie i nie powinny wymagać zmiany dla wybranego wcześniej targetu: Android 7.1.1 - API Level 25.
Napisane aplikacje można również weryfikować bezpośrednio na telefonie czy tablecie z systemem Android. W tym celu należy odblokować opcje programistyczne oraz zaznaczyć tryb debugowania dla podłączonego kabla USB.
Odblokowanie opcji programistycznych realizujemy po wejściu w Ustawienia -> Telefon - informacje -> Informacje o oprogramowaniu -> naciskamy w krótkich okresach czasu na pole numer wersji aż do pokazania ekranu z prośbą podania numeru PIN. Po podaniu numeru PIN dokonujemy akceptacji, opcje programistyczne powinny być odblokowane.
Odblokowanie opcji programistycznych pozwala na uruchomienie debugowania, włączenie opcji dokonujemy wybierając Ustawienia -> Opcje programisty -> i zaznaczamy Debugowanie USB.
Tak przygotowany telefon / tablet podłączamy portem USB z naszym komputerem. Na pytanie czy zezwalamy na Zezwolić na debugowanie USB odpowiadamy OK (zezwalamy).
Wykonując powyższe czynności w opcjach Project Manager projektu Delphi w sekcji Target Platform będziemy mieli widoczne systemy na które będziemy kompilować tworzony program.
W ramach tych opcji widoczny winien być system Android (Android - Android SDK 25.2.5. 32bit). Jego rozwinięcie pokaże w kolejnej sekcji Target dostępne urządzenia (tutaj wirtualny Galaxy-Nexus-4.65 oraz fizyczny telefon/tablet podłączony kablem USB).
Ostatnim elementem jaki należy zaznaczyć w sekcji Android - Android SDK 25.2.5. 32bit -> Configuration - jest wybór konfiguracji kompilacji. Dostepna jest opcja wysłania aplikacji do sklepu lub wybów wersji Development. W naszym przypadku wybieramy opcję Development poprzez zaznaczenie jej lewym przyciskiem myszy i następnie wybór menu Activate po naciśnieciu prawego przycisku myszy.
Wykonując wszystkie powyższe czynności mamy przygotowane środowisko do napisania i testowania aplikacji Android (w tym przykładzie wybrana zostałą wersja Android 7.1.1 - API Level 25).
Poniżej zamieszczam przykładowy kod źródłowy aplikacji włączającej latarkę w telefonie:
unit latarka_unit;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.Controls.Presentation, FMX.Media, FMX.Layouts, FMX.ExtCtrls;
type
TForm1 = class(TForm)
Panel_bottom: TPanel;
Switch_On_Off: TSwitch;
Camera: TCameraComponent;
StyleBook1: TStyleBook;
lbl_info: TLabel;
ImageViewer_latarka_on: TImageViewer;
Panel_left: TPanel;
Panel_right: TPanel;
procedure FormCreate(Sender: TObject);
procedure Switch_On_OffSwitch(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.FormCreate(Sender: TObject);
begin
lbl_info.Text := 'Latarka wyłączona';
Camera.Active := true;
end;
procedure TForm1.Switch_On_OffSwitch(Sender: TObject);
begin
lbl_info.StyledSettings := lbl_info.StyledSettings - [TStyledSetting.FontColor];
if Switch_On_Off.IsChecked then
begin
lbl_info.TextSettings.FontColor := TAlphaColors.Red;
lbl_info.Repaint;
if Camera.HasFlash then
begin
Camera.TorchMode := TTorchMode.tmModeOn;
lbl_info.Text := 'Latarka uruchomiona';
end;
end;
if not Switch_On_Off.IsChecked then
begin
lbl_info.TextSettings.FontColor := TAlphaColors.Yellow;
lbl_info.Repaint;
if Camera.HasFlash then
begin
Camera.TorchMode := TTorchMode.tmModeOff;
lbl_info.Text := 'Latarka wyłączona';
end;
end;
end;
end.