2013-02-18 10 views
11

Proste pytanie: W poleceniu Eclipse "Nowy Android projekt" zawsze próbuje użyć ostatniego dostępnego sdk. Czy to zawsze dobry pomysł?Czy muszę używać zawsze ostatniej wartości targetSdkVersion?

UPDATE:

postaram się wyjaśnić. Teraz w Eclipse, "Nowy projekt" produkuje oczywisty z:

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="17" /> 

Więc docelową do ostatniego Android (Jelly Bean 4.2.x), ale można go uruchomić również na Froyo (2.2). Dla mnie ok. Co mogłem zrobić bardzo źle z tym wyborem?

UPDATE

Czy to jest ok, jeśli mogę ustawić android: minSdkVersion = "8" + android: targetSdkVersion = "17", a cel build do 2,2 mieć pewność, moja aplikacja będzie działać na starszych urządzeń (nie Wyjątek NoSuchMethodError)?

+0

To zależy od urządzeń, na które chcesz kierować – vodich

+0

Zmodyfikowaliśmy moje pytanie –

+1

Przeczytaj ten opis na temat tego, co "docelowa wersja sdk" oznacza: http://developer.android.com/guide/topics/manifest/uses-sdk -element.html Z tego wynika, że ​​przetestowałeś swoją aplikację w tej wersji SDK i sprawdziłeś, czy działa poprawnie. Więc urządzenie nie musi emulować starszego sdk dla ciebie. – tuxSlayer

Odpowiedz

10

Co mogę zrobić bardzo źle z tym wyborem?

Nie ma nic złego w tym wyborze, dlatego domyślne narzędzia do kompilacji to domyślne.

Ustawienie targetSdkVersion powoduje zmianę zachowań, których nie można uzyskać ze starszą wersją targetSdkVersion. Możesz zobaczyć niektóre z nich, czytając: the documentation for Build.VERSION_CODES.

+0

Poprzednio parametr targetSdk miał wartość 8, a teraz (17) otrzymuję wyjątek NetworkOnMainThreadException. Zmiana celu pomogła mi odkryć te "złe" linie. –

+0

Czy mogę ustawić Androida: minSdkVersion = "8" android: targetSdkVersion = "17" i cel kompilacji do wersji 2.2, aby mieć pewność, że moja aplikacja będzie działać na starszych urządzeniach? –

+1

@Seraphim: Nie poleciłbym tego podejścia.Lint powie ci, kiedy są klasy i metody, których używasz, które przekraczają twoją "minSdkVersion". Z ~ 40% urządzeń z Androidem 3.0 lub nowszym, powinieneś zacząć korzystać z możliwości nowszych niż Android 2.2, tylko warunkowo (np. Za pomocą 'Build.VERSION.SDK_INT'). W takich przypadkach należy ustawić cel kompilacji na wersję Androida, która ma wszystkie klasy i metody, których próbujesz użyć. – CommonsWare

4

Jeśli chcesz tworzyć aplikacje dla starszej wersji, nie jest to dobry pomysł. Zawsze możesz sprawdzić, co jest most used version i złożyć wniosek przeciwko tej wersji. W niektórych przypadkach konieczne jest korzystanie z najnowszej wersji, ponieważ niektóre funkcje nie zostały jeszcze zaimplementowane w starszej wersji.

+0

Edytowałem moje pytanie. –

Powiązane problemy