2012-03-29 10 views
31

Ho appena letto questa descrizione del supporto Android Package/Compatibility Library ...Android Support Package/Compatibility Library - utilizzare v4 o v13?

http://developer.android.com/sdk/compatibility-library.html

... e la cosa mi è rimasto un po 'confuso! Dice che la libreria v13 è un superset di v4, ma ho pensato che fosse il contrario?

Pratico: se voglio utilizzare la libreria di compatibilità in modo tale che la mia app si sviluppi e funzioni bene per i telefoni con Android 2.2 (API 8) fino a 4.0 (API 14) e oltre, sarà sufficiente per me v4?

risposta

35

Per target API 8 (v2.2) è necessario utilizzare la versione v4.

Ampie sezioni del v13 funzioneranno, ma se si utilizza una delle funzionalità in esso che si basano sulle API della piattaforma 13, l'app esploderà sui dispositivi meno recenti.

A meno che non ci sia un motivo particolarmente interessante per cui è necessario v13, suggerirei di andare direttamente per la v4.

+0

per chiarire: io sto specificando 'targetSdkVersion' come "14" e 'minSdkVersion' come "8" nel mio manifesto. Quindi v4 è ancora quello che voglio, giusto? –

+2

Se si utilizza il v13 e si utilizza una funzione che si basa su un'API di piattaforma 13, l'app esploderà. Solo perché compila, non significa che funzionerà su tutti i dispositivi. –

+0

Ancora non capisco se v13 richiede 13+ dispositivi perché è un superset di v4 ... – Olivier

9

La risposta è corretta ma è anche leggermente confusa! Attualmente ci sono 3 barattoli di supporto: V4, V7 e V13. Sfortunatamente V7 è specifico solo per la griglia e quindi NON è un superset.

Siamo interessati a un solo jar dalla libreria di supporto [a meno che non vogliamo anche gridlayout (non so cosa sia!)]. Quindi stiamo guardando il nostro androide: minSdkVersion = "8" e controllandolo contro i vasi. Quindi vogliamo V4.

V13 è solo un superset nel senso che duplica i metodi V4, NON il codice. Cioè l'uso di V13 sarebbe errato in questo esempio.

5

Non credo che dovremmo usare superset (o sottoinsieme) per descrivere questi tre librerie (v4, v7, V13) se il significato più semplice sembra compatibile-versione 4, 7 e 13.

Google ha aggiunto Frammento in v4 per primo, quindi aggiornarlo quando ogni nuova versione è stata pubblicata. Ciò significa che, a meno che la tua app non supporti solo la versione più recente (che non è fortemente consigliata), abbiamo necessario supporto-v4 quasi in qualsiasi momento. Supponiamo che il tuo minsdk sia 14 che ha il frammento già, ma il 'frammento incorporato' supporta solo dopo 17, quindi abbiamo ancora bisogno di v4 e usare il frammento v4 in quella situazione.

Quest'anno (2013) Google ha pubblicato v7 e aggiunto la libreria appcompat al suo interno. Ciò significa che oltre al terzo supporto Actionbar (ActionbarSherlock) prima delle 11, il supporto ufficiale forse è meglio One ?? Quindi credo che avremo l'aggiornamento di ogni actionbar quando ogni nuova versione verrà pubblicata in futuro nella v7.

Dobbiamo ancora minsdk = XX (tra 7 e 10) today (Nov.24,2013) .We dovrebbe aggiungere il supporto-v4 per frammento e supporto-v7 per ActionBar sia per le migliori pratiche.

+0

la tua risposta spiega piuttosto bene che non esiste alcuna relazione di superserie di sottoinsieme tra queste librerie che la maggior parte della gente crede. – thedarkpassenger

0

v13 hanno solo funzioni su Fragment. principalmente se la tua minVersion è superiore a 13 e funzioni non utilizzate come: FragmentPagerAdapter, FragmentStatePagerAdapter, FragmentTabHost e frammenti nidificati; non è necessario il supporto v13.

quindi "v4 è un sottoinsieme di v13" non è corretto!

1

Ho controllato il codice sorgente di v13, aggiunge solo altre 4 classi.

  • FragmentCompat
  • FragmentPagerAdapter
  • FragmentStatePagerAdapter
  • FragmentTabHost

FragmentCompat aggiunge 2 metodi util statici che sono incluse in v4 Frammento già.

FragmentPagerAdapter, FragmentStatePagerAdapter e FragmentTabHost, tutte queste 3 classi hanno le stesse classi con lo stesso nome in v4 e hanno lo stesso comportamento.

Le API aggiuntive fornite in v13 non sono necessarie.

Quindi aggiungendo v4, è possibile supportare più piattaforme di v13, con lo stesso comportamento con v13, quindi perché non usare solo v4?

Quindi non ho potuto vedere alcuna necessità per v13. Ho ragione?

0

Un po 'tardi ma si prega di dare un'occhiata alla foto qui sotto. Nel file JAR android-supporto-v13.jar, ci sono 3 pacchetti:

  • annotazione
  • v4
  • v13

Significato abbiamo solo bisogno di aggiungere questo vaso, e avremmo supporto per entrambe le versioni v4 e v13. Dal momento che la v7 NON è nella compilazione, dovremmo aggiungere quel JAR per conto nostro.

enter image description here

Problemi correlati