В Delphi, насколько я вижу, под Android можно писать на Firemonkey – и тогда мы получим нативное приложение. А можно писать при помощи UniGUI фрэймворка и тогда мы получим приложение работающее через браузер, основанное на популярной библиотеке jQueryMobile.
Плюс первого подхода (приложения на FireMonkey), насколько я понимаю в скорости, производительности программы, а также в том, что есть доступ к железу (вспышка, датчики и др.), минус в том, что такое приложение запустится не на всех устройствах, насколько я вижу по информации с форумов. Но на большинстве.
Ещё один плюс – приложение может быть полностью автономным, не зависящим от сети. Если, скажем использовать базу данных SQLite для каких то небольших приложений.
Также лично для меня, человека работающего с mySQL есть ещё один финт в работе с FireMonkey – напрямую, я оказывается не могу подключиться, в связи с ограничениями в FireDAC – библиотекой доступа к данным, выход – либо переход на другие компоненты либо через DataSnap.
Плюс второго подхода (приложения на UniGUI) состоит в том, что такое приложение будет работать практически везде, где есть браузер и интернет. На айфонах, айпадах, планшетах и так далее. Наверное, это даже удобнее, нежели 100 приложений под разные платформы. То есть, мы выходим за рамки конкретной платформы. Само приложение будет работать через сеть.
Минус этого подхода в том, что у нас практически нет доступа к железу. Но если этого не требуется, а для большинства задач этого достаточно – то всё в порядке. Также хорошо то, что вся мощь javascript библиотек будет под рукой и её можно будет использовать как напрямую, так и через язык Delphi. Другое ограничение – постоянный доступ к сети, но с этим проблем вроде бы нет в современном мире.
Есть ещё и третий подход)) Соединить первый и второй подходы – а именно – завернуть UniGUI приложение в FireMonkey. То есть, если, скажем нам нужно разместить наше приложение в магазине PlayMarket – мы просто берем TWebBrowser и прописываем в нём ссылку на наше приложение на UniGUI в сети.
Настраиваем Delphi для работы с FireMonkey – Android
Об этом много и хорошо написано на сайте Влада. За что ему огромное спасибо!!! Для меня это был стартовый импульс. Не всё, конечно, прошло гладко. Но, тем не менее, результат достигнут за приемлемое время.
Я, в частности, столкнулся вот с такой ошибкой…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
[Exec Error] The command "PATH C:\Program Files\Java\jdk1.7.0_71\bin; C:\Users\Public\Documents\Embarcadero\InterBase\redist\InterBaseXE7\IDE_spoof; C:\Users\Public\Documents\Embarcadero\InterBase\redist\InterBaseXE7\IDE_spoof; C:\Program Files (x86)\PHP\v7.0; C:\Program Files (x86)\Embarcadero\Studio\17.0\bin; C:\Users\Public\Documents\Embarcadero\Studio\17.0\Bpl; C:\Program Files (x86)\Embarcadero\Studio\17.0\bin64; C:\Users\Public\Documents\Embarcadero\Studio\17.0\Bpl\Win64; C:\Windows\system32; C:\Windows; C:\Windows\System32\Wbem; C:\Windows\System32\WindowsPowerShell\v1.0\; C:\Program Files (x86)\Embarcadero\HTML5 Builder\6.0\apache-ant-1.8.2\bin; C:\Program Files\MySQL\MySQL Server 5.5\bin; C:\Program Files (x86)\Skype\Phone\; C:\Program Files\TortoiseSVN\bin; C:\Users\YellowFriend\.dnx\bin; C:\Program Files\Microsoft DNX\Dnvm\; C:\Program Files\Microsoft SQL Server\130\Tools\Binn\; C:\Program Files (x86)\nodejs\; C:\Users\YellowFriend\AppData\Roaming\npm; C:\Program Files (x86)\Java\jre7\bin; C:\ProgramData\ComposerSetup\bin; C:\WINDOWS\system32;C:\WINDOWS; C:\WINDOWS\System32\Wbem; C:\WINDOWS\System32\WindowsPowerShell\v1.0\; C:\Users\YellowFriend\AppData\Roaming\Composer\vendor\bin; C:\Users\YellowFriend\AppData\Local\Microsoft\WindowsApps & "C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-sdk-windows\build-tools\24.0.2\dx.bat" --dex --output="C:\DELPHI\MyStudyProjects\295-Позвони маме (Андроид)\Android\Debug\classes.dex" "c:\program files (x86)\embarcadero\studio\17.0\lib\Android\Debug\android-support-v4.dex.jar" "c:\program files (x86)\embarcadero\studio\17.0\lib\Android\Debug\apk-expansion.dex.jar" "c:\program files (x86)\embarcadero\studio\17.0\lib\Android\Debug\cloud-messaging.dex.jar" "c:\program files (x86)\embarcadero\studio\17.0\lib\Android\Debug\fmx.dex.jar" "c:\program files (x86)\embarcadero\studio\17.0\lib\Android\Debug\google-analytics-v2.dex.jar" "c:\program files (x86)\embarcadero\studio\17.0\lib\Android\Debug\google-play-billing.dex.jar" "c:\program files (x86)\embarcadero\studio\17.0\lib\Android\Debug\google-play-licensing.dex.jar" "c:\program files (x86)\embarcadero\studio\17.0\lib\Android\Debug\google-play-services.dex.jar" " exited with code 1. |
Обошел я её установкой JDK и перезапуском Delphi. Не знаю как это сработало, но это сработало.
Насколько видно из Delphi – Tools – Options – нам нужно настроить 3 вкладки
SDK
Отмечу, что SDK можно получить двумя путями
-скачав и установив Android Studio и тогда SDK можно будет найти в
1 |
C:\Users\YellowFriend\AppData\Local\Android\sdk |
-либо в директории Delphi для SDK
1 |
C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-sdk-windows |
запустить SDKManager от имени администратора, ну и соответственно – закачать необходимые компоненты из сети…
NDK
Android NDK (native development kit) – это набор инструментов, которые позволяют реализовать часть вашего приложения используя такие языки как С/С++, Delphi и др.
Далее – прописать пути. Хотя в моем случае – всё уже было прописано. Но при желании – скачать более свежую версию и обновить.
В принципе, это всё. Теперь попробуем написать приложение – “Позвони маме”.
Приложение “Позвони маме”
Создаем Multi-Device Application – добавим кнопки – Позвонить и Закрыть, а также панель с надписью – “Позвони маме”.
Для звонка напишем вот такой код…
1 2 3 4 5 6 7 8 9 10 |
procedure THeaderFooterForm.bCallMotherClick(Sender: TObject); var PDService:IFMXPhoneDialerService; begin if TPlatformServices.Current.SupportsPlatformService(IFMXPhoneDialerService,IInterface(PDService)) then PDService.Call('YourMothersNumberHere') else raise exception.Create('Нет доступа к IFMXPhoneDialerService '); end; |
Что же – всё работает. В других статьях продолжу тему написания приложений под Android на FireMonkey или UniGUI.