Home » Android, Devel, Весници и списанија

txt: Click – Вовед во програмирање – Андроид

27 April 2010 No Comment

Мобилната технологија станува сѐ поинтересна и попривлечна. Особено ако се земе во предвид дека голем дел од мобилните платформи достапни преку илјадниците производи на уште толку различните производители ни се достапни во Македонија. И тоа од двата аспекти, како корисници или како професионалци кои сакаат да развиваат софтвер за нив. Ние како општество досега покажавме дека сме спремни да прифаќаме нови работи во сферата на секојдневниот живот. Сакаме да имеме најнов телефон, најнов лаптоп, кој од потреба, кој од помодарство, но она најверојатно уште долго нема да биде променето во нашата земја (па и регионот) – цените на мобилните уреди кои не соодветствуваат со стандардот и платежниот капацитет на граѓаните. И тоа се чини не е воопшто страшно. Само последните 12 месеци во Македонија бројот на купени мобилни телефони (според груби статистики) пораснал за над 120% во однос на претходната година. Интересно е што во периодот до март/април 2009г. најупотребувана мобилна платформа била Symbian, што ни кажува дека најупотребуван телефон бил Нокиа. Но потоа следува промоцијата на iPhone 3G по што луѓето нагло склучуваат договори со операторот кој прв го донесе во Македонија и преминуваат кон употреба на овој уред. Што е најинтересно е дека во периодот од Март 2009 па досега, бројот на корисници на iPhone во однос на другите платформи е над 50%. Според мене оваа бројка е алармантна. iPhone како мобилен телефон има секако свои мани и предности но се чини дека телефоните во нашата земја стануваат повеќе помодарство отколку потреба. За право, зошто му е на дете од 12г. телефон вреден над 10.000 денари?

Тој терк не се менува и кога станува збор за Android, мобилната платформа (или софтверски стек) која уште откако се најави претставуваше револуција сама по себе имајќи го во предвид фактот што оваа платформа, едно е базирана на Линукс јадрото (кернелот), друго е слободен софтвер. Револуција затоа што натера компанија како Нокиа неколку години потоа да го издаде кодот за нивниот Симбиан на пазарот и да ја купи добро разработената компанија за производство на слободен софтвер Trolltech, која ја „претвори“ во Qt Software. Со тоа се создава поле за развој на конкурентна платформа за Android од страна на Нокиа, а како што гледаме во последно време и со здружените сили на Intel, преку нивниот Moblin (повторно базиран на Линукс), во инкарнацијата на проектот Meego. Но овојпат нема да зборуваме за Meego. Android дојде во Македонија пред извесно време, луѓето го гледаа како џиџаво мало и слатко апаратче кое може да го имаат пред нивните комшии, па го купуваа масовно. Она што кај овој систем воодушевува е моќниот софтверски комплет за развој на апликации кој е (исто така) слободен софтвер и може на лесен начин да се интегрира во Eclipse без разлика дали станува збор за Windows, GNU/Linux или Mac систем. Едноставно, развојот на апликации под Android е ствар на зараза. Кога еднаш ќе направите дури и најпроста Hello World апликација, процесот на учење сам ќе ве води кон многу корисната документација и примери кои вие би сакале да ги видите. Конкретно јас – seeing is believing – или многу повеќе ми помага концептот на емпириско учење низ примерите кои ги нуди Android, но строго препорачувам барем да имате појма што би прочешлувале пред да почнете да ги гледате примерите. Во продолжение ќе видиме како да го конфигурирате Eclipse и како да го натерате да „пее“ по ваше, како да го исконфигурирате да работи со Android SDK-то и како да ја направите првата апликација која нема да биде Hello World, затоа што имајќи ја во предвид целата шема развој на апликации за Android, нема да ви биде од корист да видите текст кој ќе пишува „Здраво Свету!“.

За почеток малку запознавање со самата платформа. Android е софтверска платформа за мобилни уреди и тоа не е само оперативен систем затоа што оперативниот систем е вклучен во самата платформа. Повеќе може да се гледа како на комплет од оперативен систем, системски софтвер и апликативен софтвер. Многумина мислат дека ова е целосен производ на Google, но како и за останатите нивни производи и според мене добриот open source бизнис модел за развој на софтвер и сервиси, Google и овој производ го има купено. Имено станува збор за младата и надежна компанија Android Inc. која прво е во сопственост на Google, а потоа преминува во сопственост на Open Handset Alliance (алијанса под чиј надзор е и развојот на Android и чиј член е и Google). Оправданоста за постоењето на алијансата како сплет на 33 компании кои се залагаат за иста цел е многу поголема ако се земе во предвид неодамнешното коалицирање на компании како Nokia и Intel во задкрила на Microsoft. Имено, Microsoft се сложи да придонесува во развојот на MeeGo како платформа со овозможување на користење на плагини за нивните производи како што се Microsoft Office и Silverlight. Можеби со ова здружувањето на Microsoft со Nokia и Intel не значи парирање на Google, туку повеќе на Apple, но како што и минатото покажало, безкрупулозна игра во која актер статист е Microsoft е веќе видена во минатото со искористувањето на ресурсите на Novel (кој се сеќава). Овојпат лично јас сметам дека лошиот конкурентен модел преку искористување повторно на слободен софтвер (Maemo, Moblin, Qt) нема да профункционира. И тоа ви го кажува Qt програмер и фан на Nokia и Intel.

