2010-05-26 9 views
7

Mam projekt, który tylko używa Androida 1.5 do programowania, ale wraz z rozprzestrzenianiem się innych telefonów i kilku fajnych funkcji w systemie Android 2.2, chcielibyśmy wesprzeć te funkcje bez utraty obsługi wersji 1.5 lub rozwidlenia nowej podstawy kodu. Czy można to zrobić z Androidem SDK?Czy istnieje sposób korzystania z funkcji w systemie Android 2.1/2.2 przy zachowaniu wersji minSDK do 3?

Mam trochę "brzydkiego" sposobu, aby to zrobić, jak w utrzymaniu tej samej podstawy kodu, ale mam system kompilacji, który buduje różne wersje dla platform i utrzymuje różne pliki Java wokół tego, co dodaje się do naszej bazy kompilacji w oparciu o wybraną wersję. Mam nadzieję, że ktoś inny rozwiązał problem w oparciu o wiele wersji aplikacji na rynku, które działają na wielu wersjach Androida.

+0

duplikat http://stackoverflow.com/questions/4968988/what-if-i-want-to-release-an-update-with-higher-minsdk-than-the-one-on-the- market/4969477 # 4969477 – rds

Odpowiedz

6

chcielibyśmy obsługiwać funkcje bez utraty wsparcia dla 1,5 lub rozwidlone nową bazę kodu. Czy można to zrobić za pomocą zestawu SDK systemu Android w wersji ?

Pewnie. Techniki są dostępne od około dekady.

Opcja nr 1: Użyj refleksji, aby uzyskać dostęp do nowych klas (lub nowych metod istniejących klas) w czasie wykonywania. See here for an example.

Opcja nr 2: Użyj warunkowego ładowania klas, tworząc interfejs plus dwie implementacje (jedną dla starszego interfejsu API, jedną dla nowszego API) i ładując odpowiednią implementację w środowisku wykonawczym. Ponieważ nowsza implementacja nie zostanie załadowana na starszym urządzeniu, fakt, że nowsza implementacja używa klas lub metod, których nie ma starsze urządzenie, nie stanowi problemu. See here for an example.

+2

Należy również pamiętać, że w przypadku atrybutów XML można z nich swobodnie korzystać, a starsze wersje platformy będą je ignorować. Można na przykład zbudować zestaw SDK 2.2, aby użyć nowego atrybutu, aby zezwolić na instalację na karcie SD, a aplikacja będzie nadal działać na starszych platformach, nie robiąc nic innego. – hackbod

+0

Commonsware, twój drugi przykład, PickDemo.java jest bardziej przydatny do wyświetlania kontaktów na API 4 i późniejszych API. – Yar

+0

@Yar: Nie sądzę, że 'PickDemo' istniało w marcu 2010 roku. :-) Oto link do niego w każdym razie: https://github.com/commonsguy/cw-omnibus/tree/master/Contacts/Pick – CommonsWare

Powiązane problemy