Wpis z mikrobloga

Było o Unity i Pythonie, postanowiłem napisać co nieco o Androidzie.

Nie uważam się za eksperta, ale siedzę w tym na tyle, żeby jakąś wiedzę przekazać.

Liczę, że odezwą się też inni Androidowcy i dorzucą swoje 3 grosze w komentarzach i wywiążę się z tego jakaś dyskusja.

START

Zacznijmy od IDE oraz Androidowego SDK. Swego czasu najpopularniejszym IDE do programowania w Androidzie był Eclipse z wtyczką ADT (Android Development Tools). Można go pobrać tutaj : https://developer.android.com/sdk/index.html?hl=i . Jeżeli ktoś jest przyzwyczajony do Eclipse, to nie ma przeszkód żeby go używać. Ja osobiście przerzuciłem się na Android Studio i jestem zwolennikiem tego IDE.

Android Studio jest oparty na IntelliJ i jest rozwijany przez Google od ponad roku (od maja 2013 konkretnie). Aktualnie wypuszczona jest wersja 0.8.6 i ciągle jest w fazie beta, ale nie przeszkadza to wygodnie programować na tym IDE. Możecie go pobrać tutaj : https://developer.android.com/sdk/installing/studio.html

Kiedy pobierzecie IDE musicie także pobrać przez SDK Managera wszystkie paczki od Google, całe pobieranie trochę trwa. Ikonkę SDK Managera znajdziecie w IDE w pasku u góry.

PROGRAMOWANIE

Osoby znające Javę mają przewagę już na starcie, dla tych co jej nie znają polecam zacząć od nauki tego języka. Co prawda, istnieje opcja pisania aplikacji na Androida w C++, ale jest to rozwiązanie niepolecane, z uwagi na to, że wbrew pozorom aplikację będą wolniejsze.

Do nauki samego Androida polecam tutorial wypuszczony przez Google : https://developer.android.com/training/index.html

Zdaje sobie sprawę, że nikomu nowemu nie będzie chciało się przebijać przez całą dokumentację zanim zacznie programować na Androida, więc polecam jedynie przeczytanie sekcji "Getting Started" a następnie ustalenie sobie jakiegoś celu (czytaj wymyślenie aplikacji do stworzenia) i zaczęcia programowania.

Nie obędzie się oczywiście bez StackOverflow z uwagi na to, że Android to urządzenie mobilne i jest mniej wyrozumiały niż aplikacje desktopowe. Przygotujcie się więc na częste, niezrozumiałe błędy, o które już setki osób zapytało na Stacku.

KILKA RAD

Po pierwsze, nie bójcie się korzystać z bibliotek na Androida dostępnych w internecie. Jest ich na prawdę mnóstwo i ułatwiają one wprowadzanie upragnionych przez nas ficzerów ( ͡° ͜ʖ ͡°).

Polecam tą aplikację : https://play.google.com/store/apps/details?id=com.desarrollodroide.repos

Pozwoli ona wam na przetestowanie z poziomu komórki poszczególnych bibliotek, bez zbędnego ich ściągania i importowania do waszego IDE.

Po drugie, przy zakładaniu projektu, IDE będzie was pytało jakie checie minimalne API ustalić.

Im starsze API tym mniej funkcjonalności będziecie mieli do dyspozycji i więcej będziecie musieli uzupełniać np. zewnętrznymi bibliotekami.

Swego czasu skupiałem się na API 10+ czyli od Androida 2.3.3, co ciągnęło za sobą potrzebę importowania masy dodatkowych biliotek takich jak np. ActionBarSherlock aby otrzymać funkcjonalności z Androidów 3.0+ i 4.0+.

Aktualnie stare wersje Androida stopniowo wymierają i coraz mniej opłaca się tracić czas na implementację dla API poniżej 15. Możecie sami zobaczyć jaki jest aktualny stan rynkowy wersji Androida : https://developer.android.com/about/dashboards/index.html

Jeżeli jednak chcecie pisać na API poniżej 15, to Google wypuścił specjalną bibliotekę o nazwie AppCompat (od compatibility), która zawiera funkcje z wyższych API, które można zastosować np. w API 10.

Ciekawostka : Czytałem, że czasami opłaca się używać AppCompat nawet w starszych wersjach bo ponoć jest bardziej przetestowana i stabilniejsza. Niestety nie jestem w stanie podać żadnego źródła.

CZY WARTO?

