Журнал LinuxFormat - перейти на главную

LXF163:Средства разработки для Android

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: «Категория:Постоянные рубрики Категория:Android '''Об­ще­ние с дру­ги­ми''' '''Программ…»)
 
(Сред­ст­ва раз­ра­бот­ки для Android)
 
(не показаны 2 промежуточные версии 1 участника)
Строка 1: Строка 1:
[[Категория:Постоянные рубрики]]
+
[[Категория: Учебники]]  
[[Категория:Android]]   
+
[[Категория:Android]]
 +
[[Категория: Программирование]]   
  
'''Об­ще­ние с дру­ги­ми'''
+
'''Программирование для мобильных устройств'''
 +
==Сред­ст­ва раз­ра­бот­ки для Android==
  
'''Программирование Свяжем ваши устройства через Bluetooth'''
+
[[Файл:BorovskiyA_fmt.png |left |100px |thumb|'''Наш эксперт''' Ан­д­рей Бо­ров­ский в 14 лет сломал школьную локальную сеть. И это оказалось только началом.]]
  
==Средства разработки для Android==
+
''За­ду­ма­но – сде­ла­но: к ра­до­сти Ан­д­рея Бо­ров­ско­го, про­­грам­­ми­­ро­­вать на­конец-то мож­но, «не от­хо­дя от кас­сы». В смыс­ле, пря­мо на мо­бильнике.''
  
[[Файл: |left |100px |thumb|'''Наш эксперт''']]
+
Че­ло­век, ко­то­рый дер­жит в ру­ках мо­биль­ное уст­рой­ст­во, мо­жет не толь­ко бро­дить по Ин­тернету или рас­ши­рять круг об­щения в со­ци­аль­ной се­ти. Воз­мож­но, пе­ред ва­ми про­грам­мист, ко­то­рый пи­шет при­ло­жение, спо­соб­ное пе­ре­вер­нуть мир.
LXF111.tut_adv.jkemp.psd
+
  
''Джуль­ет­та Кемп пи­шет ста­тьи для раз­лич­ных изда­­ний и ра­бо­та­ет сис­тем­ным ад­ми­ни­ст­ра­то­ром. Во вре­мя на­пи­са­ния этой ста­тьи ей при­шлось не­ма­ло по­жонг­ли­ро­вать с те­ле­фо­ном.''
+
Ес­ли мы с ва­ми од­ной кро­ви, то вы, как и я, при про­чих рав­ных усло­ви­ях пред­по­чи­тае­те та­кие уст­рой­ст­ва, ко­то­рые мож­но про­грам­ми­ро­вать. Осо­бен­но при­ят­но, когда про­грам­ми­ро­вать уст­рой­ст­во мож­но прямо на нем са­мом.
  
> По­иск спа­рен­ных и близ­ле­жа­щих уст­ройств.
+
Уст­рой­ст­ва Android с са­мо­го на­ча­ла бы­ли бо­лее дру­же­ст­вен­ны к раз­ра­бот­чи­ку, чем пред­ста­ви­те­ли бо­лее ранних мо­биль­ных плат­форм. Поч­ти на ка­ж­дом уст­рой­ст­ве есть от­ла­доч­ный порт (и со­от­вет­ст­вую­щий ре­жим ра­бо­ты уст­рой­ст­ва), а Android SDK со­дер­жит от­лич­ный эму­ля­тор уст­ройств Android раз­ных по­ко­лений. Од­на­ко с неко­то­рых пор про­грам­ми­ро­вание для Android вы­шло на но­вый уро­вень. Сей­час уже все­рь­ез го­во­рят о том, что план­ше­ты Android мо­гут за­менить но­ут­бу­ки. Сто­ит ли удив­лять­ся, что и та­кая сфе­ра ком­пь­ю­тер­ной дея­тель­но­сти, как раз­ра­бот­ка про­грамм, на­шла свое ме­сто на этих де­вай­сах. Пре­иму­ще­ст­ва по­доб­ной раз­ра­бот­ки оче­вид­ны: по­сле оче­ред­ной сбор­ки не нуж­но тра­тить вре­мя на пе­ре­гон­ку про­грам­мы с ПК на уст­рой­ст­во. Са­мо сред­ст­во раз­ра­бот­ки ста­но­вит­ся та­ким же мо­биль­ным, как и де­вайс, на ко­то­ром оно уста­нов­ле­но. Тем, кто толь­ко учит­ся пи­сать про­грам­мы для мо­биль­ных уст­ройств, эти сред­ст­ва раз­ра­бот­ки то­же мо­гут по­мочь, по­сколь­ку мно­гие из них зна­чи­тель­но со­кра­ща­ют вре­мен­ной ин­тер­вал ме­ж­ду прав­кой ко­да и со­зер­цанием конеч­но­го ре­зуль­та­та на эк­ране уст­рой­ст­ва.
  
Джуль­ет­та Кемп рассказывает, как Bluetooth по­мо­га­ет об­щать­ся
+
Не­достат­ки про­цес­са на­пи­сания про­грамм на мо­биль­ных уст­рой­ст­вах то­же оче­вид­ны. Про­грам­ма – это текст, для на­пи­сания ко­то­ро­го нуж­на кла­виа­ту­ра (по­про­буй­те на­дик­то­вать текст про­грам­мы с по­мо­щью го­ло­со­вых сер­ви­сов Google), при­чем, по­сколь­ку язы­ки про­грам­ми­ро­вания ши­ро­ко ис­поль­зу­ют сим­во­лы, ко­то­рые ред­ко встре­ча­ют­ся в тек­стах на ес­те­ст­вен­ных язы­ках (#, &, и ^), же­ла­тель­но, что­бы кла­виа­ту­ра бы­ла пол­но­цен­ной ком­пь­ю­тер­ной, а не уре­зан­ной SMS-ори­ен­ти­ро­ван­ной. Вто­рая про­бле­ма – это неко­то­рые ог­раничения, при­су­щие ОС мо­биль­ных уст­ройств, за­труд­няю­щие та­кие про­цес­сы, как, на­при­мер, от­лад­ка. Тем не менее, ес­ли вы вы­бе­ре­те под­хо­дя­щие ин­ст­ру­мен­ты и ра­зум­но оп­ре­де­ли­те, для ка­ких имен­но за­дач их ис­поль­зо­вать, воз­мож­ность пи­сать про­грам­мы на мо­биль­ных уст­рой­ст­вах мо­жет стать при­ят­ной и по­лез­ной.
с дру­ги­ми уст­рой­ст­ва­ми, и ­проясняет сер­вис об­ме­на со­об­ще­ния­ми.
+
  
Се­го­дня Bluetooth мож­но най­ти на лю­бых уст­рой­ст­вах, и с его по­мо­щью лег­ко об­менивать­ся дан­ны­ми ме­ж­ду уст­рой­ст­ва­ми. На этом уро­ке мы на­пи­шем сер­вис об­ме­на со­об­щения­ми по Bluetooth и уз­на­ем, как об­на­ру­жить дру­гие уст­рой­ст­ва (спа­рен­ные или нет), за­пустить сер­вер Bluetooth, от­пра­вить за­прос на под­клю­чение со сто­ро­ны кли­ен­та и пе­ре­дать дан­ные ме­ж­ду дву­мя уст­рой­ст­ва­ми. От­ме­тим, что этот про­ект де­лал­ся под Android 10 (2.3.3), но сра­бо­та­ет­ся и с бо­лее поздними вер­сия­ми. Пол­ный код уро­ка мож­но най­ти на LXFDVD, но помните, что он не бу­дет вы­пол­нять­ся «как есть» – для ком­пи­ля­ции в ва­шей локаль­ной сре­де про­ек­ты Android нуж­но на­стро­ить ли­бо вруч­ную, ли­бо в Eclipse.
+
Мож­но ли ис­поль­зо­вать мо­биль­ные сред­ст­ва раз­ра­бот­ки для соз­дания серь­ез­ных про­ек­тов? От­вет на этот во­прос за­ви­сит от то­го, что сле­ду­ет счи­тать серь­ез­ным про­ек­том. Ес­ли под серь­ез­но­стью про­ек­та понимать его успеш­ность, то сто­ит на­помнить, что мно­гие успеш­ные про­ек­ты Android со­дер­жат не так уж мно­го ис­ход­но­го ко­да, и, ста­ло быть, про­сты в сбор­ке и управ­лении.
  
Ус­та­нав­ли­ва­ем со­еди­не­ние по Bluetooth
+
Как вы уже по­ня­ли, мы рас­смот­рим про­грам­мы для Android, ко­то­рый по­зво­ля­ют нам не толь­ко пи­сать код на лю­би­мом смарт­фоне или план­ше­те, но и пре­вра­щать этот код в про­грамм­ные мо­ду­ли, го­то­вые к вы­полнению. Та­кие про­грам­мы ши­ро­ко ис­поль­зу­ют пре­иму­ще­ст­ва мо­биль­ной раз­ра­бот­ки и сме­ло пы­та­ют­ся пре­одо­леть ее недостат­ки.
 +
Ра­зу­ме­ет­ся, да­же при ра­бо­те с неболь­ши­ми про­ек­та­ми ис­поль­зо­вание эму­ля­то­ра уст­рой­ст­ва на ПК име­ет свои пре­иму­ще­ст­ва. С по­мо­щью эму­ля­то­ра мы смо­жем про­ве­рить ра­бо­то­спо­соб­ность на­шей про­грам­мы на раз­ных вер­си­ях плат­фор­мы, тогда как при раз­ра­бот­ке и от­лад­ке про­грам­мы на на­стоя­щем же­ле­зе мы име­ем толь­ко то, что име­ем.
  
Из­менения, ко­то­рые надо про­де­лать в фай­ле AndroidManifest.xml, опи­са­ны на на­шем DVD. Для об­ме­на дан­ны­ми по Bluetooth по­на­до­бят­ся и кли­ент, и сер­вер. Сер­вер слу­ша­ет под­клю­чения, от­крыв со­кет BluetoothServerSocket; кли­ент соз­да­ет BluetoothSocket, от­кры­ва­ет ка­нал свя­зи с сер­ве­ром RFCOMM и от­прав­ля­ет за­прос на со­единение. Сер­вер принима­ет со­единение и от­кры­ва­ет свой BluetoothSocket. Когда оба со­ке­та BluetoothSocket на од­ном и том же ка­на­ле RFCOMM бу­дут от­кры­ты, кли­ент и сер­вер под­клю­чат­ся друг к дру­гу и смо­гут об­менивать­ся дан­ны­ми.
+
===Android Java IDE (AIDE)====
  
По­сле уста­нов­ки со­единения сер­вер дол­жен за­крыть свой со­кет BluetoothServerSocket, ес­ли вам не нуж­но под­дер­жи­вать несколь­ко со­единений од­но­вре­мен­но.
+
Эта про­грам­ма пред­на­зна­че­на для соз­дания пол­но­цен­ных при­ло­жений Android, со­блю­даю­щих все пра­ви­ла по­ве­дения при­ло­жения в сис­те­ме; и что осо­бен­но цен­но – Android Java IDE по­мо­жет вам не на­ру­шать эти пра­ви­ла, да­же ес­ли вы еще не очень твер­до их усвои­ли. Но это не все. Уже до­воль­но дав­но из ми­ра поль­зо­ва­тель­ских ин­тер­фей­сов в мир средств раз­ра­бот­ки проника­ют идеи discoverability – са­мо­оче­вид­но­сти пра­вил взаи­мо­дей­ст­вия с сис­те­мой. Android Java IDE яв­ля­ет­ся пре­крас­ным при­ме­ром са­мо­оче­вид­но­сти. Соз­дав в про­грам­ме за­го­тов­ку про­ек­та при­ло­жения Android, мы уви­дим пол­ный кар­кас про­ек­та, в ко­то­ром лег­ко ра­зо­брать­ся, да­же несмот­ря на то, что ин­тер­фейс план­ше­тов и смарт­фо­нов не очень удо­бен для на­ви­га­ции по слож­ным струк­ту­рам. Во­об­ще, ин­тер­фейс Android Java IDE вы­полнен на твер­дую пя­тер­ку.
  
Итак, есть два ва­ри­ан­та соз­дания под­клю­чения:
+
Про­грам­ма достой­на сво­его имени – она дей­ст­ви­тель­но пред­став­ля­ет со­бой ин­тег­ри­ро­ван­ную сре­ду раз­ра­бот­ки и ох­ва­ты­ва­ет поч­ти все ее ас­пек­ты: управ­ление фай­ла­ми про­ек­та, от­лад­ка и под­го­тов­ка ре­ли­за (фай­ла apk), ин­те­гра­ция с сис­те­ма­ми кон­тро­ля вер­сий (а так­же с DropBox), ко­ман­ды ин­тел­лек­ту­аль­ной на­ви­га­ции по про­ек­ту (на­при­мер, по­иск вхо­ж­дений за­дан­но­го имени). AIDE уме­ет от­кры­вать про­ек­ты, соз­дан­ные в Eclipse, и под­дер­жи­ва­ет та­кие воз­мож­но­сти, как ин­кре­мент­ная ком­пи­ля­ция и управ­ление ре­жи­ма­ми оп­ти­ми­за­ции ко­да. Бо­га­тые сред­ст­ва ин­троспек­ции язы­ка Java и ком­пи­ля­тор, спо­соб­ный ра­бо­тать с фраг­мен­та­ми ко­да на ле­ту, по­зво­ли­ли раз­ра­бот­чи­кам реа­ли­зо­вать все те функ­ции, без ко­то­рых не об­хо­дит­ся ни од­на со­вре­мен­ная ин­тег­ри­ро­ван­ная сре­да раз­ра­бот­ки, та­кие как ав­то­ма­ти­че­­ское за­вер­шение ко­да и ин­те­рак­тив­ный ре­жим вы­яв­ления оши­бок эта­па ком­пи­ля­ции непо­сред­ст­вен­но в про­цес­се на­пи­сания ва­шей про­грам­мы. Во вре­мя ра­бо­ты с ис­ход­ны­ми тек­ста­ми в AIDE про­ве­ря­ет­ся не толь­ко кор­рект­ность вве­ден­ных иден­ти­фи­ка­то­ров и клю­че­вых слов, но и син­так­сис. На­до при­знать, что сре­ди всех рас­смот­рен­ных про­грамм, AIDE – един­ст­вен­ная, в ко­то­рой эта ин­те­рак­тив­ная про­вер­ка при­но­сит ощу­ти­мую поль­зу. Кро­ме то­го, Android Java IDE, да­же в бес­плат­ном ва­ри­ан­те, об­ла­да­ет хо­ро­шим на­бо­ром ин­ст­ру­мен­тов ав­то­ма­ти­че­­ско­­го ре­фак­то­рин­га и бы­ст­рой на­ви­га­ции по ис­ход­ным тек­стам.
  
» на­пи­сать от­дель­ные про­грам­мы кли­ен­та и сер­ве­ра;
+
В на­строй­ках про­грам­мы Android Java IDE вы мо­же­те за­дать со­че­тания кла­виш эк­ран­ной кла­виа­ту­ры для вы­полнения раз­лич­ных дей­ст­вий.
  
» на­пи­сать про­грам­му, спо­соб­ную вес­ти се­бя и как кли­ент, и как сер­вер, и за­пра­ши­вать или принимать под­клю­чение.
+
К недостат­кам AIDE сле­ду­ет отнести от­сут­ст­вие под­держ­ки Android NDK. Нет, ра­зу­ме­ет­ся, вам никто не за­пре­ща­ет раз­ме­щать ском­пи­ли­ро­ван­ные биб­лио­те­ки С/С++ в ди­рек­то­рии lib и взаи­мо­дей­ст­во­вать с ними с по­мо­щью JNI. Но ком­пи­ли­ро­вать биб­лио­те­ки при­дет­ся на боль­шом ком­пь­ю­те­ре, на ко­то­ром уста­нов­лен NDK. Еще один неболь­шой недоста­ток про­грам­мы – кноп­ки Undo и Redo спря­та­ны слиш­ком глу­бо­ко в недрах ее ин­тер­фей­са. При вво­де с эк­ран­ной кла­виа­ту­ры ошиб­ки слу­ча­ют­ся го­раз­до ча­ще, чем при ра­бо­те с кла­виа­ту­рой обыч­ной, и кноп­ку от­ка­та из­менений хо­те­лось бы всегда иметь под ру­кой. Ра­зу­ме­ет­ся, обе­им ко­ман­дам на­зна­че­ны бы­ст­рые со­че­тания кла­виш (стан­дарт­ные для этих команд Ctrl + Z и Ctrl + Y), но при ра­бо­те с эк­ран­ной кла­виа­ту­рой да­же ввод этих со­че­таний про­из­во­дит­ся не так бы­ст­ро, как хо­те­лось бы. Луч­ше бы­ло бы раз­мес­тить кноп­ки на панели бы­ст­ро­го досту­па.
  
Вто­рой ва­ри­ант ис­поль­зу­ет­ся во мно­гих при­ло­жениях Bluetooth; его мы и вы­бе­рем. Ес­ли у вас нет двух уст­ройств для про­вер­ки со­единения, мож­но раз­вер­нуть сер­вер Java на но­ут­бу­ке или ПК. По уста­нов­ке со­единения и сер­вер, и кли­ент бу­дут пе­ре­да­вать и принимать дан­ные. По­это­му наш класс BluetoothIMService бу­дет вы­пол­нять три от­дель­ных дей­ст­вия:
+
Как и мно­гие дру­гие при­ло­жения Android, про­грам­ма су­ще­ст­ву­ет в двух ва­ри­ан­тах: ба­зо­вом бес­плат­ном и плат­ном рас­ши­рен­ном. Глав­ным ог­раничением бес­плат­ной вер­сии по сравнению с плат­ной яв­ля­ет­ся невоз­мож­ность от­крыть про­ект, со­стоя­щий из бо­лее чем 25 фай­лов. Мне это ог­раничение пред­став­ля­ет­ся не очень су­ще­ст­вен­ным, по­сколь­ку ра­бо­тать с про­ек­та­ми та­ко­го раз­ме­ра на мо­биль­ном уст­рой­ст­ве вряд ли име­ет смысл. Дру­гое ог­раничение – от­сут­ст­вие в бес­плат­ной вер­сии функ­ции за­пи­си в ре­по­зи­то­рий Git (счи­ты­вать дан­ные мож­но), так что ес­ли вы хо­ти­те ис­поль­зо­вать бес­плат­ную вер­сию со­вме­ст­но, на­при­мер, с Eclipse, при­дет­ся по­ло­жить­ся на DropBox.
  
» слу­шать по­пыт­ки со­единения («сер­вер»);
+
От­ли­чи­тель­ная чер­та AIDE – необ­хо­ди­мость «на­стоя­щей» уста­нов­ки ва­шей про­грам­мы в сис­те­ме да­же на эта­пе от­лад­ки. С од­ной сто­ро­ны – про­грам­ма сра­зу на­чи­на­ет су­ще­ст­во­вать «в ре­аль­ном ок­ру­жении», и это хо­ро­шо. С дру­гой сто­ро­ны, вам при­дет­ся раз­ре­шить уст­рой­ст­ву Android уста­нав­ли­вать про­грам­мы из неиз­вест­ных ис­точников (что, впро­чем, все рав­но при­дет­ся сде­лать, ес­ли вы ре­ши­ли за­нять­ся про­грам­ми­ро­ванием под Android все­рь­ез).
  
» от­прав­лять за­прос на со­единения («кли­ент»);
+
===Android Terminal IDE===
 +
Бес­плат­ная сре­да раз­ра­бот­ки Android Terminal IDE уже мною упо­ми­на­лась – прав­да, в ином кон­тек­сте. Те­перь при­шла по­ра ска­зать о том, что Terminal IDE – это не толь­ко на­бор ин­ст­ру­мен­тов команд­ной стро­ки, ко­то­рые не тре­бу­ют прав су­пер­поль­зо­ва­те­ля, но и до­воль­но мощ­ная сре­да раз­ра­бот­ки. Са­му про­грам­му мож­но за­гру­зить че­рез Google Play, но пе­ред на­ча­лом ра­бо­ты ре­ко­мен­ду­ет­ся по­се­тить сайт про­грам­мы на хостин­ге Google Code http://code.google.com/p/terminal-ide/, ска­чать и внима­тель­но про­честь до­ку­мен­та­цию.
  
» об­ра­ба­ты­вать пе­ре­да­чу дан­ных по­сле уста­нов­ки со­единения.
+
Глав­ное от­ли­чие Terminal IDE от боль­шин­ст­ва мо­биль­ных средств раз­ра­бот­ки для Android за­клю­ча­ет­ся в том, что этот па­кет про­грамм ори­ен­ти­ро­ван на ра­бо­ту с команд­ной стро­кой и тек­сто­вы­ми ин­тер­фей­са­ми. Для одних это мо­жет стать недостат­ком, для дру­гих – досто­ин­ст­вом. Ме­ж­ду про­чим, уста­но­вив Terminal IDE, вы смо­же­те под­клю­чить­ся к сво­ему уст­рой­ст­ву Android с лю­бо­го ком­пь­ю­те­ра с по­мо­щью SSH, и ис­поль­зо­вать для ра­бо­ты с кон­со­лью пол­но­раз­мер­ные кла­виа­ту­ру и эк­ран (это осо­бен­но удоб­но, ес­ли ва­ше мо­биль­ное уст­рой­ст­во – смарт­фон с эк­ра­ном око­ло 4 дюй­мов). Труд­но­сти вво­да тек­ста с эк­ран­ной кла­виа­ту­ры – од­на из са­мых су­ще­ст­вен­ных слож­но­стей при на­пи­сании про­грамм на уст­рой­ст­вах Android. Раз­ра­бот­чик Terminal IDE пол­но­стью осоз­нал это и пре­доста­вил нам все мыс­ли­мые сред­ст­ва для уп­ро­щения вво­да.
  
Эти дей­ст­вия бу­дут реа­ли­зо­ва­ны в от­дель­ных нитях, и мы смо­жем слу­шать со­единения, не пре­ры­вая про­чую ак­тив­ность при­ло­жений и сис­те­мы.
+
Дру­гая характер­ная осо­бен­ность Terminal IDE за­клю­ча­ет­ся в том, что для вы­полнения на­пи­сан­ных ва­ми про­грамм не тре­бу­ет­ся ника­ких спе­ци­аль­ных прав (и не нуж­но вы­пол­нять про­це­ду­ру уста­нов­ки, как в пре­ды­ду­щем слу­чае). В Terminal IDE про­грам­мы мож­но со­би­рать при­выч­ным для «джа­ви­стов» спо­со­бом: файл ис­ход­ных тек­стов пре­вра­ща­ет­ся в файл .class, ко­то­рый, в свою оче­редь, со­би­ра­ет­ся в JAR. Следует толь­ко от­ме­тить, что ес­ли для сбор­ки JAR при­ме­ня­лась ути­ли­та dx, по­лу­чен­ные фай­лы не бу­дут со­вмес­ти­мы со стан­дарт­ны­ми вир­ту­аль­ны­ми ма­ши­на­ми Java, поскольку це­ле­вой плат­фор­мой яв­ля­ет­ся вир­ту­аль­ная ма­ши­на Android.
  
Мы соз­да­ем и за­пуска­ем сер­вис сле­дую­щим об­ра­зом:
+
Тре­тья осо­бен­ность – рас­ши­рен­ная про­грамм­ная кла­виа­ту­ра, пред­на­зна­чен­ная для про­грам­ми­стов и всех, ко­му при­хо­дит­ся ра­бо­тать с ин­ст­ру­мен­та­ми команд­ной стро­ки. Об этой кла­виа­ту­ре я ска­зал уже мно­го хо­ро­ше­го, по­вто­рю толь­ко, что по­сле уста­нов­ки Terminal IDE ее мож­но ис­поль­зо­вать не толь­ко в IDE, но и в лю­бой дру­гой про­грам­ме Android. Сре­ди кон­соль­ных ин­ст­ру­мен­тов про­грам­мы есть и Git.
  
public class BluetoothIMService {
+
По­ми­мо про­грамм Java, пред­став­лен­ных в ви­де JAR-фай­лов, Terminal IDE по­зво­ля­ет со­би­рать «на­стоя­щие» при­ло­жения Android. Сре­ди де­мо-при­ме­ров, ко­то­рые вхо­дят в по­став­ку про­грам­мы, есть при­мер и та­ко­го при­ло­жения. Как и рас­смот­рен­ная вы­ше, эта сре­да раз­ра­бот­ки об­ла­да­ет воз­мож­но­стью соз­да­вать как непод­пи­сан­ные, так и под­пи­сан­ные фай­лы apk. Луч­ше все­го ска­зан­ное об этой про­грам­ме ре­зю­ми­ру­ет от­зыв од­но­го из поль­зо­ва­те­лей, остав­лен­ный на сай­те Play Market: «мощней­шая вещь».
  
// Раз­лич­ные по­ля; под­роб­но­сти см. в ко­де на DVD
+
===CCTools IDE===
  
public BluetoothIMService(Context context, Handler h) {
+
Эта про­грам­ма – тво­рение оте­че­­ст­вен­но­го раз­ра­бот­чи­ка – по­лу­чи­ла невы­со­кую оцен­ку от поль­зо­ва­те­лей Play Market, но ска­зать о ней, тем не менее, сто­ит. В от­ли­чие от рас­смот­рен­ных вы­ше, для сбор­ки про­грамм CCTools IDE ис­поль­зу­ет ком­пи­ля­тор GCC, и с ее по­мо­щью мож­но со­би­рать ис­пол­няе­мые фай­лы для мик­ро­про­цес­со­ра (не толь­ко ARM, но так­же MIPS и x86!), а не для вир­ту­аль­ной ма­ши­ны Andoid. Со­от­вет­ст­вен­но, и язы­ком раз­ра­бот­ки в этом слу­чае бу­дет не Java, а C/C++. Сбор­кой управ­ля­ет «на­стоя­щая» ути­ли­та make. Идея со­би­рать про­грам­мы для ПК на уст­рой­ст­ве Android вы­гля­дит за­бав­но – мо­биль­ная плат­фор­ма на­бра­ла си­лу и ре­ши­ла по­ме­рить­ся муску­ла­ми с ПК. Ес­ли вы пи­ше­те кон­соль­ную про­грам­му, ре­зуль­тат ее вы­полнения мож­но по­смот­реть на встро­ен­ном тер­ми­на­ле.
  
adapter = BluetoothAdapter.getDefaultAdapter();
+
К недостат­кам про­грам­мы сле­ду­ет отнести от­сут­ст­вие про­грам­ми­ст­ской кла­виа­ту­ры (та­кой, как у Terminal IDE). Са­ма воз­мож­ность иметь ком­пи­ля­тор GCC на мо­биль­ном уст­рой­ст­ве под управ­лением Android весь­ма при­вле­ка­тель­на. Ос­та­ет­ся на­де­ять­ся на то, что в по­сле­дую­щих вер­си­ях CCTools IDE об­за­ве­дет­ся соб­ст­вен­ной кла­виа­ту­рой или дру­гим сред­ст­вом уско­рения вво­да тек­стов про­грамм.
  
handler = h;
+
===SourceLair===
  
state = STATE_NONE;
+
Эта про­грам­ма ин­те­рес­на пре­ж­де все­го тем, что реа­ли­зу­ет сравнитель­но но­вую кон­цеп­цию об­лач­но­го сер­ви­са. Вы пи­ше­те текст про­грам­мы, от­сы­лае­те его на сер­вер, ко­то­рый пы­та­ет­ся его со­брать и за­пустить про­грам­му, а за­тем воз­вра­ща­ет вам ре­зуль­тат. Об­лач­ный сер­вер по­зво­ля­ет пи­сать про­грам­мы на язы­ках, для ко­то­рых от­сут­ст­ву­ют мо­биль­ные ком­пи­ля­то­ры. На­при­мер, про­грам­ма SourceLair пред­ла­га­ет доступ к ком­пи­ля­то­рам язы­ков C, С++, Objective-C, Fortran и Pascal. Бо­лее то­го, у про­грам­мы SourceLair есть сайт (sourcelair.com), на ко­то­ром мож­но вы­пол­нять все те же опе­ра­ции с по­мо­щью брау­зе­ра, ниче­го не уста­нав­ли­вая на свое уст­рой­ст­во во­об­ще. Фай­лы про­грамм мож­но хранить локаль­но и на сер­ве­ре (для это­го необ­хо­ди­мо за­ре­ги­ст­ри­ро­вать­ся на сер­ве­ре, за ка­ко­вую про­це­ду­ру на дан­ный мо­мент раз­ра­бот­чи­ки денег не бе­рут).
  
}
+
Не­достат­ки об­лач­ной сбор­ки (речь сей­час идет о кон­цеп­ции в об­щем, но все это при­менимо и к кон­крет­ной про­грам­ме) ле­жат на по­верх­но­сти, как и ее досто­ин­ст­ва. Об­лач­ные сер­ви­сы доступ­ны толь­ко там и тогда, когда доступ­но са­мо об­ла­ко. Со­вре­мен­ные ин­тег­ри­ро­ван­ные сре­ды раз­ра­бот­ки взаи­мо­дей­ст­ву­ют с ком­пи­ля­то­ром в ин­те­рак­тив­ном ре­жи­ме да­же на эта­пе вво­да ис­ход­ных тек­стов (об эта­пе от­лад­ки нече­го и го­во­рить). Это оз­на­ча­ет, что ес­ли у вас нет тол­сто­го ка­на­ла для свя­зи с об­ла­ком, все стан­дарт­ные опе­ра­ции бу­дут про­те­кать му­чи­тель­но дол­го.
  
public synchronized void start() {
+
Что ка­са­ет­ся про­грам­мы SourceLair, то она по­па­ла в об­зор толь­ко по­то­му, что у нее есть кли­ент­ское при­ло­жение для Android. На дан­ный мо­мент это ско­рее де­мон­ст­ра­ция кон­цеп­ции и воз­мож­ность «по­про­бо­вать на зуб» незна­ко­мый язык про­грам­ми­ро­вания. Для дру­гих це­лей про­грам­ма вряд ли сго­дит­ся. Нель­зя не от­ме­тить один до­сад­ный факт: вер­сия кли­ен­та SourceLair Android, доступ­ная для ска­чи­вания, из­ряд­но уста­ре­ла. Вер­сия, рас­счи­тан­ная на ра­бо­ту в брау­зе­ре, со­дер­жит мень­ше оши­бок и пред­ла­га­ет боль­ше воз­мож­но­стей. На­при­мер, по­ми­мо пе­ре­чис­лен­ных вы­ше язы­ков про­грам­ми­ро­вания брау­зер­ная вер­сия пред­ла­га­ет нам Java, Python, Ruby, Lua, SQL, CSS и HTML. Кро­ме то­го, брау­зер­ный ва­ри­ант под­дер­жи­ва­ет под­свет­ку син­так­си­са. Доступ­ный в на­стоя­щий мо­мент кли­ент Android не по­зво­ля­ет соз­да­вать фай­лы на сер­ве­ре, но с его по­мо­щью мож­но за­гру­жать, ре­дак­ти­ро­вать и со­хра­нять на сер­ве­ре уже соз­дан­ные (на­при­мер, с по­мо­щью брау­зер­но­го ва­ри­ан­та про­грам­мы) фай­лы. Са­ма техно­ло­гия за­пуска про­грамм на сер­ве­ре ог­раничи­ва­ет воз­мож­но­сти вы­во­да про­грамм стро­ка­ми тек­ста. На­сколь­ко мож­но по­нять на­ме­рения раз­ра­бот­чи­ков (из­ло­жен­ные в их бло­ге на том же сай­те), у поль­зо­ва­те­ля долж­на быть воз­мож­ность за­гру­зить ре­зуль­тат сбор­ки на свое уст­рой­ст­во, при­чем, ес­ли поль­зо­ва­тель ра­бо­та­ет на уст­рой­ст­ве под управ­лением Android, ре­зуль­тат сбор­ки дол­жен быть со­вмес­тим с этой ОС.
  
if (connectThread != null) {connectThread.cancel(); connectThread = null;}
+
===DroidDevelop===
  
if (dataThread != null) {dataThread.cancel(); dataThread = null;}
+
Эта про­грам­ма яв­ля­ет­ся над­строй­кой над дру­гой про­грам­мой – JavaIDEDroid, ко­то­рая по­зво­ля­ет со­би­рать про­грам­мы для Android, но не очень удоб­на в ис­поль­зо­вании. DroidDevelop ис­прав­ля­ет ука­зан­ный недоста­ток JavaIDEDroid с по­мо­щью неза­тей­ли­во­го, но достой­но­го поль­зо­ва­тель­ско­го ин­тер­фей­са. По­сколь­ку для сво­ей ра­бо­ты про­грам­ма тре­бу­ет JavaIDEDroid и дис­пет­чер фай­лов OI FileManager, уста­нов­ка ее на уст­рой­ст­во вы­гля­дит сложнее, чем, на­при­мер, уста­нов­ка AIDE. Впро­чем, про­грам­ми­ста вряд ли мож­но ис­пу­гать та­ки­ми ме­ло­ча­ми. В про­грам­ме ис­поль­зу­ет­ся соб­ст­вен­ный ре­дак­тор ко­да с ну­ме­ра­ци­ей строк (что хо­ро­шо) и под­свет­кой син­так­си­са, ко­то­рая име­ет тен­ден­цию под­чер­ки­вать незна­ко­мые ей име­на и ме­то­ды клас­сов (что от­вле­ка­ет). В но­вых вер­си­ях про­грам­ма об­за­ве­лась мо­ду­лем рас­ши­рения, спо­соб­ным вы­пол­нять ба­зо­вые опе­ра­ции ре­фак­то­рин­га.
  
setState(STATE_LISTEN);
+
===С4Droid===
  
if (acceptThread == null) {
+
Про­грам­ма С4Droid, су­ще­ст­вую­щая в плат­ной и ба­зо­вой вер­си­ях, пред­став­ля­ет со­бой ком­пи­ля­тор C, объ­е­динен­ный с про­стым ре­дак­то­ром ко­да. При ра­бо­те с про­грам­мой труд­но от­де­лать­ся от мыс­ли, что ее на­зна­чение – де­мон­ст­ра­ция воз­мож­но­сти соз­да­вать про­грам­мы на C на уст­рой­ст­ве Android (еще недав­но та­кая воз­мож­ность бы­ла оче­вид­на не всем). Плат­ная вер­сия об­ла­да­ет несколь­ко бо­лее ши­ро­кой функ­цио­наль­но­стью, неже­ли ба­зо­вая (на­при­мер, под­свет­кой син­так­си­са). В минималь­ной ком­плек­та­ции про­грам­ма под­хо­дит раз­ве что для изу­чения основ про­грам­ми­ро­вания на C, хо­тя уст­рой­ст­ва Android вряд ли во­об­ще го­дят­ся для этой це­ли. С по­мо­щью мо­ду­лей рас­ши­рений про­грам­му мож­но нау­чить соз­да­вать про­грам­мы, свя­зан­ные с биб­лио­те­кой bionic (на­пом­ню, что bionic иг­ра­ет роль стан­дарт­ной биб­лио­те­ки C на плат­фор­ме Android) и соз­да­вать ис­пол­няе­мые фай­лы Android, ко­то­рые мож­но бу­дет вы­пол­нять вне са­мой про­грам­мы. Ос­нов­ная слож­ность в раз­ра­бот­ке про­грамм C, пред­на­зна­чен­ных для вы­полнения на «же­ле­зе», а не на вир­ту­аль­ной ма­шине, за­клю­ча­ет­ся в необ­хо­ди­мо­сти свя­зы­вать эти про­грам­мы с ди­на­ми­че­­ски­­ми биб­лио­те­ка­ми Android, но под­клю­чение биб­лио­тек (по­ми­мо bionic) в С4Droid не пре­ду­смот­ре­но. От­сле­дить вы­вод кон­соль­ных про­грамм мож­но на встро­ен­ном в C4Droid эму­ля­то­ре тер­ми­на­ла. Про­грам­ма так­же осна­ще­на под­свет­кой син­так­си­са, со­мнитель­ную по­лез­ность ко­то­рой де­мон­ст­ри­ру­ет эк­ран­ный снимок.
  
acceptThread = new AcceptThread(true);
+
===За­клю­чение===
  
acceptThread.start();
+
Под­во­дя итог, сле­ду­ет при­знать, что про­грам­ми­ро­вание для Android в сре­де Android вы­шло на серь­ез­ный уро­вень. Что ка­са­ет­ся эф­фек­тив­но­сти и эр­го­но­ми­ки, то по этим по­ка­за­те­лям на­пи­сание про­грамм на мо­биль­ном уст­рой­ст­ве ма­ло чем от­ли­ча­ет­ся от лю­бой дру­гой дея­тель­но­сти, свя­зан­ной с вво­дом тек­ста. |

Текущая версия на 02:16, 19 октября 2018


Программирование для мобильных устройств

Содержание

[править] Сред­ст­ва раз­ра­бот­ки для Android

(thumbnail)
Наш эксперт Ан­д­рей Бо­ров­ский в 14 лет сломал школьную локальную сеть. И это оказалось только началом.

За­ду­ма­но – сде­ла­но: к ра­до­сти Ан­д­рея Бо­ров­ско­го, про­­грам­­ми­­ро­­вать на­конец-то мож­но, «не от­хо­дя от кас­сы». В смыс­ле, пря­мо на мо­бильнике.

Че­ло­век, ко­то­рый дер­жит в ру­ках мо­биль­ное уст­рой­ст­во, мо­жет не толь­ко бро­дить по Ин­тернету или рас­ши­рять круг об­щения в со­ци­аль­ной се­ти. Воз­мож­но, пе­ред ва­ми про­грам­мист, ко­то­рый пи­шет при­ло­жение, спо­соб­ное пе­ре­вер­нуть мир.

Ес­ли мы с ва­ми од­ной кро­ви, то вы, как и я, при про­чих рав­ных усло­ви­ях пред­по­чи­тае­те та­кие уст­рой­ст­ва, ко­то­рые мож­но про­грам­ми­ро­вать. Осо­бен­но при­ят­но, когда про­грам­ми­ро­вать уст­рой­ст­во мож­но прямо на нем са­мом.

Уст­рой­ст­ва Android с са­мо­го на­ча­ла бы­ли бо­лее дру­же­ст­вен­ны к раз­ра­бот­чи­ку, чем пред­ста­ви­те­ли бо­лее ранних мо­биль­ных плат­форм. Поч­ти на ка­ж­дом уст­рой­ст­ве есть от­ла­доч­ный порт (и со­от­вет­ст­вую­щий ре­жим ра­бо­ты уст­рой­ст­ва), а Android SDK со­дер­жит от­лич­ный эму­ля­тор уст­ройств Android раз­ных по­ко­лений. Од­на­ко с неко­то­рых пор про­грам­ми­ро­вание для Android вы­шло на но­вый уро­вень. Сей­час уже все­рь­ез го­во­рят о том, что план­ше­ты Android мо­гут за­менить но­ут­бу­ки. Сто­ит ли удив­лять­ся, что и та­кая сфе­ра ком­пь­ю­тер­ной дея­тель­но­сти, как раз­ра­бот­ка про­грамм, на­шла свое ме­сто на этих де­вай­сах. Пре­иму­ще­ст­ва по­доб­ной раз­ра­бот­ки оче­вид­ны: по­сле оче­ред­ной сбор­ки не нуж­но тра­тить вре­мя на пе­ре­гон­ку про­грам­мы с ПК на уст­рой­ст­во. Са­мо сред­ст­во раз­ра­бот­ки ста­но­вит­ся та­ким же мо­биль­ным, как и де­вайс, на ко­то­ром оно уста­нов­ле­но. Тем, кто толь­ко учит­ся пи­сать про­грам­мы для мо­биль­ных уст­ройств, эти сред­ст­ва раз­ра­бот­ки то­же мо­гут по­мочь, по­сколь­ку мно­гие из них зна­чи­тель­но со­кра­ща­ют вре­мен­ной ин­тер­вал ме­ж­ду прав­кой ко­да и со­зер­цанием конеч­но­го ре­зуль­та­та на эк­ране уст­рой­ст­ва.

Не­достат­ки про­цес­са на­пи­сания про­грамм на мо­биль­ных уст­рой­ст­вах то­же оче­вид­ны. Про­грам­ма – это текст, для на­пи­сания ко­то­ро­го нуж­на кла­виа­ту­ра (по­про­буй­те на­дик­то­вать текст про­грам­мы с по­мо­щью го­ло­со­вых сер­ви­сов Google), при­чем, по­сколь­ку язы­ки про­грам­ми­ро­вания ши­ро­ко ис­поль­зу­ют сим­во­лы, ко­то­рые ред­ко встре­ча­ют­ся в тек­стах на ес­те­ст­вен­ных язы­ках (#, &, и ^), же­ла­тель­но, что­бы кла­виа­ту­ра бы­ла пол­но­цен­ной ком­пь­ю­тер­ной, а не уре­зан­ной SMS-ори­ен­ти­ро­ван­ной. Вто­рая про­бле­ма – это неко­то­рые ог­раничения, при­су­щие ОС мо­биль­ных уст­ройств, за­труд­няю­щие та­кие про­цес­сы, как, на­при­мер, от­лад­ка. Тем не менее, ес­ли вы вы­бе­ре­те под­хо­дя­щие ин­ст­ру­мен­ты и ра­зум­но оп­ре­де­ли­те, для ка­ких имен­но за­дач их ис­поль­зо­вать, воз­мож­ность пи­сать про­грам­мы на мо­биль­ных уст­рой­ст­вах мо­жет стать при­ят­ной и по­лез­ной.

Мож­но ли ис­поль­зо­вать мо­биль­ные сред­ст­ва раз­ра­бот­ки для соз­дания серь­ез­ных про­ек­тов? От­вет на этот во­прос за­ви­сит от то­го, что сле­ду­ет счи­тать серь­ез­ным про­ек­том. Ес­ли под серь­ез­но­стью про­ек­та понимать его успеш­ность, то сто­ит на­помнить, что мно­гие успеш­ные про­ек­ты Android со­дер­жат не так уж мно­го ис­ход­но­го ко­да, и, ста­ло быть, про­сты в сбор­ке и управ­лении.

Как вы уже по­ня­ли, мы рас­смот­рим про­грам­мы для Android, ко­то­рый по­зво­ля­ют нам не толь­ко пи­сать код на лю­би­мом смарт­фоне или план­ше­те, но и пре­вра­щать этот код в про­грамм­ные мо­ду­ли, го­то­вые к вы­полнению. Та­кие про­грам­мы ши­ро­ко ис­поль­зу­ют пре­иму­ще­ст­ва мо­биль­ной раз­ра­бот­ки и сме­ло пы­та­ют­ся пре­одо­леть ее недостат­ки. Ра­зу­ме­ет­ся, да­же при ра­бо­те с неболь­ши­ми про­ек­та­ми ис­поль­зо­вание эму­ля­то­ра уст­рой­ст­ва на ПК име­ет свои пре­иму­ще­ст­ва. С по­мо­щью эму­ля­то­ра мы смо­жем про­ве­рить ра­бо­то­спо­соб­ность на­шей про­грам­мы на раз­ных вер­си­ях плат­фор­мы, тогда как при раз­ра­бот­ке и от­лад­ке про­грам­мы на на­стоя­щем же­ле­зе мы име­ем толь­ко то, что име­ем.

[править] Android Java IDE (AIDE)=

Эта про­грам­ма пред­на­зна­че­на для соз­дания пол­но­цен­ных при­ло­жений Android, со­блю­даю­щих все пра­ви­ла по­ве­дения при­ло­жения в сис­те­ме; и что осо­бен­но цен­но – Android Java IDE по­мо­жет вам не на­ру­шать эти пра­ви­ла, да­же ес­ли вы еще не очень твер­до их усвои­ли. Но это не все. Уже до­воль­но дав­но из ми­ра поль­зо­ва­тель­ских ин­тер­фей­сов в мир средств раз­ра­бот­ки проника­ют идеи discoverability – са­мо­оче­вид­но­сти пра­вил взаи­мо­дей­ст­вия с сис­те­мой. Android Java IDE яв­ля­ет­ся пре­крас­ным при­ме­ром са­мо­оче­вид­но­сти. Соз­дав в про­грам­ме за­го­тов­ку про­ек­та при­ло­жения Android, мы уви­дим пол­ный кар­кас про­ек­та, в ко­то­ром лег­ко ра­зо­брать­ся, да­же несмот­ря на то, что ин­тер­фейс план­ше­тов и смарт­фо­нов не очень удо­бен для на­ви­га­ции по слож­ным струк­ту­рам. Во­об­ще, ин­тер­фейс Android Java IDE вы­полнен на твер­дую пя­тер­ку.

Про­грам­ма достой­на сво­его имени – она дей­ст­ви­тель­но пред­став­ля­ет со­бой ин­тег­ри­ро­ван­ную сре­ду раз­ра­бот­ки и ох­ва­ты­ва­ет поч­ти все ее ас­пек­ты: управ­ление фай­ла­ми про­ек­та, от­лад­ка и под­го­тов­ка ре­ли­за (фай­ла apk), ин­те­гра­ция с сис­те­ма­ми кон­тро­ля вер­сий (а так­же с DropBox), ко­ман­ды ин­тел­лек­ту­аль­ной на­ви­га­ции по про­ек­ту (на­при­мер, по­иск вхо­ж­дений за­дан­но­го имени). AIDE уме­ет от­кры­вать про­ек­ты, соз­дан­ные в Eclipse, и под­дер­жи­ва­ет та­кие воз­мож­но­сти, как ин­кре­мент­ная ком­пи­ля­ция и управ­ление ре­жи­ма­ми оп­ти­ми­за­ции ко­да. Бо­га­тые сред­ст­ва ин­троспек­ции язы­ка Java и ком­пи­ля­тор, спо­соб­ный ра­бо­тать с фраг­мен­та­ми ко­да на ле­ту, по­зво­ли­ли раз­ра­бот­чи­кам реа­ли­зо­вать все те функ­ции, без ко­то­рых не об­хо­дит­ся ни од­на со­вре­мен­ная ин­тег­ри­ро­ван­ная сре­да раз­ра­бот­ки, та­кие как ав­то­ма­ти­че­­ское за­вер­шение ко­да и ин­те­рак­тив­ный ре­жим вы­яв­ления оши­бок эта­па ком­пи­ля­ции непо­сред­ст­вен­но в про­цес­се на­пи­сания ва­шей про­грам­мы. Во вре­мя ра­бо­ты с ис­ход­ны­ми тек­ста­ми в AIDE про­ве­ря­ет­ся не толь­ко кор­рект­ность вве­ден­ных иден­ти­фи­ка­то­ров и клю­че­вых слов, но и син­так­сис. На­до при­знать, что сре­ди всех рас­смот­рен­ных про­грамм, AIDE – един­ст­вен­ная, в ко­то­рой эта ин­те­рак­тив­ная про­вер­ка при­но­сит ощу­ти­мую поль­зу. Кро­ме то­го, Android Java IDE, да­же в бес­плат­ном ва­ри­ан­те, об­ла­да­ет хо­ро­шим на­бо­ром ин­ст­ру­мен­тов ав­то­ма­ти­че­­ско­­го ре­фак­то­рин­га и бы­ст­рой на­ви­га­ции по ис­ход­ным тек­стам.

В на­строй­ках про­грам­мы Android Java IDE вы мо­же­те за­дать со­че­тания кла­виш эк­ран­ной кла­виа­ту­ры для вы­полнения раз­лич­ных дей­ст­вий.

К недостат­кам AIDE сле­ду­ет отнести от­сут­ст­вие под­держ­ки Android NDK. Нет, ра­зу­ме­ет­ся, вам никто не за­пре­ща­ет раз­ме­щать ском­пи­ли­ро­ван­ные биб­лио­те­ки С/С++ в ди­рек­то­рии lib и взаи­мо­дей­ст­во­вать с ними с по­мо­щью JNI. Но ком­пи­ли­ро­вать биб­лио­те­ки при­дет­ся на боль­шом ком­пь­ю­те­ре, на ко­то­ром уста­нов­лен NDK. Еще один неболь­шой недоста­ток про­грам­мы – кноп­ки Undo и Redo спря­та­ны слиш­ком глу­бо­ко в недрах ее ин­тер­фей­са. При вво­де с эк­ран­ной кла­виа­ту­ры ошиб­ки слу­ча­ют­ся го­раз­до ча­ще, чем при ра­бо­те с кла­виа­ту­рой обыч­ной, и кноп­ку от­ка­та из­менений хо­те­лось бы всегда иметь под ру­кой. Ра­зу­ме­ет­ся, обе­им ко­ман­дам на­зна­че­ны бы­ст­рые со­че­тания кла­виш (стан­дарт­ные для этих команд Ctrl + Z и Ctrl + Y), но при ра­бо­те с эк­ран­ной кла­виа­ту­рой да­же ввод этих со­че­таний про­из­во­дит­ся не так бы­ст­ро, как хо­те­лось бы. Луч­ше бы­ло бы раз­мес­тить кноп­ки на панели бы­ст­ро­го досту­па.

Как и мно­гие дру­гие при­ло­жения Android, про­грам­ма су­ще­ст­ву­ет в двух ва­ри­ан­тах: ба­зо­вом бес­плат­ном и плат­ном рас­ши­рен­ном. Глав­ным ог­раничением бес­плат­ной вер­сии по сравнению с плат­ной яв­ля­ет­ся невоз­мож­ность от­крыть про­ект, со­стоя­щий из бо­лее чем 25 фай­лов. Мне это ог­раничение пред­став­ля­ет­ся не очень су­ще­ст­вен­ным, по­сколь­ку ра­бо­тать с про­ек­та­ми та­ко­го раз­ме­ра на мо­биль­ном уст­рой­ст­ве вряд ли име­ет смысл. Дру­гое ог­раничение – от­сут­ст­вие в бес­плат­ной вер­сии функ­ции за­пи­си в ре­по­зи­то­рий Git (счи­ты­вать дан­ные мож­но), так что ес­ли вы хо­ти­те ис­поль­зо­вать бес­плат­ную вер­сию со­вме­ст­но, на­при­мер, с Eclipse, при­дет­ся по­ло­жить­ся на DropBox.

От­ли­чи­тель­ная чер­та AIDE – необ­хо­ди­мость «на­стоя­щей» уста­нов­ки ва­шей про­грам­мы в сис­те­ме да­же на эта­пе от­лад­ки. С од­ной сто­ро­ны – про­грам­ма сра­зу на­чи­на­ет су­ще­ст­во­вать «в ре­аль­ном ок­ру­жении», и это хо­ро­шо. С дру­гой сто­ро­ны, вам при­дет­ся раз­ре­шить уст­рой­ст­ву Android уста­нав­ли­вать про­грам­мы из неиз­вест­ных ис­точников (что, впро­чем, все рав­но при­дет­ся сде­лать, ес­ли вы ре­ши­ли за­нять­ся про­грам­ми­ро­ванием под Android все­рь­ез).

[править] Android Terminal IDE

Бес­плат­ная сре­да раз­ра­бот­ки Android Terminal IDE уже мною упо­ми­на­лась – прав­да, в ином кон­тек­сте. Те­перь при­шла по­ра ска­зать о том, что Terminal IDE – это не толь­ко на­бор ин­ст­ру­мен­тов команд­ной стро­ки, ко­то­рые не тре­бу­ют прав су­пер­поль­зо­ва­те­ля, но и до­воль­но мощ­ная сре­да раз­ра­бот­ки. Са­му про­грам­му мож­но за­гру­зить че­рез Google Play, но пе­ред на­ча­лом ра­бо­ты ре­ко­мен­ду­ет­ся по­се­тить сайт про­грам­мы на хостин­ге Google Code http://code.google.com/p/terminal-ide/, ска­чать и внима­тель­но про­честь до­ку­мен­та­цию.

Глав­ное от­ли­чие Terminal IDE от боль­шин­ст­ва мо­биль­ных средств раз­ра­бот­ки для Android за­клю­ча­ет­ся в том, что этот па­кет про­грамм ори­ен­ти­ро­ван на ра­бо­ту с команд­ной стро­кой и тек­сто­вы­ми ин­тер­фей­са­ми. Для одних это мо­жет стать недостат­ком, для дру­гих – досто­ин­ст­вом. Ме­ж­ду про­чим, уста­но­вив Terminal IDE, вы смо­же­те под­клю­чить­ся к сво­ему уст­рой­ст­ву Android с лю­бо­го ком­пь­ю­те­ра с по­мо­щью SSH, и ис­поль­зо­вать для ра­бо­ты с кон­со­лью пол­но­раз­мер­ные кла­виа­ту­ру и эк­ран (это осо­бен­но удоб­но, ес­ли ва­ше мо­биль­ное уст­рой­ст­во – смарт­фон с эк­ра­ном око­ло 4 дюй­мов). Труд­но­сти вво­да тек­ста с эк­ран­ной кла­виа­ту­ры – од­на из са­мых су­ще­ст­вен­ных слож­но­стей при на­пи­сании про­грамм на уст­рой­ст­вах Android. Раз­ра­бот­чик Terminal IDE пол­но­стью осоз­нал это и пре­доста­вил нам все мыс­ли­мые сред­ст­ва для уп­ро­щения вво­да.

Дру­гая характер­ная осо­бен­ность Terminal IDE за­клю­ча­ет­ся в том, что для вы­полнения на­пи­сан­ных ва­ми про­грамм не тре­бу­ет­ся ника­ких спе­ци­аль­ных прав (и не нуж­но вы­пол­нять про­це­ду­ру уста­нов­ки, как в пре­ды­ду­щем слу­чае). В Terminal IDE про­грам­мы мож­но со­би­рать при­выч­ным для «джа­ви­стов» спо­со­бом: файл ис­ход­ных тек­стов пре­вра­ща­ет­ся в файл .class, ко­то­рый, в свою оче­редь, со­би­ра­ет­ся в JAR. Следует толь­ко от­ме­тить, что ес­ли для сбор­ки JAR при­ме­ня­лась ути­ли­та dx, по­лу­чен­ные фай­лы не бу­дут со­вмес­ти­мы со стан­дарт­ны­ми вир­ту­аль­ны­ми ма­ши­на­ми Java, поскольку це­ле­вой плат­фор­мой яв­ля­ет­ся вир­ту­аль­ная ма­ши­на Android.

Тре­тья осо­бен­ность – рас­ши­рен­ная про­грамм­ная кла­виа­ту­ра, пред­на­зна­чен­ная для про­грам­ми­стов и всех, ко­му при­хо­дит­ся ра­бо­тать с ин­ст­ру­мен­та­ми команд­ной стро­ки. Об этой кла­виа­ту­ре я ска­зал уже мно­го хо­ро­ше­го, по­вто­рю толь­ко, что по­сле уста­нов­ки Terminal IDE ее мож­но ис­поль­зо­вать не толь­ко в IDE, но и в лю­бой дру­гой про­грам­ме Android. Сре­ди кон­соль­ных ин­ст­ру­мен­тов про­грам­мы есть и Git.

По­ми­мо про­грамм Java, пред­став­лен­ных в ви­де JAR-фай­лов, Terminal IDE по­зво­ля­ет со­би­рать «на­стоя­щие» при­ло­жения Android. Сре­ди де­мо-при­ме­ров, ко­то­рые вхо­дят в по­став­ку про­грам­мы, есть при­мер и та­ко­го при­ло­жения. Как и рас­смот­рен­ная вы­ше, эта сре­да раз­ра­бот­ки об­ла­да­ет воз­мож­но­стью соз­да­вать как непод­пи­сан­ные, так и под­пи­сан­ные фай­лы apk. Луч­ше все­го ска­зан­ное об этой про­грам­ме ре­зю­ми­ру­ет от­зыв од­но­го из поль­зо­ва­те­лей, остав­лен­ный на сай­те Play Market: «мощней­шая вещь».

[править] CCTools IDE

Эта про­грам­ма – тво­рение оте­че­­ст­вен­но­го раз­ра­бот­чи­ка – по­лу­чи­ла невы­со­кую оцен­ку от поль­зо­ва­те­лей Play Market, но ска­зать о ней, тем не менее, сто­ит. В от­ли­чие от рас­смот­рен­ных вы­ше, для сбор­ки про­грамм CCTools IDE ис­поль­зу­ет ком­пи­ля­тор GCC, и с ее по­мо­щью мож­но со­би­рать ис­пол­няе­мые фай­лы для мик­ро­про­цес­со­ра (не толь­ко ARM, но так­же MIPS и x86!), а не для вир­ту­аль­ной ма­ши­ны Andoid. Со­от­вет­ст­вен­но, и язы­ком раз­ра­бот­ки в этом слу­чае бу­дет не Java, а C/C++. Сбор­кой управ­ля­ет «на­стоя­щая» ути­ли­та make. Идея со­би­рать про­грам­мы для ПК на уст­рой­ст­ве Android вы­гля­дит за­бав­но – мо­биль­ная плат­фор­ма на­бра­ла си­лу и ре­ши­ла по­ме­рить­ся муску­ла­ми с ПК. Ес­ли вы пи­ше­те кон­соль­ную про­грам­му, ре­зуль­тат ее вы­полнения мож­но по­смот­реть на встро­ен­ном тер­ми­на­ле.

К недостат­кам про­грам­мы сле­ду­ет отнести от­сут­ст­вие про­грам­ми­ст­ской кла­виа­ту­ры (та­кой, как у Terminal IDE). Са­ма воз­мож­ность иметь ком­пи­ля­тор GCC на мо­биль­ном уст­рой­ст­ве под управ­лением Android весь­ма при­вле­ка­тель­на. Ос­та­ет­ся на­де­ять­ся на то, что в по­сле­дую­щих вер­си­ях CCTools IDE об­за­ве­дет­ся соб­ст­вен­ной кла­виа­ту­рой или дру­гим сред­ст­вом уско­рения вво­да тек­стов про­грамм.

[править] SourceLair

Эта про­грам­ма ин­те­рес­на пре­ж­де все­го тем, что реа­ли­зу­ет сравнитель­но но­вую кон­цеп­цию об­лач­но­го сер­ви­са. Вы пи­ше­те текст про­грам­мы, от­сы­лае­те его на сер­вер, ко­то­рый пы­та­ет­ся его со­брать и за­пустить про­грам­му, а за­тем воз­вра­ща­ет вам ре­зуль­тат. Об­лач­ный сер­вер по­зво­ля­ет пи­сать про­грам­мы на язы­ках, для ко­то­рых от­сут­ст­ву­ют мо­биль­ные ком­пи­ля­то­ры. На­при­мер, про­грам­ма SourceLair пред­ла­га­ет доступ к ком­пи­ля­то­рам язы­ков C, С++, Objective-C, Fortran и Pascal. Бо­лее то­го, у про­грам­мы SourceLair есть сайт (sourcelair.com), на ко­то­ром мож­но вы­пол­нять все те же опе­ра­ции с по­мо­щью брау­зе­ра, ниче­го не уста­нав­ли­вая на свое уст­рой­ст­во во­об­ще. Фай­лы про­грамм мож­но хранить локаль­но и на сер­ве­ре (для это­го необ­хо­ди­мо за­ре­ги­ст­ри­ро­вать­ся на сер­ве­ре, за ка­ко­вую про­це­ду­ру на дан­ный мо­мент раз­ра­бот­чи­ки денег не бе­рут).

Не­достат­ки об­лач­ной сбор­ки (речь сей­час идет о кон­цеп­ции в об­щем, но все это при­менимо и к кон­крет­ной про­грам­ме) ле­жат на по­верх­но­сти, как и ее досто­ин­ст­ва. Об­лач­ные сер­ви­сы доступ­ны толь­ко там и тогда, когда доступ­но са­мо об­ла­ко. Со­вре­мен­ные ин­тег­ри­ро­ван­ные сре­ды раз­ра­бот­ки взаи­мо­дей­ст­ву­ют с ком­пи­ля­то­ром в ин­те­рак­тив­ном ре­жи­ме да­же на эта­пе вво­да ис­ход­ных тек­стов (об эта­пе от­лад­ки нече­го и го­во­рить). Это оз­на­ча­ет, что ес­ли у вас нет тол­сто­го ка­на­ла для свя­зи с об­ла­ком, все стан­дарт­ные опе­ра­ции бу­дут про­те­кать му­чи­тель­но дол­го.

Что ка­са­ет­ся про­грам­мы SourceLair, то она по­па­ла в об­зор толь­ко по­то­му, что у нее есть кли­ент­ское при­ло­жение для Android. На дан­ный мо­мент это ско­рее де­мон­ст­ра­ция кон­цеп­ции и воз­мож­ность «по­про­бо­вать на зуб» незна­ко­мый язык про­грам­ми­ро­вания. Для дру­гих це­лей про­грам­ма вряд ли сго­дит­ся. Нель­зя не от­ме­тить один до­сад­ный факт: вер­сия кли­ен­та SourceLair Android, доступ­ная для ска­чи­вания, из­ряд­но уста­ре­ла. Вер­сия, рас­счи­тан­ная на ра­бо­ту в брау­зе­ре, со­дер­жит мень­ше оши­бок и пред­ла­га­ет боль­ше воз­мож­но­стей. На­при­мер, по­ми­мо пе­ре­чис­лен­ных вы­ше язы­ков про­грам­ми­ро­вания брау­зер­ная вер­сия пред­ла­га­ет нам Java, Python, Ruby, Lua, SQL, CSS и HTML. Кро­ме то­го, брау­зер­ный ва­ри­ант под­дер­жи­ва­ет под­свет­ку син­так­си­са. Доступ­ный в на­стоя­щий мо­мент кли­ент Android не по­зво­ля­ет соз­да­вать фай­лы на сер­ве­ре, но с его по­мо­щью мож­но за­гру­жать, ре­дак­ти­ро­вать и со­хра­нять на сер­ве­ре уже соз­дан­ные (на­при­мер, с по­мо­щью брау­зер­но­го ва­ри­ан­та про­грам­мы) фай­лы. Са­ма техно­ло­гия за­пуска про­грамм на сер­ве­ре ог­раничи­ва­ет воз­мож­но­сти вы­во­да про­грамм стро­ка­ми тек­ста. На­сколь­ко мож­но по­нять на­ме­рения раз­ра­бот­чи­ков (из­ло­жен­ные в их бло­ге на том же сай­те), у поль­зо­ва­те­ля долж­на быть воз­мож­ность за­гру­зить ре­зуль­тат сбор­ки на свое уст­рой­ст­во, при­чем, ес­ли поль­зо­ва­тель ра­бо­та­ет на уст­рой­ст­ве под управ­лением Android, ре­зуль­тат сбор­ки дол­жен быть со­вмес­тим с этой ОС.

[править] DroidDevelop

Эта про­грам­ма яв­ля­ет­ся над­строй­кой над дру­гой про­грам­мой – JavaIDEDroid, ко­то­рая по­зво­ля­ет со­би­рать про­грам­мы для Android, но не очень удоб­на в ис­поль­зо­вании. DroidDevelop ис­прав­ля­ет ука­зан­ный недоста­ток JavaIDEDroid с по­мо­щью неза­тей­ли­во­го, но достой­но­го поль­зо­ва­тель­ско­го ин­тер­фей­са. По­сколь­ку для сво­ей ра­бо­ты про­грам­ма тре­бу­ет JavaIDEDroid и дис­пет­чер фай­лов OI FileManager, уста­нов­ка ее на уст­рой­ст­во вы­гля­дит сложнее, чем, на­при­мер, уста­нов­ка AIDE. Впро­чем, про­грам­ми­ста вряд ли мож­но ис­пу­гать та­ки­ми ме­ло­ча­ми. В про­грам­ме ис­поль­зу­ет­ся соб­ст­вен­ный ре­дак­тор ко­да с ну­ме­ра­ци­ей строк (что хо­ро­шо) и под­свет­кой син­так­си­са, ко­то­рая име­ет тен­ден­цию под­чер­ки­вать незна­ко­мые ей име­на и ме­то­ды клас­сов (что от­вле­ка­ет). В но­вых вер­си­ях про­грам­ма об­за­ве­лась мо­ду­лем рас­ши­рения, спо­соб­ным вы­пол­нять ба­зо­вые опе­ра­ции ре­фак­то­рин­га.

[править] С4Droid

Про­грам­ма С4Droid, су­ще­ст­вую­щая в плат­ной и ба­зо­вой вер­си­ях, пред­став­ля­ет со­бой ком­пи­ля­тор C, объ­е­динен­ный с про­стым ре­дак­то­ром ко­да. При ра­бо­те с про­грам­мой труд­но от­де­лать­ся от мыс­ли, что ее на­зна­чение – де­мон­ст­ра­ция воз­мож­но­сти соз­да­вать про­грам­мы на C на уст­рой­ст­ве Android (еще недав­но та­кая воз­мож­ность бы­ла оче­вид­на не всем). Плат­ная вер­сия об­ла­да­ет несколь­ко бо­лее ши­ро­кой функ­цио­наль­но­стью, неже­ли ба­зо­вая (на­при­мер, под­свет­кой син­так­си­са). В минималь­ной ком­плек­та­ции про­грам­ма под­хо­дит раз­ве что для изу­чения основ про­грам­ми­ро­вания на C, хо­тя уст­рой­ст­ва Android вряд ли во­об­ще го­дят­ся для этой це­ли. С по­мо­щью мо­ду­лей рас­ши­рений про­грам­му мож­но нау­чить соз­да­вать про­грам­мы, свя­зан­ные с биб­лио­те­кой bionic (на­пом­ню, что bionic иг­ра­ет роль стан­дарт­ной биб­лио­те­ки C на плат­фор­ме Android) и соз­да­вать ис­пол­няе­мые фай­лы Android, ко­то­рые мож­но бу­дет вы­пол­нять вне са­мой про­грам­мы. Ос­нов­ная слож­ность в раз­ра­бот­ке про­грамм C, пред­на­зна­чен­ных для вы­полнения на «же­ле­зе», а не на вир­ту­аль­ной ма­шине, за­клю­ча­ет­ся в необ­хо­ди­мо­сти свя­зы­вать эти про­грам­мы с ди­на­ми­че­­ски­­ми биб­лио­те­ка­ми Android, но под­клю­чение биб­лио­тек (по­ми­мо bionic) в С4Droid не пре­ду­смот­ре­но. От­сле­дить вы­вод кон­соль­ных про­грамм мож­но на встро­ен­ном в C4Droid эму­ля­то­ре тер­ми­на­ла. Про­грам­ма так­же осна­ще­на под­свет­кой син­так­си­са, со­мнитель­ную по­лез­ность ко­то­рой де­мон­ст­ри­ру­ет эк­ран­ный снимок.

[править] За­клю­чение

Под­во­дя итог, сле­ду­ет при­знать, что про­грам­ми­ро­вание для Android в сре­де Android вы­шло на серь­ез­ный уро­вень. Что ка­са­ет­ся эф­фек­тив­но­сти и эр­го­но­ми­ки, то по этим по­ка­за­те­лям на­пи­сание про­грамм на мо­биль­ном уст­рой­ст­ве ма­ло чем от­ли­ча­ет­ся от лю­бой дру­гой дея­тель­но­сти, свя­зан­ной с вво­дом тек­ста. |

Персональные инструменты
купить
подписаться
Яндекс.Метрика