Revisioni recenti della libreria di supporto

Questa pagina fornisce dettagli sulle release più recenti del pacchetto Support Library. Per le release precedenti, consulta l' archivio delle revisioni della libreria di assistenza.

Revisione 28.0.0 Produzione

(21 settembre 2018)

Questa è la release stabile di Support Library 28.0.0 ed è adatta all'uso in produzione. Questa sarà l'ultima release della funzionalità nel pacchetto android.support e gli sviluppatori sono invitati a eseguire la migrazione ad AndroidX.

Nuove funzionalità

  • AnimatedStateListDrawableCompat fornisce transizioni animate tra gli stati di cui è possibile disegnare.
  • VectorDrawableCompat migliora il gradiente, i riempimenti e i tratti ColorStateList.

Revisione 28.0.0 RC 2

(27 agosto 2018)

Questa release candidata della libreria di supporto è considerata completa di funzionalità e la sua piattaforma API pubblica è stabile. Questa release verrà spedita come versione stabile finale, salvo eventuali problemi critici che potrebbero sorgere. Questa release deve essere sicura per l'uso in produzione. Segnala eventuali problemi al tracker dei problemi pubblico.

Problemi risolti

  • Proguard rimuove il costruttore dell'applicazione Visualizza modello (problema pubblico 112230489)
  • Corretto lo stato della costante "AnimatedStateListDrawableCompat"
  • Rimossa la dipendenza media2 da mediarouter 1.0.0
  • "Fragment.getViewLifecycleOwner()" non viene fermato quando premi il pulsante Home (problema pubblico 113070421) ([problema pubblico 113070421](https://issuetracker.google.com/issue/113070421))

Revisione 28.0.0 RC 1

(6 agosto 2018)

Questa release candidata della libreria di supporto è considerata completa di funzionalità e la sua piattaforma API pubblica è stabile. Questa release verrà spedita come versione stabile finale, salvo eventuali problemi critici che potrebbero sorgere. Questa release deve essere sicura per l'uso in produzione. Segnala eventuali problemi al tracker dei problemi pubblico.

Nota: alcune librerie, come media2, sono rimaste in fase alpha in quanto le loro superfici API non sono ancora finalizzate. Non è consigliabile utilizzare librerie alpha in produzione. Le librerie dovrebbero evitare rigorosamente di dipendere dalle librerie alpha in produzione, poiché le relative piattaforme API potrebbero cambiare in modi non compatibili con l'origine e con i programmi binari.

Problemi risolti

  • Il menu Navigazione in basso non è inizializzato correttamente nella libreria di supporto per la progettazione
  • PosizionealDataSource non gestisce correttamente gli inserti di elementi anteposti nel database
  • I dispositivi di scorrimento sono di scarsa qualità e non reattivi
  • "SlicesProviderCompat.getFixedSpecs()" non aggiunge ID utente agli URI
  • RoutePlayer2: la riproduzione remota non torna alla riproduzione locale
  • L'analisi delle sezioni memorizzate nella cache si arresta in modo anomalo in seguito alle azioni
  • Arresto anomalo dell'app Ricerca Google durante il rendering della sezione statica
  • ConcurrentModificationException nella libreria di selezione RecyclerView quando il set di dati viene modificato con la rimozione della selezione
  • PreferenceThemeOverlay è stato aggiornato al tema material più recente. Se non viene fornito alcun tema personalizzato, PreferenceThemeOverlay viene utilizzato come tema predefinito.
  • I temi PreferenceThemeOverlay.v14 e PreferenceThemeOverlay.v14.Material sono stati ritirati a favore di PreferenceThemeOverlay.
  • La visibilità di PreferenceGroup è ora legata ai rispettivi elementi secondari. Se nascondi un gruppo padre, anche i relativi gruppi secondari non verranno visualizzati nella gerarchia. Utilizza Preference.isShow() per capire se una preferenza viene effettivamente visualizzata dall'utente nella gerarchia.
  • Preference.onSetInitialValue(boolean, Object) è stato deprecato e sostituito con onSetInitialValue(Object). Ora PreferenceDataStore ripristina correttamente anche i valori predefiniti.

Revisione 28.0.0 Beta 1

(Luglio 2018)

Questa versione beta della Support Library è considerata completa e la sua piattaforma API pubblica è stabile, salvo eventuali problemi critici che potrebbero sorgere. Anche se questa release è sicura per l'uso in produzione, potrebbe comunque contenere bug. Segnala eventuali problemi al tracker dei problemi pubblico.

Problemi risolti

  • BehaviorSelectionHelper durante il consumo di eventi su elementi non selezionabili
  • Le sezioni del dispositivo di scorrimento possono avere un'icona a forma di pollice duplicata quando il valore del dispositivo di scorrimento viene aggiornato
  • IconCompat ha rotto le icone TYPE_URI
  • Arresto anomalo con le preferenze utilizzando Seekbar
  • Arresto anomalo in Slice.toString()
  • OffsettingListUpdateCallback.onMoved() chiama mCallback.onRemoved() anziché mCallback.onMoved() (Problema 110711937)

Revisione 27.1.1

(Aprile 2018)

Problemi risolti

  • AsyncListDiffer non chiama getChangePayload (problema AOSP 73961809)
  • OnCleared del frammento ViewModel non chiamato (problema AOSP 74139250)
  • RecyclerView.setRecycledViewPool() aumenta attachCount anche quando l'adattatore è null
  • RecyclerVisualizza NPE se UniformScorrier.onStop richiama stop() o startUniformSlideer()
  • La transazione di sostituzione dei frammenti causa lo sfarfallio del frammento precedente dopo la visualizzazione del nuovo frammento (problema AOSP 74051124)
  • Modifica che provoca l'interruzione del callback del caricatore nella versione 27.1.0 (problema AOSP 74135998)
  • Il layout RTL non funziona quando la visualizzazione griglia verticale imposta una colonna >1
  • onLoadFinished è stato chiamato più volte in ViewPager con FragmentPagerAdapter
  • AsyncListDiffer deve inviare gli aggiornamenti dopo aver impostato l'elenco corrente (problema AOSP 74003309)
  • ShareActionProvider genera ClassCastException nella versione 27.1.0
  • Modifica del ciclo di vita dei frammenti con ViewPager (problema AOSP 73976255)

Revisione 28.0.0 Alpha 1

(marzo 2018)

Nota: 28.0.0-alpha1 è una versione pre-release per supportare l'anteprima per gli sviluppatori Android P. La piattaforma API è soggetta a modifiche e non include necessariamente funzionalità o correzioni di bug dalle ultime versioni stabili di Support Library.

Modifiche importanti

  • Come indicato in precedenza nell' annuncio di Android KTX, continueremo ad adottare il prefisso del pacchetto androidx in tutte le nostre librerie. Una selezione di nuove librerie, tra cui heifwriter e recyclerview-selection, sta per iniziare in questo nuovo pacchetto. Ci auguriamo che la divisione tra android.* e androidx.* renda più ovvio quali API sono in bundle con la piattaforma e quali sono librerie statiche per sviluppatori di app che funzionano su diverse versioni di Android.
  • Abbiamo suddiviso le parti di support-core-ui, support-core-utils e support-compat in librerie più piccole. Questa modifica ci aiuterà a snellire le dipendenze della libreria di assistenza in futuro. Ora abbiamo le seguenti nuove librerie:
    • asynclayoutinflater (da support-core-ui)
    • raccolte (da support-compat)
    • layout del coordinatore (dal design)
    • adattatore cursore (da support-core-ui)
    • customview (da support-core-ui)
    • documentfile (da support-core-utils)
    • layout a scomparsa (da support-core-ui)
    • interpolatore (da support-core-ui)
    • (da support-fragments e core-utils)
    • localbroadcastmanager (da support-core-utils)
    • stampa (da support-core-utils)
    • layout a scorrimento (da support-core-ui)
    • layout di aggiornamento dello scorrimento (da support-core-ui)
    • viewpager (da support-core-ui)

Nuove API

  • recyclerview-selection fornisce assistenza per la selezione degli articoli per RecyclerView. Il pacchetto fornisce:
    • Supporto per la creazione, la modifica, l'ispezione e il monitoraggio delle modifiche a un insieme di elementi selezionati in un elenco RecyclerView.
    • Supporto di azioni multiselezione intuitive:
      • La selezione tramite tocco consente agli utenti di selezionare intervalli di elementi tramite un gesto intuitivo di pressione e trascinamento.
      • La selezione della banda tramite mouse consente agli utenti di selezionare un blocco di elementi in un elenco RecyclerView utilizzando le tradizionali azioni lazo/banda del puntatore del mouse.
    • Supporto per dispositivi touch, inclusi fattori di forma per telefoni e laptop dotati di touchscreen, nonché dispositivi incentrati sul puntatore.
  • HEIF Writer fornisce il supporto per la scrittura di fermi immagine in formato HEIF.
  • Libreria di progetti
    • Abbiamo introdotto un nuovo tema dell'applicazione, Theme.MaterialComponents, con nuovi attributi e stili aggiornati per i componenti.
    • Abbiamo aggiunto i seguenti componenti:
      • Barra dell'app in basso
      • Chip
      • Gruppo di chip
      • Pulsante Materiale
      • Visualizzazione scheda Materiale
  • Slices fornisce un framework che consente alle app di incorporare contenuti basati su modelli di altre app.
    • Sezioni-builder contiene metodi per creare contenuti in un formato modello.
    • Le sezioni-view contengono metodi per presentare i contenuti.
  • Azioni browser fornisce agli sviluppatori di app un protocollo per avviare un menu contestuale coerente (ma personalizzabile) per gli URL. Questa funzionalità dipende dalla presenza di un'app browser (ad esempio Chrome, in cui la funzionalità è ancora in fase di sviluppo) che implementa il supporto per le azioni del browser.
  • ContextCompat.getSystemService() e getSystemServiceName() consentono ricerche dei servizi di sistema per tipo a tutti i livelli di API.

Correzioni di bug

  • OnCleared del frammento ViewModel non chiamato (problema AOSP 74139250)
  • onLoadFinished() è stato chiamato più volte in ViewPager con FragmentPagerAdapter (problema AOSP 74182171)
  • Lo strumento smoothscrollToPosition() di LinearLayoutManager di RecyclerView mostra i movimenti errati (avanti e indietro) in determinate circostanze (problema di AOSP 71567765)

Versione Revisione 27.1.0

(Febbraio 2018)

Modifiche importanti

  • L'implementazione sottostante dei Caricatori è stata riscritta in modo da utilizzare il Ciclo di vita. Anche se l'API rimane invariata, sono state apportate diverse modifiche al comportamento:
    • Ora initLoader(), restartLoader() e destroyLoader() possono essere chiamati solo nel thread principale.
    • onStartLoading() e onStopLoading() di un caricatore vengono ora chiamati quando l'attività FragmentActivity/Fragment contenitore viene avviata e arrestata rispettivamente.
    • La chiamata di onLoadFinished() avverrà solo tra le ore onStart() e le ore onStop. Di conseguenza, le transazioni relative ai frammenti ora possono essere eseguite in sicurezza in onLoadFinished().
    • I metodi FragmentController relativi ai Caricatori sono ora deprecati.
  • Il valore getDialog() di DialogFragment sarà ora non null fino al giorno onDestroyView(), anziché essere nullo in dismiss(). Ora puoi determinare se la finestra di dialogo è stata chiusa manualmente in onStop() controllando se getDialog().isShowing() restituisce false.

Nuove API

  • ListAdapter per RecyclerView (insieme a AsyncListDiffer) semplifica il calcolo delle differenze dell'elenco su un thread in background. In questo modo, il RecyclerView può animare automaticamente le modifiche ai contenuti, con un lavoro minimo sul thread di UI. Usano DiffUtil in background.
  • SortedList.ReplaceAll consente di aggiornare tutti i dati in un SortedList, che esegue tutte le animazioni appropriate per inserti, rimozioni, modifiche e spostamenti (le spostamenti vengono trattate come rimozioni e inserti).
  • FragmentActivity e Fragment ora implementano ViewModelStoreOwner e possono essere usati con i costruttori ViewModelProvider come alternativa all'utilizzo di ViewModelProviders.of()
  • I frammenti ora hanno i metodi requireContext(), requireActivity(), requireHost() e requireFragmentManager(), che restituiscono un oggetto NonNull degli equivalenti get metodi o generano un IllegalStateException.
  • requireViewById(), è stata aggiunta una versione compatibile @NonNull di findViewById() a WindowCompat, ActivityCompat e ViewCompat, che genera un IllegalArgumentException quando non è possibile trovare il target.
  • I metodi LoaderCallbacks ora dispongono delle annotazioni @Nullable e @NonNull appropriate.
  • FileProvider ora supporta getExternalMediaDirs() su dispositivi con API 21 e versioni successive tramite il nuovo elemento <external-media-path>.

Correzioni di bug

  • Il frammento che inizializza il componente Caricatore in onCreate ha interrotto il ciclo di vita in ViewPager
  • LoaderManager restituisce IllegalStateException in onLoadFinished
  • LoaderViewModel non cancella i propri Loader in onCleared
  • File della classe per android.arch.lifecycle.ViewModelStoreOwner non trovato
  • La funzione DialogFragment onDeploy non viene chiamata immediatamente dopo Cap. Ignora()
  • Le emoji con la bandiera del paese non funzionano sui dispositivi con tasti di rilascio quando vengono usati caratteri scaricabili
  • La libreria delle preferenze utilizza attributi che non funzioneranno sulle vecchie versioni di Android
  • I tipi di artefatti testlib di MediaCompat sono documentati in modo errato (problema AOSP 71559905)
  • Arresto anomalo di Google Sans in TypefaceCompatUtil
  • Esponi il costruttore ArraySet che accetta la raccolta.
  • updateApi rimuove i file .ignore che devono essere conservati
  • MainFragments ridondanti creati in ExploreFragment
  • Rimuovi l'uso del riflesso da CarRecyclerView
  • java.lang.IllegalStateException in FragmentManagerImpl.checkStateLoss
  • È stata trovata un'eccezione java.lang.SecurityException durante l'utilizzo di android.support.v4.content.PermissionChecker.checkSelfPermission
  • RecyclerView IndexOutOfBoundsException perché State.mPreviousLayoutItemCount non è stato cancellato in setAdapter (problema AOSP 37657125)
  • Il frammento che inizializza il componente Caricatore in onCreate ha interrotto il ciclo di vita all'interno di ViewPager (problema AOSP 34831613)
  • Arresti anomali di FragmentManagerImpl.execSingleAction

Versione Revisione 27.0.2

(Novembre 2017)

Correzioni di bug

  • EmojiEditTextHelper lancia NullPointerException.
  • IllegalStateException: il frammento non è stato ancora allegato.
  • Impossibile chiudere la finestra popup dell'icona "Trasmetti" toccando un punto qualsiasi dello schermo.
  • MediaMetadataCompat lancia BadParcelableException.

Versione Revisione 27.0.1

(Novembre 2017)

Correzioni di bug

  • LifecycleRegistry è nello stato sbagliato dopo la chiamata di startActivityForResult(). (Numero 65665621)
  • Il colore dei pulsanti disattivati è troppo chiaro nei livelli API meno recenti.
  • Dopo che l'utente scorre, non può fare clic su un elemento in una RecyclerView. (Problema AOSP 66996774)
  • Se fai clic su altre opzioni in TalkBack, il sistema non annuncia il nuovo popup né aggiunge lo stato attivo alle nuove opzioni.

Versione Revisione 27.0.0

(Ottobre 2017)

Differenze API

Modifiche alle API

  • Le annotazioni di nullità sono state aggiunte a una serie di API, tra cui le seguenti: Ciò può causare errori di compilazione di Kotlin quando i tipi restituiti con valori nulli non vengono gestiti correttamente.
  • Fragment può utilizzare le versioni della libreria di supporto di Transition per le transizioni di frammenti, incluse le transizioni di elementi condivisi.
  • La libreria di paging dei contenuti (android.support.content.ContentPager) fornisce supporto per il paging dei contenuti esposti tramite un ContentProvider. L'uso di questa libreria consente a un client di evitare costosi "scambiamenti di finestre di scorrimento" tra processi nel thread dell'interfaccia utente, fornendo una libreria di compatibilità per la funzionalità Android 8.0.
  • ViewCompat ora aggiunge wrapper per i metodi di compilazione automatica, tra cui getImportantForAutofill(), isImportantForAutofill(), setAutofillHints() e setImportantForAutofill().
  • Leanback riceve nuove funzionalità e ottimizza e perde alcune classi deprecate, ad esempio:
    • Ora Picker può utilizzare separatori diversi tra ogni colonna utilizzando il metodo setSeparators().
    • È stato aggiunto DiffCallback per consentire a ArrayObjectAdapter di sfruttare l'output fornito da DiffUtil.
    • Infrastruttura aggiunta per supportare i media player con controlli variabili, con l'aggiunta di controlli facoltativi per avanzamento veloce, ripetizione, riproduzione casuale, avanti, precedente e riavvolgimento.
    • Rimozione di MediaControllerGlue, PlaybackControl Glue, PlaybackControlSupportGlue e PlaybackOverlayFragment.
  • Per i test, l'utilità PollingCheck viene trasferita da AOSP CTS. Cerca che una condizione si verifichi all'interno di un periodo di timeout.
  • Infrastruttura aggiunta per supportare le autorizzazioni di runtime sulle app istantanee per Android 5.0, utilizzando PermissionCompatDelegate.
  • Le schede personalizzate attendibili ora sono supportate, insieme alla possibilità di definire una relazione tra un'applicazione e un URI di origine.
  • Il supporto della modalità Ambient di Android Wear è semplificato con l'utilizzo del frammento headless AmbientMode, che rende anche il supporto della modalità Ambient compatibile con l'utilizzo dei componenti dell'architettura.
  • Il team di Wear richiede il feedback degli sviluppatori in merito a questo cambiamento significativo. Per ulteriori informazioni, leggi le note di rilascio di Android Wear.
  • Alcune classi deprecate sono state rimosse con il passaggio dalle API precedenti alla V14, come android.support.v7.NotificationCompat (utilizza invece la v4 NotificationCompat), KeyEventCompat, ParallelExecutorCompat e SearchViewCompat.
  • Le costanti dei metadati del file manifest di Wear sottoposto a migrazione sono ora disponibili tramite android.support.wear.utils.MetadataConstants.
  • Il supporto della modalità Ambient è ora disponibile per tutte le attività, non solo per WearableActivity. Per maggiori informazioni, consulta il riferimento AmbientMode.
  • RoundedDrawable ora supporta l'inflazione XML.

Correzioni di bug

  • L'applicazione si arresta in modo anomalo con la libreria di supporto 27 e il carattere scaricabile
  • I caratteri scaricabili non funzionano per i nuovi progetti creati dopo l'aggiornamento dell'SDK
  • L'API SpeechRecognizer non funziona nell'ultimo upgrade
  • Arresto anomalo relativo ai frammenti durante il disegno dopo la rimozione della vista animata
  • la riproduzione di contenuti multimediali support-leanback-demos non funziona
  • Android Support Library sta aggiungendo <meta-data> al file manifest
  • FontResourcesParserCompat dovrebbe comprendere android: attrs
  • La colla Leanback non supporta il tasto di immissione Metti in pausa
  • Simbolo non risolto nell'IDE quando più pacchetti condividono lo stesso ID artefatto.
  • Eccezione puntatore null in CarExtender
  • Modalità di riproduzione casuale / ripetizione errata impostata su PlaybackState dopo la creazione di MediaController
  • I poster predefiniti del cluster della libreria sono in esecuzione sul cluster successivo durante la navigazione
  • I metadati della scheda dei consigli sono tagliati
  • LegalArgumentException in RecyclerView.attachViewToParent()
  • ClassNotFoundException durante l'annullamento del marshalling di SaveState (problema AOSP 37133281)
  • Lo stato attivo rimane bloccato in RecyclerView
  • Correggi l'errore ANR in LayoutManager Leanback

Versione Revisione 26.1.0

(Settembre 2017)

Questa è una release speciale per integrare la Support Library con Lifecycles di Architecture Componenti. Se non utilizzi la libreria Cicli di vita, non devi eseguire l'aggiornamento dalla versione 26.0.2. Per ulteriori informazioni, consulta le note di rilascio per i componenti dell'architettura.

Modifiche importanti

Versione 26.0.2

(Agosto 2017)

Correzioni di bug

  • Le icone di menu sono appiattite su Support Library 26.0.0
  • GuidedAction.multilineDescription non funziona correttamente con Leanback

Versione Revisione 26.0.1

(Agosto 2017)

Correzioni di bug

  • FontCompat 26.0.0 si arresta in modo anomalo su dispositivi O-MR1
  • La Design Support Library 26.0.0 non deve includere il supporto multidex (problema 63999442)
  • AppBarLayout ora ha 300 px di spaziatura interna sinistra dalla versione 26.0.0
  • La navigazione PlaybackTransportControl è interrotta
  • Fragment.onCreateView viene chiamato qualche volta prima della fine di onCreate
  • android.os.BadParcelableException: ClassNotFoundException when unmarshalling: android.support.v4.media.MediaMetadataCompat

Versione Revisione 26.0.0

(Luglio 2017)

Importante: le librerie di assistenza sono ora disponibili tramite il Repository Maven di Google. Non è necessario scaricare il repository di assistenza da SDK Manager. Per maggiori informazioni, consulta la sezione Configurazione della Libreria di assistenza.

Modifiche importanti

  • La versione minima dell'SDK è stata portata a 14. Di conseguenza, molte API che esistevano solo per la compatibilità con i livelli API precedenti ai 14 sono stati ritirati. I client di queste API devono eseguire la migrazione ai rispettivi framework equivalenti, come indicato nella pagina di riferimento di ogni API deprecata.
  • La libreria Wear UI contiene classi che consentono di implementare pattern e layout compatibili con i dispositivi Wear. Per ulteriori informazioni, visita la pagina relativa all' utilizzo della libreria di Wear UI.
  • Il modulo Assistenza Percentuale è stato ritirato. I client di questo modulo devono eseguire la migrazione al nuovo widget ConstraintLayout, che viene fornito come artefatto separato in SDK Manager.
  • android.support.v7.app.NotificationCompat e le relative classi che lo contengono sono stati deprecati e verranno rimossi in una release futura:

Nuove API

  • Nuovo flag booleano fastScrollEnabled per RecyclerView. Se questa opzione è abilitata, è necessario impostare fastScrollHorizontalThumbDrawable, fastScrollHorizontalTrackDrawable, fastScrollVerticalThumbDrawable e fastScrollVerticalTrackDrawable.

Differenze API

Correzioni di bug

  • Loop infinito in RecyclerView.toString()
  • ResourceNotFoundException che esegue il progetto Kotlin sull'API 16 AVD dopo l'upgrade a Canary 6
  • java.lang.AssertionError in visualizzazione struttura con libreria di supporto 26.0.0-beta2
  • Anteprima del layout di Android Studio interrotta per i widget Support Library
  • Preference.setSingleLineTitle() viene ignorato se la preferenza non è stata creata con gli attributi
  • Le annotazioni "Dal" del DAC sono errate per le revisioni 25.3.0 / 25.4.0 della Support Library
  • ResourcesCompat.getFont() genera un'eccezione
  • Titolo della barra degli strumenti non in grassetto
  • Il dimensionamento automatico con maxLines produce risultati imprevisti
  • NullPointerException in TextView.checkForRelayout()
  • AppCompatTextViewAutoSizeHelper.setRawTextSize() chiama requestLayout() durante il layout
  • Arresti anomali di EmojiAppCompatTextView
  • La funzionalità Ridimensiona automaticamente TextView non si regola automaticamente quando il testo viene modificato
  • Schermata danneggiata in Instacart
  • Eccezione OperationException in MenuItemCompat
  • NotificationCompat non estrae completamente le azioni sull'API 24 o versioni successive
  • Problemi di ancoraggio di CoordinatorLayout negli aggiornamenti del layout