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
  • Odpowiedz
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.


@mdfk: jakieś źródło co do gorszej wydajności?
  • Odpowiedz
@sosnnaa, @UZ01: W Twoim przypadku ma to sens. Bardziej miałem na myśli, to, że jeśli ktoś chce pisać całą apkę w C++ to raczej mija to się z celem. Zwłaszcza początkujący, gdzie w internecie wszystkie przykłady/tutoriale są w Javie.

Druga sprawa, że zawsze można napisać funkcję w C++, która działa wolniej niż ta zoptymalizowana w Javie.
  • Odpowiedz
@pstjepan: Wczytuje się w artykuły o tym, i wygląda na to, że bardziej odczują to użytkownicy, bo w developmencie nic się nie zmieni. Mimo to świetnie, że Google pracuje na różnych polach żeby sprawić, by Andek był szybszy. Niestety u siebie nie mogę przetestować bo mam jeszcze 4.1.
  • Odpowiedz
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.


@mdfk: Czo ja czytam :)
  • Odpowiedz
@mdfk: jeśli chodzi o różnice między iOS i Android:

- nie do końca jest tak, że jedno API i już. Są spore różnice między np. iOS7 i iOS8, i jeżeli chce się wspierać obydwa systemy, problem jest podobny, chociaż rzeczywiście skala jest o wiele wiele mniejsza

- jeśli chodzi o różne wielkości ekranu - to też nie do końca jest tak - na przykład iPhony różnią się wysokością ekranu (4s i
  • Odpowiedz
Ja polecam te filmy:

Android Course

Kilka rzeczy jest przestarzałych, ale dobrze wchodzi wiedza, a to co jest przestarzałe i depricated można na bieżąco sprawdzać w IDE.
  • Odpowiedz