Moim zdaniem, zdecydowanie tak. Rynek mobilny rośnie naprawdę szybko i jest to część IT, w którą warto zainwestować czas. Oprócz tego Android to nie tylko telefony, ale też rozwijające się ostatnio zegarki z Androidem, tablety, telewizory a w przyszłości też i samochody. Na głównej stronie (na dole) możecie zobaczyć o co chodzi https://developer.android.com/index.html

Oczywiście, na Androidzie można też zarobić jako samodzielny developer, w Google znajdziecie sporo ludzi, którzy dzielą się swoimi dochodami z reklam w aplikacjach.

Jako ciekawostkę (historyczną niemalże) podam, że gdy Android i ogólnie smartphony dopiero się rozwijały, a sam market aplikacji dopiero raczkował. Wśród użytkowników pierwszych smartfonów królowały raczej mało funkcjonalne aplikacje typu widget do baterii w kształcie piwa, aplikacja, która wydaje dźwięki pierdzenia (nie żartuje, spójrzcie na ilość sciągnięć https://play.google.com/store/apps/details?id=com.kauf.soundboard.baum.FartSoundBoard ) itd. Można było wtedy bardzo łatwo zarobić na reklamach, często bardzo agresywnych (typu reklama w notyfikacji itp.). Jednak pewnego dnia Google zrobił wielkie czystki, powyrzucał śmieciowe aplikacje i zmienił system reklamowania nowych apek, przez co produkowanie pierdołowatych apek stało się mniej opłacalne.

Nie twierdzę, że teraz użytkownicy nie ściągają takich aplikacji, ale system promowania nie pozwala już tak dużo na nich zarobić.

DODATEK PO EDYCJI

Jeszcze chciałem wspomnieć o różnicach pomiędzy programowanie na iOS a Androida. iOS ma tą zaletę, że jest tylko jeden telefon, do którego musimy dostosować rozdzielczość, komponenty aplikacji i całą resztę. Dzięki temu też aplikacje na iOS są lepiej przetestowane i czasami pewnie i szybsze. W Androidzie niestety mamy tysiące różnych urządzeń, tysiące różnych ekranów i różne API, co dodatkowo utrudnia całą sprawę.

Liczę na wasze komentarze i jakąś owocną dyskusję.

Jeśli gdzieś popełniłem błąd, dajcie znać.

#programowanie #android #mdfkandroiddev #androiddev
  • 41
@mdfk: android studio ma jakies ciemne skórki? :P Zaczynam przygodę z andkiem i jestem zniesmaczony eclipsem i ogolnie usability narzędzi na tę platforme(android)/brakiem fundamentalnej stabilnosci.
@klocek_lego: Tak, "Darcula". Jak wejdziesz w opcje to powinnieneś to łatwo znaleźć. W Android Studio znacznie lepiej się programuje - szybciej, wygodniej itd. No i w AS budujesz aplikacje w oparciu o Gradle.
@mdfk: co to Gradle? Jestem przyzwyczajony do Eclipse i jakoś do tego AS nie mogę usiąść... W ogóle dlaczego to jest nadal beta? Dużo mają tam jeszcze do zrobienia?
@nowik: Gradle to coś takiego jak Maven, Ant. Akurat w AS specjalnie nie trzeba się na nim znać, żeby go używać. Beta jest od ponad roku, jeszcze niedawno nie opłacało się tego używac, ale Google sukcesywnie rozwija AS i jest coraz lepiej. Przysiądź do niego to z pewnością się przekonasz.
@mdfk:

ale Google sukcesywnie rozwija AS i jest coraz lepiej


Podejrzewam, ze wzieli sie za AS z powodu takich narzekaczy, jak ja. ;) Ogólnie uważam całe środowisko Javy za dość niewygodne(z IntelliJ nie korzystałem) a sam język w porównaniu z C# za dość zapóźniony(choć ostatnio nadrabia) - powtarzam, ogólnie ;)

Czy przejscie na to srodowisko nie zajmie mi wiecej niz 1 dzień ogarniania? Dodatkowo, projekty stworzone w Eclipse jak najbardziej zadzialaja
@klocek_lego: Wątpię żeby tak się przejęli narzekaczami. To normalne, do Eclipse mieli tylko "wtyczkę", a AS to jest już ich dedykowany produkt. Sporo ludzi po przejściu z Eclipse na InteliiJ już nigdy nie wraca. Z Eclipse ADT i Android Studio jest podobnie.

Co do C# to był tworzony po Javie i trochę się na nim wzorowali, więc wiadomo, że ma ulepszenia, których Java może nie mieć, ale bez przesady. C# to