Cette page fournit des informations sur les dernières versions des packages de la bibliothèque Support. Pour les versions antérieures, consultez l' archive des révisions de la bibliothèque Support.
Révision 28.0.0 Production
(21 septembre 2018)
Il s'agit de la version stable de la bibliothèque Support 28.0.0, adaptée à une utilisation en production. Il s'agira de la dernière version de la fonctionnalité sous le package android.support
. Nous encourageons les développeurs à migrer vers AndroidX.
Nouvelles fonctionnalités
-
AnimatedStateListDrawableCompat
fournit des transitions animées entre les états drawables. -
VectorDrawableCompat
est désormais compatible avec les dégradés, ainsi que les remplissages et les traitsColorStateList
.
Révision 28.0.0 RC 2
(27 août 2018)
Cette version finale de la bibliothèque Support est considérée comme complète et sa surface d'API publique est stable. Cette version sera envoyée en tant que version stable finale, sauf en cas de problème critique. Cette version doit pouvoir être utilisée sans risque en production. Veuillez signaler tout problème via l'outil public Issue Tracker.
Problèmes résolus
- Suppression du constructeur de l'application ViewModel par ProGuard (problème public 112230489)
- Correction de l'état constant "AnimatedStateListDrawableCompat"
- Suppression de la dépendance Media2 de MediaRouter 1.0.0
- "Fragment.getViewLifecycleOwner()" ne s'arrête pas lorsque l'on appuie sur le bouton d'accueil (problème public 113070421) ([problème public 113070421](https://issuetracker.google.com/issues/113070421))
Révision 28.0.0 RC 1
(6 août 2018)
Cette version finale de la bibliothèque Support est considérée comme complète et sa surface d'API publique est stable. Cette version sera envoyée en tant que version stable finale, sauf en cas de problème critique. Cette version doit pouvoir être utilisée sans risque en production. Veuillez signaler tout problème via l'outil public Issue Tracker.
Remarque:Certaines bibliothèques, telles que media2, sont restées en phase alpha, car leurs surfaces d'API ne sont pas encore finalisées. Nous vous déconseillons d'utiliser les bibliothèques alpha en production. Les bibliothèques doivent strictement éviter de dépendre des bibliothèques alpha en production, car leurs surfaces d'API peuvent changer de manière incompatible avec les sources et les binaires.
Problèmes résolus
- Le menu BottomNavigationView n'est pas initialisé correctement dans la bibliothèque de conception Support
- PositionalDataSource ne gère pas correctement les insertions d'éléments en attente dans la base de données
- Les curseurs sont irréguliers et ne répondent pas
- "SlicesProviderCompat.getPinnedSpecs()" n'ajoute pas d'ID utilisateur aux URI
- RoutePlayer2 : la lecture à distance ne rebascule pas vers une lecture en local
- L'analyse des segments mis en cache plante sur les actions
- L'application Recherche Google plante au moment d'afficher un segment statique
- ConcurrentModificationException dans la bibliothèque de sélection RecyclerView lorsque l'ensemble de données a été modifié en supprimant la sélection
- PreferenceThemeOverlay a été mis à jour vers le dernier thème Material. Si aucun thème personnalisé n'est fourni, PreferenceThemeOverlay est utilisé comme thème par défaut.
- Les thèmes PreferenceThemeOverlay.v14 et PreferenceThemeOverlay.v14.Material ont été abandonnés au profit de PreferenceThemeOverlay.
- La visibilité de PreferenceGroup est désormais liée à ses enfants. Le masquage d'un groupe parent empêche également ses enfants d'être affichés dans la hiérarchie. Utilisez Preference.isdisplay() pour déterminer si une préférence est réellement affichée pour l'utilisateur dans la hiérarchie.
- Preference.onSetInitialValue(boolean, Object) est obsolète et a été remplacé par onSetInitialValue(Object). Désormais, PreferenceDataStore restaure aussi correctement les valeurs par défaut.
Révision 28.0.0 bêta 1
(juillet 2018)
Cette version bêta de la bibliothèque Support est considérée comme complète et sa surface d'API publique est stable, sauf en cas de problème critique. Bien que cette version puisse être utilisée sans risque en production, elle peut encore comporter des bugs. Veuillez signaler tout problème via la version publique d'Issue Tracker.
Problèmes résolus
- GestureSelectionHelper détruit des événements sur des éléments non sélectionnables
- Les segments de curseur peuvent avoir une double icône de pouce lorsque la valeur du curseur est mise à jour
- IconCompat ne fonctionne plus pour les icônes TYPE_URI
- Les préférences plantent avec Seekbar
- Slice.toString() crashe
- OffsettingListUpdateCallback.onMoved() appelle mCallback.onRemoved() au lieu de mCallback.onMoved() (problème 110711937)
Révision 27.1.1
(avril 2018)
Problèmes résolus
- AsyncListDiffer n'appelle pas getChangePayload (problème AOSP 73961809)
- OnCleared de Fragment ViewModel n'est pas appelé (problème AOSP 74139250)
- RecyclerView.setRecycledViewPool() augmente attachCount même lorsque l'adaptateur est nul
- NPE RecyclerView si SmoothScroller.onStop appelle stop() ou startSmoothScroller().
- La transaction de remplacement de fragment entraîne le scintillement du fragment précédent après l'affichage du nouveau fragment (problème AOSP 74051124)
- Modification destructive du rappel du chargeur dans la version 27.1.0 (problème AOSP 74135998)
- La mise en page de droite à gauche ne fonctionne pas lorsque la vue en mode Grille verticale définit une colonne supérieure à 1
- onLoadFinished appelé plusieurs fois dans ViewPager avec FragmentPagerAdapter.
- AsyncListDiffer devrait envoyer les mises à jour après la définition de la liste actuelle (problème AOSP 74003309)
- ShareActionProvider génère une exception ClassCastException dans la version 27.1.0
- Modification du cycle de vie d'un fragment avec ViewPager (problème AOSP 73976255)
Révision 28.0.0 Alpha 1
(mars 2018)
Remarque:28.0.0-alpha1 est une version préliminaire compatible avec la version Preview développeur d'Android P. Sa surface d'API est susceptible d'être modifiée et n'inclut pas nécessairement les fonctionnalités ou les corrections de bugs des dernières versions stables de la bibliothèque Support.
Changements significatifs
- Comme indiqué précédemment dans l'
annonce Android KTX, nous continuons d'adopter le préfixe de package
androidx
dans nos bibliothèques. Une sélection de toutes nouvelles bibliothèques, y comprisheifwriter
etrecyclerview-selection
, démarre dans ce nouveau package. Nous espérons que la séparation entreandroid.*
etandroidx.*
permettra de distinguer plus clairement les API intégrées à la plate-forme et les bibliothèques statiques destinées aux développeurs d'applications qui travaillent sur différentes versions d'Android. - Nous avons divisé certaines parties de support-core-ui, support-core-utils et support-compat en bibliothèques plus petites. Ce changement nous aidera à démêler les dépendances des bibliothèques de support à l'avenir. Nous disposons désormais des nouvelles bibliothèques suivantes :
- asynclayoutinflater (à partir de support-core-ui)
- Collections (à partir de support-compat)
- coordinatorlayout (de la conception)
- CursorAdapter (à partir de support-core-ui)
- customview (à partir de support-core-ui)
- Documentfile (à partir de support-core-utils)
- boardlayout (à partir de support-core-ui)
- interpolateur (à partir de support-core-ui)
- loader (à partir de support-fragments et core-utils)
- localbroadcastmanager (à partir de support-core-utils)
- print (à partir de support-core-utils)
- Swipepanelayout (à partir de support-core-ui)
- swiperefreshlayout (à partir de support-core-ui)
- viewpager (à partir de support-core-ui)
Nouvelles API
recyclerview-selection
permet de sélectionner des éléments pourRecyclerView
. Le package comprend les éléments suivants :- Prise en charge de la création, de la modification, de l'inspection et de la surveillance des modifications apportées à un ensemble d'éléments sélectionnés dans une liste RecyclerView.
- Prise en charge des actions de sélection multiple intuitives :
- La sélection tactile permet aux utilisateurs de sélectionner des plages d'éléments par un geste intuitif d'appui prolongé et de faire glisser.
- La sélection de bande par la souris permet aux utilisateurs de sélectionner un bloc d'éléments dans une liste RecyclerView à l'aide d'actions traditionnelles de bande/lasso de pointeur de souris.
- Compatibilité avec les appareils axés sur l'écran tactile, y compris les facteurs de forme des téléphones et des ordinateurs portables à écran tactile, ainsi que les appareils orientés pointeurs.
- HEIF Writer permet d'écrire des images fixes au format HEIF.
- Bibliothèque Design
- Nous avons lancé un nouveau thème d'application,
Theme.MaterialComponents
, avec de nouveaux attributs et des styles mis à jour pour les composants. - Nous avons ajouté les composants suivants :
- Barre d'application inférieure
- Puce électronique
- Groupe d'icônes
- Bouton Material
- MaterialCardView
- Nous avons lancé un nouveau thème d'application,
- Les segments d'application fournissent un framework permettant aux applications d'intégrer du contenu issu d'un modèle d'autres applications.
- segments-builders contient des méthodes permettant de créer du contenu sous forme de modèle.
- segments-view contiennent des méthodes permettant de présenter ce contenu.
- Les actions du navigateur fournissent un protocole permettant aux développeurs d'applications de lancer un menu contextuel cohérent (mais personnalisable) pour les URL. Cette fonctionnalité dépend de la présence d'une application de navigateur (comme Chrome, où elle est encore en développement) prenant en charge les actions du navigateur.
-
ContextCompat.getSystemService()
etgetSystemServiceName()
autorisent la recherche de services système par type à tous les niveaux d'API.
Correction de bugs
- OnCleared de Fragment ViewModel n'est pas appelé (problème AOSP 74139250)
- onLoadFinished() appelé plusieurs fois dans ViewPager avec FragmentPagerAdapter (problème AOSP n° 74182171)
- La fonction smoothScrollToPosition() de RecyclerView LinearLayoutManager affiche des mouvements erratiques (aller-retour) dans certaines circonstances (problème AOSP 71567765)
Révision 27.1.0
(février 2018)
Changements importants
- L'implémentation sous-jacente des chargeurs a été réécrite afin d'utiliser Lifecycle. Bien que l'API ne change pas, il existe un certain nombre de changements de comportement :
initLoader()
,restartLoader()
etdestroyLoader()
ne peuvent désormais être appelés que sur le thread principal.- Les
onStartLoading()
etonStopLoading()
d'un chargeur sont désormais appelés lorsque le fragment FragmentActivity/Fragment contenant est démarré et arrêté, respectivement. onLoadFinished()
ne sera appelé qu'entreonStart()
etonStop
. Par conséquent, les transactions de fragment peuvent désormais être effectuées de manière sécurisée dansonLoadFinished()
.- Les méthodes FragmentController liées aux chargeurs sont désormais obsolètes.
- La valeur
getDialog()
de DialogFragment sera désormais non nulle jusqu'auonDestroyView()
, au lieu de devenir nulle dansdismiss()
. Vous pouvez maintenant déterminer si la boîte de dialogue a été fermée manuellement dansonStop()
en vérifiant sigetDialog().isShowing()
renvoie la valeur "false".
Nouvelles API
ListAdapter
pourRecyclerView
(ainsi queAsyncListDiffer
) facilitent le calcul des différences de liste sur un thread d'arrière-plan. Ceux-ci peuvent aider votre RecyclerView à animer les modifications de contenu automatiquement, avec un travail minimal sur le thread UI. Ils utilisentDiffUtil
en arrière-plan.SortedList.ReplaceAll
permet de mettre à jour toutes les données d'une SortedList, qui exécute toutes les animations appropriées pour les insertions, les suppressions, les modifications et les déplacements (les déplacements sont traités comme des suppressions et des insertions).- FragmentActivity et Fragment implémentent désormais
ViewModelStoreOwner
et peuvent désormais être utilisés avec les constructeursViewModelProvider
au lieu d'utiliserViewModelProviders.of()
. - Les fragments disposent désormais des méthodes
requireContext()
,requireActivity()
,requireHost()
etrequireFragmentManager()
, qui renvoient un objetNonNull
des méthodes get équivalentes ou génèrent une exceptionIllegalStateException
. requireViewById()
, une version compatible@NonNull
defindViewById()
a été ajoutée àWindowCompat
,ActivityCompat
etViewCompat
, qui génèrent une erreurIllegalArgumentException
lorsque la cible est introuvable.- Les méthodes
LoaderCallbacks
disposent désormais des annotations@Nullable
et@NonNull
appropriées. FileProvider
est désormais compatible avecgetExternalMediaDirs()
sur les appareils utilisant l'API 21 ou version ultérieure via le nouvel élément<external-media-path>
.
Correction de bugs
- Le fragment qui initialise Loader dans onCreate a interrompu le cycle de vie dans ViewPager.
- LoaderManager génère une exception IllegalStateException dans onLoadFinished
- LoaderViewModel n'efface pas ses chargeurs dans onCleared
- Le fichier de classe android.arch.lifecycle.ViewModelStoreOwner est introuvable
- DialogFragment onDismiss non appelé immédiatement après dismiss()
- Les emojis avec drapeau du pays ne fonctionnent pas sur les appareils associés à des clés de publication en cas d'utilisation de polices téléchargeables.
- La bibliothèque Preferences utilise des attributs qui ne fonctionnent pas sur les anciennes versions d'Android.
- Les types d'artefacts testlib de MediaCompat ne sont pas documentés correctement (problème AOSP 71559905)
- Plantage de Google Sans dans TypefaceCompatUtil
- Expose le constructeur ArraySet qui accepte la collection.
- updateApi supprime les fichiers .ignore qui doivent être conservés
- MainFragments redondants créés dansBrowseFragment
- Supprimer l'utilisation de la réflexion de CarRecyclerView
- java.lang.IllegalStateException dans FragmentManagerImpl.checkStateLoss
- Obtention de java.lang.SecurityException (non documentée) lors de l'utilisation d'android.support.v4.content.PermissionChecker.checkSelfPermission
- RecyclerView IndexOutOfBoundsException, car State.mPreviousLayoutItemCount non effacé dans setAdapter (problème AOSP 37657125)
- Le fragment qui initialise Loader dans onCreate a interrompu le cycle de vie dans ViewPager (problème AOSP n° 34831613)
- FragmentManagerImpl.execSingleAction plante
Révision 27.0.2
(novembre 2017)
Correction de bugs
-
EmojiEditTextHelper
génèreNullPointerException
. -
IllegalStateException
: le fragment n'a pas encore été associé. - Impossible de fermer la fenêtre pop-up de l'icône Cast en appuyant n'importe où sur l'écran.
-
MediaMetadataCompat
génèreBadParcelableException
.
Révision 27.0.1
(novembre 2017)
Correction de bugs
- LifecycleRegistry se trouve dans un état incorrect après l'appel de
startActivityForResult()
. (problème 65665621). - La couleur des boutons désactivés est trop claire sur les anciens niveaux d'API.
- Une fois qu'un utilisateur a fait défiler l'écran, il ne peut pas cliquer sur un élément dans une
RecyclerView
. (problème AOSP 66996774). - Dans Talkback, le fait de cliquer sur d'autres options n'annonce pas la nouvelle fenêtre pop-up ni ne place le curseur sur les nouvelles options.
Révision 27.0.0
(octobre 2017)
Différences d'API
Modifications apportées à l'API
- Des annotations de possibilité de valeur nulle ont été ajoutées à diverses API, y compris les suivantes : Cela peut entraîner des erreurs de compilation Kotlin lorsque les types renvoyés pouvant avoir une valeur nulle ne sont pas correctement traités.
-
Fragment
peut utiliser les versions de bibliothèque compatibles deTransition
pour les transitions de fragment, y compris les transitions d'éléments partagés. - La bibliothèque Content Paging (
android.support.content.ContentPager
) prend en charge le contenu de pagination exposé via unContentProvider
. L'utilisation de cette bibliothèque permet à un client d'éviter les interprocessus coûteux "échanges de fenêtres de curseur" sur le thread UI, en fournissant une bibliothèque de compatibilité pour la fonctionnalité Android 8.0. -
ViewCompat
ajoute désormais des wrappers pour les méthodes de saisie automatique, y comprisgetImportantForAutofill()
,isImportantForAutofill()
,setAutofillHints()
etsetImportantForAutofill()
. -
Leanback apporte de nouvelles fonctionnalités, peaufine et perd certaines classes obsolètes, telles que :
-
Picker
peut désormais utiliser différents séparateurs entre chaque colonne à l'aide de la méthodesetSeparators()
. -
DiffCallback
a été ajouté pour permettre àArrayObjectAdapter
d'exploiter la sortie fournie parDiffUtil
. - Infrastructure ajoutée pour prendre en charge les lecteurs multimédias avec des commandes variables, avec ajout de commandes facultatives pour l'avance rapide, la répétition, le brassage, le suivant, le précédent et le retour arrière.
- Suppression de
MediaControllerGlue
, PlaybackControlGlue,PlaybackControlSupportGlue
etPlaybackOverlayFragment
.
-
- Pour les tests, l'utilitaire PollingCheck est transféré depuis AOSP CTS. Il interroge une condition pour qu'elle se produise dans un délai avant expiration.
- Infrastructure ajoutée pour prendre en charge les autorisations d'exécution sur les applis instantanées pour Android 5.0, à l'aide de
PermissionCompatDelegate
. - Les onglets personnalisés de confiance sont désormais pris en charge, et vous pouvez définir une relation entre une application et un URI d'origine.
- La prise en charge du mode ambiant d'Android Wear est simplifiée grâce à l'utilisation du fragment sans interface graphique AmbientMode, qui rend également la prise en charge du mode Veille compatible avec l'utilisation des composants d'architecture.
- L'équipe Wear OS souhaite recueillir les commentaires des développeurs sur ce changement important. Pour en savoir plus, consultez les notes de version d'Android Wear.
- Certaines classes obsolètes ont été supprimées à mesure que nous abandonnons les anciennes API antérieures à la version 14, telles que
android.support.v7.NotificationCompat
(utilisez plutôt la version 4NotificationCompat
),KeyEventCompat
,ParallelExecutorCompat
etSearchViewCompat
. - Les constantes des métadonnées de fichier manifeste Wear OS migrées sont désormais disponibles via
android.support.wear.utils.MetadataConstants
. - Le mode Veille est désormais disponible pour toutes les activités, et pas seulement pour WearableActivity. Pour en savoir plus, consultez la documentation de référence sur
AmbientMode
. -
RoundedDrawable
prend désormais en charge le gonflage XML.
Correction de bugs
- L'application plante avec la bibliothèque Support 27 et une police téléchargeable
- Les polices téléchargeables ne fonctionnent pas pour les nouveaux projets créés après la mise à jour du SDK
- L'API SpeechRecognizer ne fonctionne pas dans la dernière mise à niveau
- Plantage lié à un fragment pendant le dessin après la suppression de la vue animée
- La lecture de contenus multimédias avec support-leanback-demos ne fonctionne pas.
- La bibliothèque Android Support ajoute <meta-data> au fichier manifeste
- FontResourcesParserCompat doit comprendre Android: attrs.
- Leanback Glue n'est pas compatible avec la clé d'entrée "Pause"
- Symbole non résolu dans l'IDE lorsque plusieurs packages partagent le même ID d'artefact.
- Exception de pointeur nul dans CarExtender
- Mode aléatoire / répétition incorrect défini pour PlaybackState après la création de MediaController
- Les affiches par défaut du cluster de bibliothèque s'exécutent sur le cluster suivant lors de la navigation
- Les métadonnées de la fiche de recommandation sont tronquées
- IllegalArgumentException sur RecyclerView.attachViewToParent()
- ClassNotFoundException lors du démarshalling de SavedState (problème AOSP 37133281)
- Le focus est bloqué dans RecyclerView
- Correction de l'erreur ANR dans Leanback LayoutManager
Version de la révision 26.1.0
(septembre 2017)
Il s'agit d'une version spéciale permettant d'intégrer la bibliothèque Support aux cycles de vie des composants d'architecture. Si vous n'utilisez pas la bibliothèque Lifecycles, vous n'avez pas besoin d'effectuer de mise à jour depuis la version 26.0.2. Pour en savoir plus, consultez les notes de version des composants d'architecture.
Changements significatifs
Fragment
etFragmentActivity
(la classe de base deAppCompatActivity
) implémentent désormais l'interfaceLifecycleOwner
à partir des composants d'architecture.
Version de la révision 26.0.2
(août 2017)
Correction de bugs
- Les icônes de menu sont aplaties dans la bibliothèque Support 26.0.0
GuidedAction.multilineDescription
ne fonctionne pas correctement avec Leanback.
Version de la révision 26.0.1
(août 2017)
Correction de bugs
- Plantages de FontCompat 26.0.0 sur les appareils O-MR1
- La bibliothèque Support Design 26.0.0 ne doit pas inclure la prise en charge de multidex (problème 63999442).
- AppBarLayout dispose désormais de 300 pixels de marge intérieure gauche depuis la version 26.0.0.
- La navigation dans PlaybackTransportControl ne fonctionne pas
- Fragment.onCreateView est appelé quelque temps avant la fin d'onCreate.
- android.os.BadParcelableException: ClassNotFoundException lors du démarshalling: android.support.v4.media.MediaMetadataCompat
Version de la révision 26.0.0
(juillet 2017)
Important:Les bibliothèques Support sont désormais disponibles via le dépôt Maven de Google. Vous n'avez pas besoin de télécharger le dépôt d'assistance à partir de SDK Manager. Pour en savoir plus, consultez Configuration de la bibliothèque Support.
Changements significatifs
- La version minimale du SDK est passée à 14. Par conséquent, de nombreuses API qui n'existaient qu'à des fins de compatibilité avec des niveaux d'API antérieurs à la version 14 sont désormais obsolètes. Les clients de ces API doivent migrer vers leurs équivalents de framework, comme indiqué sur la page de référence de chaque API obsolète.
- La bibliothèque d'UI Wear contient des classes qui vous aident à implémenter des motifs et des mises en page compatibles avec les appareils Wear. Pour en savoir plus, consultez Utiliser la bibliothèque d'UI Wear.
- Le module Percent Support est désormais obsolète. Les clients de ce module doivent migrer vers le nouveau widget
ConstraintLayout
, fourni en tant qu'artefact distinct dans SDK Manager. android.support.v7.app.NotificationCompat
et les classes qu'il contient sont désormais obsolètes et seront supprimés dans une prochaine version :- Utilisez
NotificationCompat.Builder
au lieu dev7.app.NotificationCompat.Builder
. Les fonctionnalités qui dépendaient auparavant de la version 7 d'AppCompat Builder sont désormais intégrées à la version 4 de Compat Builder. -
DecoratedCustomViewStyle
a été déplacé vers le packageandroid.support.v4.app
. -
MediaStyle
etDecoratedMediaCustomViewStyle
font désormais partie de la bibliothèque media-compat et sont disponibles dans le package android.support.v4.media.app.
- Utilisez
Nouvelles API
- Nouvel indicateur booléen
fastScrollEnabled
pourRecyclerView
. Si cette option est activée,fastScrollHorizontalThumbDrawable
,fastScrollHorizontalTrackDrawable
,fastScrollVerticalThumbDrawable
etfastScrollVerticalTrackDrawable
doivent être définis.
Différences d'API
Correction de bugs
- Boucle infinie dans RecyclerView.toString()
- ResourceNotFoundException exécute un projet Kotlin sur un AVD d'API 16 après la mise à niveau vers Canary 6
- java.lang.AssertionError dans la vue Conception avec la bibliothèque Support 26.0.0-beta2
- Aperçu de la mise en page Android Studio non fonctionnel pour les widgets de la bibliothèque Support
- Preference.setSingleLineTitle() est ignorée si l'objet Preference n'a pas été créé avec des attributs
- Les annotations "Depuis" de DAC sont incorrectes pour les révisions 25.3.0 / 25.4.0 de la bibliothèque Support
- ResourcesCompat.getFont() génère une exception
- Le titre de la barre d'outils n'est pas en gras
- Le dimensionnement automatique avec maxLines produit des résultats inattendus
- NullPointerException dans TextView.checkForRelayout()
- AppCompatTextViewAutoSizeHelper.setRawTextSize() appelle requestLayout() pendant la mise en page
- Plantages d'EmojiAppCompatTextView
- La taille automatique de TextView ne s'ajuste pas automatiquement lorsque du texte est modifié
- Corruption d'écran dans Instacart
- UnsupportedOperationException dans MenuItemCompat
- NotificationCompat n'extrait pas complètement les actions sur l'API 24 ou version ultérieure
- Problèmes d'ancrage de CoordinatorLayout lors des mises à jour de mise en page