Android in detail

Open Hand Alliance во својот прес по создавањето (ноември 2007) вели:

Оваа алијанса е спој на иста цел, охрабрување на иновациите за мобилни уреди и нудењето на потрошувачите уште подобро корисничко искуство од она кое е достапно денеска кај мобилните платформи. Со овозможување на ново ниво на отвореност за програмерите кое ќе им овозможи да работат поколаборативно, Android ќе го забрза процесот на создавање мобилни услуги достапни за потрошувачите.

Па така Android е својот развој го темели на работата на оваа алијанса. Февруари 2010 Google објави дека се продаваат околу 60.000 мобилни телефони на дневна основа со Android.

За да можете да развивате Android апликации потребно пред се ви е Android SDK-то, значи за да може да креирате апликации за Android не е задолжително користење на IDE, тоа може да го правите само со SDK-то. Но за сето тоа да не делува налудничаво и за постапката на развој да ви се олесни, ви препорачуваме да се навикнете на користење на IDE за развој како што тоа го прави Eclipse. Android може лесно да се интегрира во Eclipse преку користење на ADT додатокот (Android Development Tools) кој се инсталира од самиот Eclipse со неколку лесни чекори. Најпрво ви препорачуваме од сајтот на Eclipse да го симнете основниот пакет на софтверот, за Java програмирање. Потоа во Ubuntu потребно е да се инсталира пакетот за развој на Java, и тоа пакетот со оригиналните верзии од Sun:

# sudo apt-get install sun-java6-bin

Откако ќе заврши инсталацијата (која патем ќе ве праша неколку работи за лиценци и сл.), потребно е да се отпакува Eclipse. Ако пакетот на Eclipse се вика eclipse-java-galileo-SR2-linux-gtk.tar.gz не треба да правите којзнае што, само отпакувајте го:

# tar -zxf eclipse-java-galileo-SR2-linux-gtk.tar.gz

Ако го отпакувавте во вашиот домашен директориум, тогаш eclipse може да го подигнете преку:

# ~/eclipse/eclipse

Или да си креирате кратенка на десктопот со икона и сл. која ќе ја извршува оваа апликација. Битно за самиот развој на Android апликациите и поставувањето на валидна работна околина за Android е самото поставување и „инсталација“ (не е класична инсталација) на Android SDK-то. Од сајтот на Android симнете го пакетот за Линукс (во моментов на пишување архивата се вика android-sdk_r05-linux_86.tgz). Отпакувајте ја архивата во вашиот домашен директориум (ова не е задолжително, но упатството е пишувано со таа претпоставка, дека сѐ ставате во вашиот домашен директориум).

# tar -zxf android-sdk_r05-linux_86.tgz

Фолдерот кој се отпакува може да го преименувате во ‘android-sdk-linux_86′ за попристапно име:

# mv android-sdk_r05-linux_86 android-sdk-linux_86

Потоа отворете ја датотеката ~/.bashrc:
И додајте ја следнава линија:

export PATH=${PATH}:/home/user/android-sdk-linux_86/tools

каде што user е вашето корисничко име!

Тука може да се прелогирате одново и да го пуштите Eclipse (првото пуштање Eclipse прашува за стандардна локација / workspace за вашите проекти). Откако ќе се пушти, одете во Help → Install new software → Add → http://dl-ssl.google.com/android/eclipse.

Ова ќе го додаде складиштето за инсталирање на ADT (Android) додатокот за Eclipse. Кликнете на записот (во ново-појавената листа) кој го додадовте и чекирајте го елементот Developer Tools. Со тоа ќе се чекираат и Android Development Tools и Android Editors. Следете го визардот, сложете се со лиценците :) и кликнете Finish.

Потоа ќе треба да се постави Android SDK локацијата во Eclipse. Од менито изберете Window → Preferences па потоа во листата со елементи кликнете на Android. Внесете ја локацијата каде што ќе се наоѓа ‘tools’ подфолдерот од Android SDK-то. Во случајот /home/user/android-sdk-linux_86/

