Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Jak to dotnetowiec próbuje napisać coś pod Androidem

Windows Phone 7

Niedawno napisałem dla siebie aplikację do rozkładu jazdy autobusów. Troche XML'a, trochę LINQ. Działa ładnie i fajnie, nawet tak mi się spodobała, że teraz przechodzi certyfikację w Marketplace.
Wcześniej ściągnąłem MS Visual Studio 2010 Express for Windows Phone, do tego SDk i jeszcze jakąś paczkę.Wszystko fajnei zadziałało, dzięki tutorialom ze strony M$ szybko udało się poduczyć i napisać aplikację.

iPhone/iOS

Z Mac'iem miałem niewiele styczności ale dosyć szybko dotarłem do informacji, że Apple za darmo udostepnia narzędzie developerskie xCode (albo jakoś tak się nazywało), dzięki któremu można programować pod Mac OS X oraz iOS'a. Niestety nie ma narzędzi pod Windows'a i aby ich używać należy posiadać zapewne własnego Mac'a, bo podejrzewam że jako maszyn wirtualna będzie to kulawo działać.
Sądząc z tego jakie Apple ma podejście do tematu user-friendlieness to pewnie instalacja całego pakietu nie będzie nastręczać trudności (i z własnego doświadczenia, bo zdarzyło mi się instalować parę rzeczy na Mac OS X'ie). Suma sumarów odpuściłem sobie portowanie aplikacji na iPhone'a.

Android

Skoro Android jest tak otwarty i popularny to chyba nie powinienem mieć problemów z napsianiem aplikacji pod niego. Jak trudne to może być skoro ma wsparcie Google i Oracle ( chodzi mi o samą Javę).
No to zaczynamy!

Jak w każdym innym przypadku zapewne należy pobrać i zainstalować SDK

Jako, że nie zamierzam pisać w natywnym języku decyduję się na Javę i trzeba doinstalować kolejną paczuszkę

No to instalacja SDK. O ale fajnie! Do wyboru kilka API. O kurde... Aż tyle wersji? Jak tu napisać program działający na wszystkim? Google jednak samo podpowiada, że prawie 97% urządzeń korzysta z API 2.1. Czyli instaluję najnowsze API 4.0, 2.1 dla kompatybilności, dodatkowe paczuszki, które mogą mi się przydać i jedziemy.

Kolejna ciekawa niepsodzianka - można stworzyć więcej niż jeden emulator i to z obsługą różnych API.Dla bezpeiczeństwa wybrałem API 2.1

Taaa... Ktoś wychowany na Visual Studio od czasów wersji 6 do 2010 nie będzie pisał przecież w notatniku i kompilował z lini komend. Krótki research wykazał, że najlepiej się nada do tego Eclipse. Całkiem lubię te IDE i nawet kiedyś z niego korzystałem często. Trzeba oczywiście dociągnąć do niego rozszerzenia dla Androida ale na szczęście Google znowu służy pomocą.

No to mamy chyba koniec. Czas odpalić Eclipse i działać. Powoli zmęczonego już dotnetowca zaskakuje kolejna sprawa. Do dyspozycji mamy projekty przykładowe. Skoro jeszcze nic nie napisałem pod Androida to chyba będzie najlepszy pomysł.

Kolejne okno kreatora - do wyboru jest API. No brzmi to sensownie, skoro zainstalowałem jego kilka wersji.

Lista projektów do wyboru, specjalnie wybrałem projekt, który chyba będzie na tyle prosty, że nie będzie sprawial problemów.

Wbrew oczekiwaniom i narastąjącemu zmęczeniu napotykam kolejny problem. Wysypały się błędy w projekcie.

Chwila zastanowienia. No tak, pewnie wybrałem za nowe API, skorzystam z tego najpopularniejszego 2.1

Lista się trochę skróciła, znowu brzmi to sensownie. No to odpalamy.

Błedów wysypało się nawet więcej niż poprzednim razem.

Poświęciłem sporo czasu. Pobrałem sporo rzeczy z netu. Poszperałem trochę po necie. Pomimo to nie udało się odpalić prostego projektu przykładowego. Błędy zapewne można usunąć ale przecież nie powinno się od początkującego developera wymagać odpluskwiania kodu.

Jaka jest moja myśl na koniec?
Google nie jest jakąś firmą typu krzak. Mogliby poświęcić trochę czasu na przygotowanie jakieś paczki typu All-In-One np. dla Eclipse (tak jak ma to miejsce w przypadku Eclipse PDT - PHP Development Tools), coś co się ściąga, odpala i nazwyczajniej działa. Zamiast tego zaprezentowane zostało typowo linuksowe podejście - trzeba pościągać całą masę rzeczy, skonfigurować to w sposób do znalezienia pewnie na jakimś hermetycznym forum.

Dlaczego ktoś kto ma tak duży udział w runku smartfonów nie zadbał o to by zwiększyć swoją przewagę poprzez ułatwienie ludziom programowania pod Androida.

A więc na koniec ostatnia grafika, która zapewnei wielu zaskoczy:

 

programowanie urządzenia mobilne

Komentarze

0 nowych
Druedain   14 #1 10.01.2012 13:33

Co się stało po naciśnięciu „Remove '@Override' annotation”?

  #2 10.01.2012 13:47

No proszę, co to za wpis? Skoro piszesz z perspektywy developera, dlaczego i o co masz pretensje? Role kolego Ci się pomyliły user to user, dev to dev - tyle ode mnie.

zielu84   5 #3 10.01.2012 13:51

@Druedain
Nawet nie sprawdzałem, bo jak widać po godzinie dodania wpisu już późna godzina była ale tu nie chodzi o to co to są za błędy ani jak je usunąć - chodzi o sam fakt ich istnienia w przykładach dla początkujących programistów. Boli mnie jak zostało to wszystko przygotowane, bo pewnie jakbym przysiadł to bym wytropił i usunął te błędy ale nie po to przecież odpalam przykład aby te błędy usuwać, tylko żeby zobaczyc jak to działa. A niestety nie działa.

Ryan   15 #4 10.01.2012 14:14

"Coś, gdzieś źle zrobiłeś." ;) A poważnie: też mnie rozbroiła ilość rzeczy do wyklikania przy instalacji. Na szczęście nie pobija to instalatora Cygwina. Polecam spróbować, najlepiej na średnio wydajnej maszynie. :>

