1. Android jest systemem poframgmentowanym, z tego co doczytałem to Android np 2.1 na LG nie jest już tym samym co na np HTC. Ponadto zauważyłem w markecie w opisie aktualizacji aplikacji że jest wspierany jakiś konkretny telefon lub jest poprawka bugów dla konkretnego modelu co mnie przeraża - bo to oznacza, że nie wystarczy jeden kod tylko dla każdego producenta trzeba dodatkowo pisać jakieś linie kodu? Czyli tak jak np. pisząc stronę www w html, nie będzie ona działać tak samo w IE i Operze, chyba, że dopiszemy kod który zrozumie Explorer?
Hm. Niekoniecznie jest tak strasznie. Analogia do przeglądarek na szczęście jest nieprawdziwa - kod skompilowany precyzyjnie opisuje jak program ma się wykonywać i miejsca na niejednoznaczność tutaj nie ma. Wprawdzie nie mam doświadczenia w wypuszczaniu własnych appsów do Marketu (więc ewentualnie inni mnie poprawią), ale fragmentacja nie wydaje się być aż takim problemem (w chwili obecnej i tak lwia część rynku należy do 2.1/2.2) - ewentualne dostosowanie aplikacji do różnych modeli telefonów rozbija się o przystosowanie ich do działania na telefonach o różnych wielkościach i gęstościach ekranów. Drugą sprawą mogą być wymagania sprzętowe. No i wszystko zależy od aplikacji jaką piszesz - nie każda ma szansę mieć problem (z bugów przypisanych do danych modeli telefonów - te się zdarzają, choć raczej nie aż tak często. Bodajże np. Motorola Cliq miała buga, który powodował, że podawała obsługę wersji OpenGL'a której tak naprawdę nie obsługiwała...).
2. Nawiązując do pierwszego pytania, jaki wpływa na pisanie aplikacji ma wersja Anka? Czy może ustala się to z góry w SDK jak ma być kompilowana aplikacja, w zgodności z którymi wersjami tego systemu?
Pisząc aplikację ustalasz minimalną wersję systemu, na której będzie ona działać. Generalnie każda nowa wersja jest kompatybilna wstecz, także działają na nich programy kompilowane na poprzednie wersje. Dodatkowo należy pamiętać, że każdy nowy system wprowadza nową funkcjonalność, ale nie każda aplikacja takiej funkcjonalności potrzebuje, więc nie zawsze trzeba od razu pisać na najnowsze systemy.
3. Można po prostu pisać w C++ kod? Obiło mi się że tak, ale jak to jest dokładnie czy nie ma w tym jakiegoś 'ale'?
Niestety nie wygląda to tak pięknie. Pisania na Androida w C++ nie polecał bym, chyba, że naprawdę wiesz co robisz (np. masz doświadczenie i wiesz, że sobie poradzisz). Po pierwsze na Androidzie program skompilowany do natywnego kodu i tak działa pod kontrolą i jest wołany przez Dalvika, a więc musisz troszczyć się o "klejenie" Javy i C++. Wprawdzie od 2.2 dostępne jest NativeActivity które częściowo rozwiązuje ten problem, ale raz, że wymaga to 2.2+, a dwa, że 'częściowo' 😉.Druga sprawa, to to, że pisanie, kompilowanie i debugowanie natywnego kodu dla Androida jest, nazwijmy to, mało ergonomiczne - nie ma do tego żadnych wygodnych okienkowych narzędzi, tylko linia komend. Można? Można, ale jest to dokładanie sobie zbędnej pracy i narażanie się na zbędne niewygody, czyli zwiększenie szansy na niepowodzenie projektu. Trzecie sprawa, że na Androidzie Java wystarcza praktycznie zawsze. Po prostu.