Кликнете Ok. Следно што ќе треба да се направи е да се креира виртуелен Android уред потребен за емулаторот, тестирање и дебагирање, и да се доинсталира дел од API-то на Android. Кликнете Window → Android SDK and AVD Manager. (AVD е ‘Android Virtual Device’). Одете во подменито Available Packages и инсталирајте ги дополнителните 2 пакети SDK Platform Android 2.1, API 7 и Samples for SDK API 7. Откако ќе се инсталираат ќе може да преминете кон креирање на виртуелен уред. Одете во Virtual Devices, кликнете на New. Изберете име (пр. AVD01) и како Target изберете го API-то кое претходно го инсталиравте (во случајот […] API 7). Засега не ви треба ништо плус, креирајте го со кликање на Create AVD.

Android апликациите одблиску

Android апликациите се пишуваат во Java. Впрочем целото SDK е заосновано на Java. Откако ќе се напише апликацијата, Java кодот заедно со ресурсите и останатите податоци се поврзува и пакува во .apk архива (со помош на алатката aapt). Целиот код што се состои во една .apk датотека се смета за Android апликација.

Секоја апликација си живее во свој свет и има свој век на живеење. Тоа е така затоа што секоја Android апликација дига посебен Linux процес кој се подига тогаш кога е потребно да се изврши кодот на апликацијата и се исклучува тогаш кога веќе не е потребна или системските ресурси се потребни од друга апликација. Исто така, многу важно, секој процес поседува сопствена виртуелна машина (VM) такашто кодот се извршува во изолирана форма од останатите апликации. И стандардно, на секоја апликација ѝ се доделува посебен Linux UID. Пермисиите се поставуваат такашто датотеките на апликацијата се видливи само за тој корисник и тоа само за таа апликација – иако постојат начини да се овозможи пристап од други апликации.

Секој корисник кој сака да развива Android апликации треба да има барем површинска претстава за хиерархијата и концептот на самите апликации. Иако не се работи за класичен MVC архитектурен концепт, идејата што стои зад Android може да се разглоби до ниво на MVC. Во ова упатство нема да стане збор за тоа, нити пак објаснувањата би целеле кон тоа.

Активности

Една Android апликација е составена од една или повеќе Активности (Activity). Тоа не е поврзано со активност како некое движечко дејство врз/во самата апликација, туку повеќе како концепт за прикажување и интеракција меѓу корисникот и самата апликација. Се она што во даден момент го гледате на вашиот екран е Android Активност. Активностите потоа може да се распределат на различни Прегледи (Views, преводот е слободен) кои се хиерархиски распределени во самата апликација и дел од Android SDK-то (директни потомци на врховната java.lang.Object класа). Една апликација за испраќање Е-пошта може да има Активност за примање, активност за испраќање и активност за бришење на пошта. Секоја Активност се имплементира како поткласа на клсата Activity.

Визуелниот сегмент од апликацијата се овозможува преку хиерархијата на View-а – објекти кои се наследени од класата View. Секоја View контрола контролира одреден повеќе-аголник во зададен прозорец. Родителските View-а се задолжени за организирање и прикажување на Layout-от (лејаутот) на нивните деца. Така View е местото каде што настанува интеракција меѓу корисникот и самата Активност. (View ↔ Activity). Пример, View може да прикажува приказ на мала слика и да иницира акција кога корисникот клика врз таа слика (пр. да се зумира). Во другите фрејмворци ова може да бидат контроли, виџети, итн. Android исто така доаѓа спремен со многу вакви View-а како што се копчиња, листи, чекбоксови, менија, скролбарови итн.

Хиерархијата на View-ата се поставува во прозорецот на дадена Активност преку Activity.setContentView() методот. Content View се нарекува објектот на класата View на самиот врв на хиерархијата. Ако ова е малку збунувачки ви препорачуваме да прочитате некоја добра книга за развој и концептите на Android апликациите (препорака: The Busy Coder’s Guide to Android Development).

Сервиси

Сервис си е сервис. Концептот е ист како и досега познатите методи за креирање и начин на функционирање на сервиси. Сервисот нема графички приказ, работи во позадина на главната апликација, во одреден или бесконечен временски интервал. Сервисот може да обавува тешка математичка операција или да обавува некоја мрежна операција, и секако да биде дел од целата Android апликација.

Приемници на сигнали (Broadcast Receivers)

Бродкаст рисиверите или приемници за сигнали се компоненти кои реагираат при извесен сигнал кој го добиваат од систем или друга апликација. Пример, при промена на временсли зони или хардверски промени, сигналите ги примаат овие приемници и ги спроведуваат на саканите места. Апликациите исто така може да емитираат сигнали, со цел други апликации да добијат одредена информација (вчитана е слика, симната е датотека итн.). Сите приемници ја наследуваат BroadcastReceiver класата.

Доставувачи на содржина (Content Providers)