zielu84   5 #5 10.01.2012 14:21

Z Cygwinem niestety też walczyłem, więc znam ten ból :)

Oczywiście, że "coś gdzieś źle zrobiłem" ale gdyby zastosowano rozwiązanie typu All-In-One jak Eclipse PDT to pewnie owe "coś" by się nie wydarzyło, a teraz szukaj wiatru w polu... znaczy się rozwiązania na forum.

Druedain   14 #7 10.01.2012 15:08

Po prostu zastanawiam się, czy przykład nie działał bo był niekompletny, czy była literówka. @Override służy wyłącznie zaznaczaniu miejsc przeciążania metody X. Błąd rodzi sytuacja, w której nadklasa nie ma metody X, bądź programista zrobił literówkę.

  #8 10.01.2012 15:17

To prawda, programowanie na Androida jest skomplikowane :)

Ale jak sobie przypominam w Visual Studio jak próbowałem połączyć dodatkowe biblioteki (z tego co pamiętam to było to cURL) to też masakra. Przesiedziałem parę dni na próbie odpalenia przykładowego projektu (Hello World tyle, że po HTTP).

sanurss   3 #9 10.01.2012 15:27

Klasa R jest tworzona automatycznie przy kompilacji projektu i znajduje się w folderze gen. W Eclipse jest taka zakładka na dole co się zowie Problems i tam może być napisane w czym tak naprawdę jest problem, bo mi wygląda na źle skonfigurowany projekt, acz nigdy nie odpalałem przykładów :)

kamil_w   10 #10 10.01.2012 17:17

@Darxis
Podłączanie zewnętrznych bibliotek do Visual Studio to masakra? Ja ostatnio z poziomu Visuala korzystałem z biblioteki Lucene.NET. Kilka kliknięć i gotowe. ;|

GL1zdA   11 #11 10.01.2012 18:32

Wygląda, jakby nie widział JDK... bo Runnable to interfejs ze standardowej biblioteki, a z jakiegoś powodu go nie widzi.

  #12 10.01.2012 18:56

po przeczytaniu tego arta przyszlo mi mysl a raczej pytanie, wszyscy mówia ze android to linux a co on ma z linuxa skoro system bazuje w wiekszosci na javie juz nie wspominajac o aplikacjach. toz to nie linux skoro na javie sie opiera. moze i sie nie znam bo kodu nie przegladalem lecz na to wychodzi

  #13 10.01.2012 20:19

