2012-03-29 5 views
31

Ich habe gerade diese Beschreibung des Android Support Package/Compatibility Library lesen ...Android Support Package/Kompatibilitätsbibliothek - Verwenden Sie v4 oder v13?

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

... und es ist mir ein wenig verwirrt verlassen! Es sagt, dass die v13-Bibliothek eine Obermenge von v4 ist, aber ich dachte, dass es umgekehrt war?

Immer praktisch: Wenn ich die Kompatibilitätsbibliothek so verwenden möchte, dass meine App für Telefone mit Android 2.2 (API 8) bis 4.0 (API 14) und darüber hinaus funktioniert, funktioniert v4 für mich?

Antwort

35

Um API 8 (v2.2) zu targetieren, sollten Sie die Version v4 verwenden.

Große Teile der v13 funktionieren, aber wenn Sie eine der Funktionen verwenden, die auf der Plattform 13 APIs beruhen, wird Ihre App auf älteren Geräten explodieren.

Wenn es keinen besonders zwingenden Grund gibt, v13 zu benötigen, würde ich vorschlagen, direkt auf v4 zu gehen.

+0

Zur Klarstellung: Ich bin 'targetSdkVersion' als "14" und 'minSdkVersion' als "8" in meinem Manifest angeben. Also v4 ist immer noch der, den ich will, oder? –

+2

Wenn Sie die Version 13 verwenden und eine Funktion verwenden, die auf einer API der Plattform 13 basiert, wird Ihre App in die Luft gehen. Nur weil es kompiliert wird, heißt das nicht, dass es auf allen Geräten funktioniert. –

+0

Ich verstehe immer noch nicht, wenn v13 mehr als 13 Geräte benötigt, warum ist es eine Obermenge von v4 ... – Olivier

9

Die Antwort ist korrekt, aber auch etwas verwirrend! Derzeit gibt es 3 Support-Gläser: V4, V7 und V13. Leider ist V7 nur für das Gridlayout gedacht und daher KEINE Obermenge.

Wir interessieren uns nur für ein Glas aus der Support-Bibliothek [es sei denn, wir wollen auch gridlayout (ich weiß nicht, was es ist!)]. Deshalb betrachten wir unseren Android: minSdkVersion = "8" und überprüfen es gegen die Gläser. Also wollen wir V4.

V13 ist nur eine Obermenge in dem Sinne, dass es die V4-Methoden, NICHT den Code dupliziert. I.e. die Verwendung von V13 wäre in diesem Beispiel falsch.

5

Das glaube ich nicht, dass wir Obermenge (oder Teilmenge) verwenden, sollten diese drei Bibliotheken (v4, v7, v13), obwohl die einfachste Bedeutung scheint rückwärtskompatible Version 4, 7 und 13.

Google hinzugefügt zu beschreiben Fragment in v4 zuerst, dann aktualisieren Sie es, wenn jede neue Version veröffentlicht wurde. Das heißt, wenn Ihre App nur die neueste Version unterstützt (was stark nicht empfohlen), benötigen wir Support-v4 fast jederzeit. Nehmen Sie an, Ihre minsdk ist 14, die Fragment hat schon, aber 'embedded fragment' unterstützt nur nach 17, also brauchen wir immer noch v4 und v4 fragment in dieser situation verwenden.

In diesem Jahr (2013) veröffentlichte Google v7 und fügte appcompat-library hinzu. Das bedeutet neben der dritten Unterstützung Actionbar (ActionbarSherlock) vor 11, offizielle Unterstützung vielleicht eine bessere One ?? Dann glaube ich, dass wir jedes Actionbar-Feature-Update haben werden, wenn jede neue Version in Zukunft in Version 7 veröffentlicht wird.

Wir brauchen noch minsdk = XX (zwischen 7 und 10) today (Nov.24,2013) .Wir sollten hinzufügen support-v4 für Fragment und Support-v7 für ActionBar sowohl für die beste Praxis.

+0

Ihre Antwort erklärt ziemlich schön, dass es keine Untermenge zwischen diesen Bibliotheken gibt, von der die meisten Leute glauben. – thedarkpassenger

0

v13 haben nur Funktionen über Fragment. meist wenn Ihre minVersion über 13 ist und Funktionen wie FragmentPagerAdapter, FragmentStatePagerAdapter, FragmentTabHost und verschachtelte Fragmente nicht verwendet werden; Sie benötigen keine Unterstützung v13.

so "v4 ist eine Teilmenge von v13" ist falsch!

1

Ich überprüfte den Quellcode von v13, es fügt nur 4 weitere Klassen hinzu.

  • FragmentCompat
  • FragmentPagerAdapter
  • FragmentStatePagerAdapter
  • FragmentTabHost

FragmentCompat fügt 2 statische util Methoden, die bereits in v4 Fragment enthalten sind.

FragmentPagerAdapter, FragmentStatePagerAdapter und FragmentTabHost, alle diese 3 Klassen haben die gleichen Namen Klassen in v4 und haben das gleiche Verhalten.

Die zusätzlichen APIs in Version 13 sind nicht erforderlich.

Also, indem Sie v4 hinzufügen, können Sie mehr Plattformen als v13 unterstützen, mit dem gleichen Verhalten wie v13, warum also nicht einfach v4?

So konnte ich keine Notwendigkeit für v13 sehen. Bin ich richtig?

0

Ein wenig spät, aber bitte schauen Sie sich das Bild unten gut an. In der JAR-Datei android-support-v13.jar gibt es 3 Pakete:

  • Anmerkung
  • v4
  • v13

Bedeutung müssen wir nur dieses eine Glas hinzufügen und Wir hätten Unterstützung für v4 und v13. Da v7 NICHT in der Kompilierung enthalten ist, müssten wir diese JAR selbst hinzufügen.

enter image description here