Обзор современных средств для разработки мобильных приложений
Аксенов К.В.
Московский Институт Электроники и Математики НИУВШЭ
kvaksenov @ hse. ru
Аннотация. В статье рассмотрены наиболее популярные на сегодняшний день среды разработки мобильных приложений под три основных операционные системы Android (Eclipse, Intellij ШЕА, Android Studio), iOS (XCode), Windows Phone (Visual Studio), приведены краткие характеристики, преимущества и недостатки каждой из них.
Ключевые слова: среда разработка мобильных приложений, Eclipse, Intellij IDEA, Android Studio, XCode, Visual Studio, iOS, Android, Windows Phone
1 Введение
В настоящее время все больше пользователей уже перестают пользовать настольными компьютерами, отдавая свое предпочтение персональным мобильным средствам, которые позволяют быть на связи со всем миром в режиме 24/7. В отличии от настольного компьютера, мобильный телефон или планшет - это более личностное устройство. В них хранятся фотографии пользователя, номера его кредитных карт, с которых выполняются платежи, аккаунты социальных сетей. Некоторые приложения уже способны помогать нам в планировании действий: стоит только запустить приложение, приняв предварительно соглашение, и через некоторое время оно вычислит местоположение вашего офиса и дома; после чего будет подсказывать сколько времени добираться до работы и за сколько необходимо проснуться, чтобы не пропустить важное совещание или встречу.
Приложения, доступные для скачивания, сегодня имеют самые разнообразные категории: социальные, новостные, образовательные и пр. Число приложений с каждым днем стремительно растет. Однако, чтобы создавать приложения, необходимы инструменты для разработки. В данной статье приводится обзор средств разработки для мобильного ПО, и их сравнительный анализ.
2 Обзор средств разработки для Android
Затрагивая самую обширную область в разработке, начнем с обзора средств для Android. Здесь в разработке ПО есть две основные IDE: проект Eclipse и, разработка компании JetBrains, среда Intellij IDEA.
2.1. Eclipse
Eclipse - это проект с открытым кодом (рис.1).
Java - '_aginAcT>vft^/îic/cartyri=a,a^>a/GCMIfl»ntSgrvice.ja"'.ia - Eclipse SDK Fde Edit Re-factoi Souice Navigate Search Project Run Window Help
3TF' asi 8- 01 0-1 ¡sil -Ш1 ffl 0>
• • ¡C1
! Package Explorei 23 t {jy library
»Si Android 4.0 Si Andioid Dependencies i-ii»'
gen |Genel.i!»il j.iv.1 FlJr . lb- ««it!
■ ^ bin r. ^ libs
• 2frf«
■ KSt
Ji abs iml
■j AiidioidManifcst.MTtl ¡a pom.xml ill project.picperti« I README.md * XS> LogmActivity
WL Android 4. L2 Bp Andioid Dependenci«
P gefi Iterated Java File-, '•¿¡r assets
libs
¿Jr out
o AndroidManifrrtHiif
ant properties j build, xml ¡a lint.mil
local, pi op erne 5 I Mard<|uid.iml MaraquuEJev apt aj MaraquiaLiYe.apl. ¡2 pioguard-projitt.W Dio|«Ct.(icop#rti«;
S
i [¿] GCMJntentSe.. ¿Z !j[| Basei ragmen...
[Jj CartActivrty... • dashboards...
1 Time: 17:28
' To change this Template use File [ Settings | File Tetnplates. public class GC'ilntentService extends GC'BaselirtentSer.'ice {
jflO» erri.de
protected void onErrar( Content argQj String argl ( { Loger.argô.toStringi ) + argl .toStringf 11 ;
>
•s gtverriiic
protected void otr'essagei Context argO, Intent argl) { Loger..iejio^e("QcFt a message!"};
String message • argl. getE tras( ). getString! "message") ; try {
ISOWObject object = ne/ ISONObjectimessagei; String action = object.getString( "action" ) i
if ( !GCvRtssr elJatRepe«Stack,h(}5r"5h(3Cfr(a<tiiin)) { GC':B«siweilcrtRep*atStacl< .utfdriirt<icV.'| action) ; Logeriftessojel"Access message'"); if ( action, equals! "updateForesterData") ) {
sendBroadcastf new Intent( "updatef oresterData" ) );
>
if [action, equals! "updatePeopleRights")) {
sendBroadcast! new Intent( "upiiatef orecterOata" ) )j
>
if (action,equals!"updiiteTimelitie")) {
sendPr«tdcast( new Intent( "iipdateTimeline*1 ) ) ;
>
H тик Lui
С- »14 В|
АН ► Activate.
Р' PlCfPr'CfChCî.l
© Connect Mylyn й
Connect to yo ni tail and AL M tools or cieaU a local tasl
Outline ft D 0
■В l% 4 4s • 41 ^ ^
E0 coiYi.maraquia 4 <Э 6£№nt«frt$«ivic<
• л pnEnor(Contí*t, 'String) ... onMessageiCantext Intent ,-. onRegist-er-ed(C ontext Strir ^ onllnregistrierl (Context St
gji Problem] Android
Q Comole Й i ogLat
H ЕВ. cT 0 ■
Ш
©
Рис. 1. Среда разработки Eclipse
В качестве инструмента сборки проекта выступает Ant. Данное IDE легко настраивается, интегрируется с необходимыми для разработки компонентами, такими как SDK Android, NDK (Native Developer Kit) и Java машиной. После успешной интеграции создать свой первый проект не составит труда. Уже после выбора нового проекта под Android, автоматически создается пустой "Hello World" проект, который можно запустить на реальном девайсе. В качестве языка используется Java. Данная IDE очень проста в работе, поэтому новичкам в разработке советуют именно ее.
2.2. Intellij IDEA
Более серьезным инструментом является Intellij IDEA (рис.2).
Не зря продукты JetBrains называют «Умная IDE». Казалось бы, такие мелочи как автоматическое закрытие скобок после условия, групповые перезаписи методов и автоматическое создание шаблонных классов (Interface, Singleton) на первый взгляд не очень важны. Тем не менее, по статистике за год на одних только операциях 'rename' экономится порядка 120 часов рабочего времени! Самая главная дилемма программистов - «как назвать переменную» - в данной IDE решена. К примеру, если у вас есть базовый класс "Item", и вы создаете из данных элементов массив, то среда разработки автоматически предложит назвать их "Items". Вроде бы мелочь, а приятно.
grjl RMydeWap • j^aixii QidSrr-.yqggjgctsVRecjclcMap] - [Rc^deMap] • -ЗМс^ШЕА 13Д
File Edt Yfiw Eäavlgate £ode Analyse Rafactor guild Run Tqdli VQ ЩпсЫ Help Cm RecytleMap QsrC Ejcom Ö nitrobuttites Pi RécvdaMcc £] Activity © RKycleC
9 i GöogleMapWrappe Q 'i GidCkstetirigStralegy
О * tsoocwwc
О 1 Projection Q i NoClusteringStrateqy O i ProiectiorWrapper T ЕЗ 1агу,
0 a Lwy Marte* T Ез mils
0 в SpheisalMercscar
О fa Cicle
O h OuítsrinoSettmflí O n íiaogleMap О Ь G'OurcOYerlay 0 Ъ MapVtew O a Marte О ь Poíygan 0 o Polyline © a SuopartMacFragmerit O o Tit Overlay
№ □ test
androtd-maps-extenslofis.ml
m Afldr«*IM(ínlf«t,*ml q pom..'mi Q proípít.pfopptíes
CjRecycleMap <D }an(fraidVnyfroi«MR*ryc
► D.dea
► El assets
W CÍ9*n
* В com IM
» ЕЗ nirobubtiies.P.ecycloMap
9 DatafcaseHandler.fsva 0 RecydeCentsi'AiWity.jaya
9 DataAppteaöon.java ы Andro¡dManffe5t.xrnl
Ёр deploy .xntf
O SpbshAcKvfty.íáva
lj-i RecydeMap» » К ш AndraidManifest.xml © AsyntíMLFetcher.iava
ra spJashJayout.xiW Q GPSCore.java
i eQtíVietí » InElátet. inflate IR. layout. type_o£_getted_i:e-source,
Vie« color = EowVie*.findYie«ById(R.id.categocy_colox!; ImageView image ■ (Image View) towView. f mdVievB^Id (P.. id. imageViein) TextView title ■ (TextViev) rowViev. £indVieäByld|R. id. title); TextView subscribe ■ (TextView) coeView.£indViev®yId(R.Id.subscribe) .-String ColorString = ""; m" drawable = 0; String tmleStrintr = " '; String subacEibeString ■ switch (Ii ^ свае l:
colotStting =• getStrmg(R.color.orange) ; dt&vable = R.dtawable. papetl ; ti tie Siting = "Буяага ':
зиЬзсгlbeString = "офисная бук&га, картон, книги, rasera., xyp¡ cue Zi
calorStcing • get3tring(R.colon.blue)• dCBBable ■ R.draw able,glassl: title String =■ ''Стекло" ;
subséribeString = "бугилйк, банят, отекпобой"; еьяв 3:
coloíStElng ■ getStEingfR.colot.gicay); dEaeoüie » R.dt4Mable.plasticl; titleStrmg ■ "ПлаСтиг":
sUbscribeString = "тпапикотое бутклкн, пакета м ттргчаз ynar.oi
сазе 4:
C0l0E3tElng ■ getStElüg(R.color.plnk) ; dcaeable • R. dtouable.iiietftll; titieString * "Летял"; _subscribeStrmcr - "алтасшигинг *,лвгп. лак ч^рннх у. глетнвк и-?■
—J "I?! У J
9
I i
ПГ1
TODO >9' ATMtoid И leiiftnal Mj EveriLög
□ O Updíte Property Files; The structure oí fdbwlng Android mflckJes vim changed;//135i¡32 CRLF ! UTF-0 : a
Рис. 2. Среда разработки ШеПу ШЕА
При подставлении цвета из файла ресурсов он отображается слева (рис.3). _
ir-T.loiStEiw = gatSrriny (Р . coi or. jäi
Рис. 3. Отображение цвета из файла ресурсов в среде разработки bitellij ШЕА
Немаловажной является возможность изменения темы оформления. При длительной работе (8 часов в день) светлый фон намного сильнее утомляет глаз, чем темно-серый.
Стоит заметить, что данный проект не является открытым, однако команда разработчиков практически еженедельно выпускает обновления с исправлением ошибок.
Также стоит упомянуть и важный элемент в разработке графический редактор интерфейса. Возможность создавать интерфейс путем Drug-and-Drop намного упрощает задачу и ускоряет ее выполнение. Результат можно сразу увидеть на эмулируемом устройстве.
2.3. Android Studio
В заключении следует упомянуть среду разработки Android Studio. Это результат сотрудничества JetBrains и Google, ориентированный на разработку приложений Android. По большому счету, это та же самая IDEA, за исключением того, что в качестве сборщика используется Gradle, а не Ant. Все изменения которые вносятся в Android Studio через некоторое время появляются в IDEA, и наоборот. Google рекомендует именно Android Studio для разработки приложений.
Рис. 4. Графический редактор интерфейса в среде разработки Ые11у ГОЕА
• I ■ № . I*---...- 3 I * ||,.1«П1 4
Рис. 5. Среда разработки ХСос1е
3 Обзор средств разработки для iOS 3.1 XCode
Это базовая IDE для разработки приложений для iOS, так что не имеет смысла приводить ее аналоги (рис.5).
Зачастую сторонние IDE заимствуют некоторые функции из XCode. К примеру, в проекте AppCode (продукт Jet Brains) нет визуального редактора интерфейсов. Разработчики из этой компании советуют изначально создавать интерфейсы в XCode, однако, никто не мешает пользоваться другими «умными средствами» Jet Brains. В отличии от открытой ОС Android, iOS накладывает своеобразную «монополию» на выбор средств для разработчика. Тем не менее, данная IDE по праву занимает первое место среди инструментов для разработки приложений. Это один из немногих инструментов, с которым хочется работать. XCode использует единственное окно рабочего пространства - workplace window, которое содержит большую часть необходимых для работы данных. С Xcode можно легко перейти от написания кода к его отладке и разработке пользовательского интерфейса, и все это в пределах одного рабочего окна. SDK iOS постоянно расширяет комплект инструментов XCode, добавляя компиляторы и фреймворки, необходимые для работы с ОС. В качестве языка для разработки выступает Objective-C - объектно-ориентированный язык для разработки всех iOS приложений.
Рис. 6. Среда разработки Visual Studio
4 Обзор средств разработки для Windows Phone
4.1 Visual Studio
IDE для разработки приложений на Windows Phone. Дополнив ее плагином Windows Phone SDK, разработчик получает готовый инструмент, содержащий все необходимое для разработки, (рис. 6)
Последняя версия инструментария (на момент написания этой статьи) доступна в версии Windows Phone SDK 7.1 Release Candidate в лицензии «Go Live» с возможностью разрабатывать свои приложения и публиковать их в Windows Phone Marketplace. Средства разработки Visual Studio предоставляют разработчику полноценные возможности по отладке продукта на устройстве и эмуляторе (такие же, как и при разработке приложений под настольную версию Windows). Редактором интерфейса в данной IDE выступает Expression Blend - интерактивный визуальный дизайнер для XAML, технологии описания интерфейса для приложений Silverlight и Windows Presentation Foundation(WPF). Visaul Studio - это отличное средство разработки, которое позволяет легко манипулировать слоями, анимацией, стилями и шаблонами. Это также и базовое средство разработки на XAML. Сама по себе программа Expression Blend платная. Однако, существует специальная версия - Expression Blend 4 for Windows Phone. Она используется для создания дизайна приложений под Windows Phone и доступна для разработчиков бесплатно - программа закачивается и устанавливается в процессе установки Windows Phone SDK. Языком для разработки является С#.
5 Заключение
В данной статье были рассмотрены самые популярные на сегодняшний день средства для нативной разработки мобильных приложений. Помимо них существует множество средств для кроссплатформенной разработки приложений, таких, как Xamarin, Unity3D, Cocos2Dx, Marmelade, Phonegap. Кроссплатформенная разработка используется при необходимости за кротчайший срок охватить максимум аудитории. Приложение, разработанное этим способом, не должно иметь доступа в ресурсам телефона. Данные IDE идеальны для создания "front end" приложений для веб сервисов.