Доставувачите на содржина овозможуваат одреден сегмент од податоците кои ги содржи апликацијата да бидат достапни за други апликации. Овие податоци можеби се зачувани како датотеки на самиот фајлсистем или пак се дел од адресарот на корисникот (sqlite бази). Класите кои имплементираат доставувачи на содржина ја наследуваат класата ContentProvider со цел имплементирање стандардно множество на методи кои овозможуваат други апликации да пристапат и обработат податоци од типот кој се контролира. Но, апликациите не ги повикуваат овие методи директно. Наместо тоа, тие користат ContentResolver објект и ги повикуваат методите дефинирани во оваа класа. ContentResolver може да комуницира со било кој доставувач на содржина, да соработува со доставувачот итн.
Доставувачите на содржина се активираат само тогаш кога ќе добијат барање од ContentResolver-от, за разлика од нив, останатите три погорни компоненти се активираат при асинхрони пораки кои се нарекуваат intents. Тоа е објект од класата Intent кој ја содржи содржината на пораката. За активности и сервиси, се именуваат акциите кои се побарани и специфицирани од податоците на одредена локација (URI). За приемниците на сигнали Intent објект специфицира акција која ја објавува. Пример, може да испрати информација дека копчето за потпуштање на звукот е стиснато.
Има уште милион други работи кои се дел од основите за Android апликациите. Може да се пишува и зборува уште многу, засега споменатите работи се најбитни, како што ќе напредувате со учењето на самиот фрејмворк, така потребата од нови знаења ќе се шири. Сите потребни информации, спецификација и помошна документација е достапна на страниците на проектот.

Основна Android TODO апликација

Како што споменавме погоре, апликација од класичен тип Hello World нема да е од којзнае каква корист во случајов. За таа цел ќе направиме едноставна апликација која ќе претставува TODO листа преку која корисникот ќе може да додаде елементи во листа (ListView) со помош на копче. Едноставно и примамливо за почеток.

Од Eclipse одете New → Project → Android Project. Ќе се отвори дијалог во кој ќе треба да специфицирате:

  • Project Name – име на проектот – Todo List во случајов
  • Application Name – име на апликацијата (незадолжително) – Todo List
  • Package Name – име на пакетот (мора да содржи 2 идентификатори во Java стил од типот): com.todo.android
  • Activity Name – име на главната активност – може да е за почеток Main (нешто како главен интерфејс или main.cpp во C++).

Кликнете на Finish.

Ќе се отвори стандардниот преглед со дрво од левата страна. Кликнете на src па com.todo.android па Main.java. Оваа датотека го содржи кодот за главната активност на апликацијата (може да забележите ‘extends Activity’). Потоа кликнете на ‘res’ па → layout → main.xml. Ова е главниот лејаут за изгледот на апликацијата. Тука може да додавате Layouts и Views со класичен Drag&Drop од левата страна. Во нашиот случај, ќе го селектираме моменталниот View (TextView) во кој има Hello World текст. И ќе ставиме 3 нови View-а, TextEdit, Button, ListView. Кликнете врз TextEdit view-то и во подолниот прозорец ќе можете да ги уредувате својствата на ова View.. Најдете го својството Text и избришете го (празно), а потоа во делот Layout (за истото view) за Layout Width ставете fill_parent (со што ќе се пополни целиот простор на главниот прозорец (активност). Сменете го својството на Button View-то, ставете текст по желба, пр. “Add Item”. Запомнете дека во лејаутот дополнителните лејаути (како што е ListView лејаутот) не се гледа. Него може да му ги менувате својствата на ист начин, но нема да видите разлика за време на развојот. Снимете ги измените и одете во датотеката Main.java. Оваа датотека би требало да изгледа вака, за да се добие саканиот резултат. < < .java датотека.

Во главната класа Main дефинираме дека таму ќе има имплементирано и onClickListener и onKeyListener. Тоа значи дека можеме лесно да поврземе даден настан (event) со одредена акција. Така ако сакаме да го фатиме key event-от, тоа го имплементираме во методот onKey, а за mouse event-от во методото onClick. Како аргументи стига и View-то од каде што е испратен event-от и сл. Откако сето ова ќе се искомпајлира и пушти, ќе се вклучи емулаторот за Android во кој ќе се прикажи нашата апликација. Додадете текст, па стиснете го копчето Add Item. Магијата се случува.

ToDo Test

Ова е проста апликација, нема да презентираме како се прават напредни работи сега, можеби во некој нареден текст. Но ви ветуваме декa Android ќе биде интересен пазар за сите кои сакаат да се бават со оваа платформа професионално или како хоби.

Забелешка

Овој текст е објавен во некој број на Клик. И јас сум Нуб за Android па би бил благодарен ако ми мрчите и советувате за текстов. благодарам.

Post to Twitter Post to Delicious Post to Facebook Post to Reddit

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.