"Google nie jest jakąś firmą typu krzak.... Zamiast tego zaprezentowane zostało typowo linuksowe podejście..."
Święte słowa. I to jest zasadnicza różnica między developerem linuksowym a windowsowym.
Linuksowy myśli i w końcu znajduje rozwiązanie. Natomiast windowsowy potrafi tylko tylko klikać, a jak nie znajdzie paczki all-in-one to siada i beczy :)))

zielu84   5 #14 10.01.2012 20:28

@ubuntu-usr
Nie rozumię, to znaczy że developerzy nie mogą być ludźmi? To po kiego grzyba tworzy się dla nich IDE, a nie każe się programować w notatniku i kompilować z lini poleceń? Bo dla rynku IT w tej chwili najważniejszy jest czas dostarczenia aplikacji, więc po to sie ułatwia wszystko. Po to powstał Intelli-sense. Po to są interfejsy graficzne. Po to są zaawansowane debuggery. Równie dobrze z takim podejściem jak Ty masz nie powinno się dawać nigdy paczek dla linuksa, tylko zawsze czysty kod, najlepiej bez komentarzy, który będziesz sobie kompilował (bo w końcu jesteś developerem, a nie userem, nie będziesz się poniżał instalacją z paczek).

@Darxis
Ostatnio też szukałem czegoś w postaci cURL do tej mojej aplikacji ale doszukałem się klasy WebClient, która ma metodę GetString (w przypadku WP7 GetAssync) i zwraca stronę. Potem użyłem RegExp aby wyciągnąć z niej co chciałem i na szczeście nie musiałem żadnych cURLi dopinać.

@GL1zdA
Zawsze eclipse mnie pytał o JDK, jeśli nie wykrył z automatu ale słuszna uwaga, może faktycznie nie było skonfigurowane.

Onlinemaster   9 #15 10.01.2012 20:30

Nie żebym był trollem Miodkiem, ale popraw to: "nie powinienem mieć problemów z napsianiem" ;) Śmiesznie Ci to wyszło :P

kamil_w   10 #16 10.01.2012 20:49

@zielu84
Piszesz user, myślisz "ludź". Z twojego toku rozumowania wynika, że chodzi ci o human-friendly. ;)

zielu84   5 #17 10.01.2012 21:04

@
Onlinemaster
Zdaża się ;)

@
RaveStar
Przyznam, że mnie załamałeś... No ale nic, powalczę.

  #18 10.01.2012 21:06

Radzę nie stosować Javy w wersji 7, bo trafiłem na sporo niekompatybilnych programów, a niektóre w ogóle Javy nie wykrywały. Na wersji 6 wszystko śmiga. Dziwne, ale prawdziwe :P Może w tym jest problem?

  #19 10.01.2012 22:34

Nie kupię Windows Phone, gdyż nie chcę by tacy "programiści" pisali dla mnie aplikacje, to wszystko z mojej strony.

_qaz7   6 #20 11.01.2012 00:25

Od wersji 2.3 Google daje nam możliwość pozbycia się Javy i tragicznego Eclipse, a przy odrobinie chęci, można NDK/SDK podpiąć pod VS2010, dzięki czemu można pozbyć się koszmarnego cygwina.

RubasznyRumcajs   6 #21 11.01.2012 00:43

powinno byc "summa sumarum" a nie suma sumarów :)

_qaz7   6 #22 11.01.2012 09:40

@RaveStar - nie masz co odradzać Androida+VS2010 - sprawdzone i działa.

_qaz7   6 #23 11.01.2012 10:30

@RaveStar

A co do wyników z phoronixa - to nietrudno podejrzewać, że na Viście wszystko będzie wolniejsze niż na Ubuntu, nie tylko Java.

  #24 11.01.2012 13:00

@_qaz7 to że java działa szybciej na linuksie wiadomo już od windows xp. Java na linuksie działa trochę szybciej niż windows z .net z analogiczną implementacją w C# algorytmu ale różnica nie jest duża.

Ja eclipse CDT uważam za dobre środowisko ale każdy lubi co innego.

Razi   5 #25 16.01.2012 00:39

Przebudować projekt, po problemie. R jest tworzony przy przebudowaniu zwykle i zwykle są dwa R: systemowy (android.R) i "lokalny", czyli zasoby twojej aplikacji.

Jak nie masz sprzętu z androidem to współczuję współpracy z emulatorem :)

A tak poza tym, to jest jeszcze projekt Necessitas (Przerobiony Qt Creator) i Ministro (biblioteka Android-side): port Qt na androida :) Działa całkiem sprawnie, choć u mnie był problem z czcionkami.