PhoneGap је комерцијална дистрибуција Apache Cordova од Adobe, која омогућава креирање мобилних апликација у HTML, CSS и JavaScript са могућношћу компилације у облаку без локалних SDK-ова. Платформа је постала први широко познати хибридни фрејмворк и одиграла је кључну улогу у популяризацији кроссплатформеног развоја. Према подацима Adobe PhoneGap, 2024, током постојања платформе креирано је преко 1 милион апликација. PhoneGap Build — кључни сервис Adobe који врши компилацију у APK и IPA без инсталације Xcode или Android Studio.
Главно
PhoneGap — је платформа за развој мобилних апликација, првобитно креирана од стране компаније Nitobi Software 2009. године. 2011. године Adobe је преузео Nitobi и објавио PhoneGap као комерцијални производ, преневши језгро фрејмворка Apache Software Foundation под именом Cordova.
PhoneGap је креиран на конференцији iPhoneDevCamp 2008. године, где су програмери Nitobi Software демонстрирали технологију умотавања веб апликација у нативни контејнер. Прва јавна верзија објављена је 2009. године и одмах је привукла пажњу заједнице веб програмера који су тражили начине да уђу на мобилно тржиште без учења Objective-C.
Главна иновација PhoneGap састојала се у томе што су програмери могли да користе познате веб технологије — HTML, CSS и JavaScript — за креирање апликација које се инсталирају на уређај преко продавница апликација и имају приступ нативним функцијама: камери, GPS-у, контактима и акцелерометру.
Према подацима Adobe Developer Relations (2015), у врхунцу периоду, преко 600 хиљада програмера широм света користило је PhoneGap. Платформа је била посебно популарна међу веб студијима и фриленсерима који су желели да прошире портфолио мобилним пројектима без запошљавања iOS и Android инжењера.
Главна разлика између PhoneGap и Apache Cordova лежи у моделу дистрибуције и додатним сервисима. Cordova је чисти open-source фрејмворк под управом Apache Foundation, а PhoneGap је његова комерцијална дистрибуција са ексклузивним могућностима Adobe.
| Карактеристика | Apache Cordova | PhoneGap (Adobe) |
|---|---|---|
| Лиценца | Apache 2.0 (отворена) | Apache 2.0 + власнички компоненти |
| Језгро | Оригинални код | Исти Cordova код |
| Облачна компилација | Не постоји | PhoneGap Build |
| Алати | CLI + IDE трећих страна | Adobe PhoneGap Desktop + CLI |
| Подршка | Apache заједница | Adobe (до 2020. године) |
Главна предност и најважнија комерцијална разлика PhoneGap у односу на Apache Cordova — је сервис PhoneGap Build, који преузима фазу компилације. Програмер учитава изворне датотеке на Adobe сервер, бира циљне платформе и добија готове бинарне датотеке без инсталације Android SDK, Xcode и повезаних алата за компилацију.
Поред тога, PhoneGap је укључивао интеграцију са Adobe Creative Cloud, омогућавајући дизајнерима да извозе макете из Photoshop директно у структуру PhoneGap пројекта. Ова функција је била тражена у малим тимовима без наменског мобилног програмера.
PhoneGap Build — је веб сервис Adobe који компилира изворни код PhoneGap/Cordova апликације у инсталационе датотеке за iOS (.ipa), Android (.apk), Windows Phone (.xap) и друге платформе. Корисник не мора да инсталира на рачунар SDK-ове циљних оперативних система.
Процес компилације састоји се од три корака: програмер архивира пројекат (или указује Git репозиторијум), учитава га на build.phonegap.com и бира платформе. Неколико минута касније, сервер враћа готове бинарне датотеке за учитавање у продавнице апликација.
PhoneGap Build је подржавао два типа претплате: бесплатну (до 2 апликације, јавна компилација) и платну (до 25 апликација, приватна компилација, прилагођене иконе и сертификати). За iOS је био потребан сертификат за учитавање Apple Developer Program, који је корисник учитавао у лични налог. Механизам рада Build је био једноставан: корисник је слао ZIP архиву или указивао Git репозиторијум, сервер је аутоматски одређивао платформе и враћао готове бинарне датотеке преко контролне табле.
Према Adobe Blog (2017), кроз PhoneGap Build је прошло преко 500 хиљада компилација месечно. Сервис је био посебно популаран у образовним институцијама и на хакатонима, где учесници нису имали приступ Mac инфраструктури. Програмери су такође користили Build за демонстрацију прототипова клијентима директно на уређајима без подешавања окружења.
Структура PhoneGap пројекта је идентична Cordova. Разлика је само у конфигурационој датотеци config.xml, где се додаје елемент <gap> са навођењем верзије PhoneGap и идентификатора апликације Adobe.
<?xml version='1.0' encoding='utf-8'?>
<widget id='com.adobe.phonegap.app'
version='1.0.0'
xmlns='http://www.w3.org/ns/widgets'
xmlns:gap='http://phonegap.com/ns/1.0'>
<name>PhoneGapApp</name>
<description>
PhoneGap апликација
</description>
<gap:platform name='ios' />
<gap:platform name='android' />
<gap:plugin name='cordova-plugin-camera' />
<gap:config platform='ios' min-version='13.0' />
</widget>
Ова конфигурациона датотека дефинише апликацију са подршком за iOS и Android, одређује минималну верзију iOS 13 и повезује додатак за камеру. Приликом учитавања у PhoneGap Build, сервер аутоматски препознаје ова подешавања и компилира пројекат са потребним зависностима.
Пример основног JavaScript кода са обрадом догађаја спремности уређаја и позивањем нативног дијалога:
document.addEventListener('deviceready', function() {
console.log('PhoneGap спреман за рад');
document.getElementById('btnAlert')
.addEventListener('click', function() {
navigator.notification.alert(
'Поздрав из PhoneGap!',
function() { console.log('OK'); },
'Порука',
'Затвори'
);
});
});
Догађај deviceready — обавезна улазна тачка у свим PhoneGap и Cordova апликацијама. Без овог догађаја, позиви нативних API-ја неће радити, јер мост још није иницијализован. Након спремности, доступни су сви додаци, укључујући notification.alert за нативне дијалог прозоре.
PhoneGap је имао низ предности које су га учиниле популарним средином 2010-их, али је такође имао ограничења која су довела до пада његовог тржишног удела након 2018. године.
Главна предност PhoneGap — низак праг уласка за веб програмере. HTML, CSS и JavaScript су технологије које познаје сваки фронтенд специјалиста, што је омогућавало веб студијима да брзо уђу на тржиште мобилних апликација без запошљавања iOS и Android инжењера.
Облачни сервис PhoneGap Build решавао је проблем инфраструктуре: тимови на Windows-у могли су да компилирају iOS апликације без куповине Mac-а. Ово је било кључно за стартапе са ограниченим буџетом за опрему.
Главни недостатак PhoneGap — перформансе. WebView је спорији од нативних UI фрејмворка, посебно код сложених анимација, великих листи и обраде графике. Према тестовима HTML5Rocks (2016), рендеровање листе од 1000 елемената трајало је у PhoneGap 200–400 ms наспрам 16–30 ms у нативној апликацији.
Додатна ограничења укључивала су зависност од верзије WebView на уређају корисника, проблеме са отклањањем грешака нативних додатака и недостатак приступа новим iOS и Android API-јима до изласка одговарајућих Cordova додатака.
2020. године Adobe је објавио престанак подршке за PhoneGap и PhoneGap Build. Компанија је пренела достигнућа заједници са препоруком преласка на Apache Cordova или Capacitor. PhoneGap Build је затворен и облачна компилација више није доступна.
За постојеће PhoneGap пројекте препоручује се миграција на Capacitor — то је најдиректнији пут са минималним изменама кода. Довољно је заменити скрипте иницијализације и ажурирати конфигурацију. Сав JavaScript код и HTML шаблони остају непромењени, јер Capacitor користи исте принципе моста.
Алтернативна опција — прелазак директно на Apache Cordova. Ово захтева локалну инсталацију платформи преко CLI-ја и подешавање локалне компилације, али у потпуности задржава компатибилност са постојећим додацима и архитектуром апликације.
Упркос затварању, историјски значај PhoneGap је тешко преценити. Управо је PhoneGap показао тржишту да веб технологије могу бити основа за мобилне апликације, utirući пут за модерне хибридне и кроссплатформне фрејмворке. Концепт облачне компилације, први пут реализован у PhoneGap Build, касније су преузели Ionic Appflow, Visual Studio App Center и други сервиси континуиране интеграције за мобилне пројекте.
Архитектонске одлуке PhoneGap — мост преко WebView, систем додатака и конфигурација преко config.xml — постале су де факто стандард за хибридни развој. Чак и у модерним Capacitor пројектима види се наслеђе PhoneGap: исти принципи рада са додацима и сличан процес компилације.
За програмере који одржавају старе PhoneGap пројекте, кључна вештина је разумевање моста додатака и способност прилагођавања додатака модерним верзијама Android и iOS. Без тога, ажурирање апликације према новим захтевима продавница постаје немогуће због застарелих системских дозвола.
Често постављана питања
PhoneGap званично није подржан од Adobe од 2020. године, али апликације креиране на његовој основи настављају да раде. Компилација нових пројеката путем PhoneGap Build није доступна. Препоручује се миграција на Capacitor или Apache Cordova ради безбедносних ажурирања.
Ionic — је надградња над Cordova (и касније Capacitor) која додаје UI компоненте, рутирање и алате за компилацију. PhoneGap је дистрибуција Cordova са облачном компилацијом, али без сопствених UI компоненти. Ionic користи Cordova или Capacitor као бекенд за нативни приступ.
Захваљујући PhoneGap Build, Mac није био потребан — iOS компилација се обављала на Adobe серверима. Након затварања Build, за iOS компилацију биће потребан Mac са Xcode, јер Apache Cordova и Capacitor компилирају нативне пројекте локално путем Apple алата.
PhoneGap је компатибилан са свим Apache Cordova додацима, јер користи идентичну архитектуру. Додаци cordova-plugin-camera, cordova-plugin-geolocation, cordova-plugin-file и cordova-plugin-inappbrowser раде без измена. Није постојао додаци специфични само за PhoneGap.
Учење PhoneGap као новог алата нема смисла — он није подржан. Међутим, разумевање његове архитектуре је корисно за одржавање старих пројеката. За нове хибридне апликације препоручује се учење Capacitor у комбинацији са Ionic или React Native.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође