Revisões recentes da Biblioteca de Suporte

Esta página traz detalhes sobre as versões mais recentes do pacote da Biblioteca de Suporte. Para versões anteriores, consulte o Arquivo de revisão da Biblioteca de Suporte.

Revisão 28.0.0 - produção

21 de setembro de 2018

Esta é a versão estável da Biblioteca de Suporte 28.0.0 e é adequada para uso em produção. Este será o último lançamento do recurso no android.support, e os desenvolvedores são incentivados a migrar para o AndroidX.

Novos recursos

  • AnimatedStateListDrawableCompat fornece transições animadas entre estados de drawable.
  • VectorDrawableCompat é compatível com preenchimentos e traçados gradientes e ColorStateList.

Revisão 28.0.0 RC 2

27 de agosto de 2018

Esta versão candidata da Biblioteca de Suporte é considerada completa, e a superfície da API pública é estável. Essa versão será enviada como estável final, exceto na existência de qualquer problema crítico. Ela é segura para uso em produção. Informe qualquer problema ao rastreador de problemas público.

Problemas corrigidos

  • O ProGuard removeu o construtor View Model Application (Problema público 112230489)
  • Correção do estado da constante "AnimatedStateListDrawableCompat".
  • Remoção da dependência media2 do mediarouter 1.0.0.
  • "Fragment.getViewLifecycleOwner()" não é interrompido ao pressionar o botão home (Problema público113070421) ([Problema público 113070421][https://issuetracker.google.com/issues/113070421])

Revisão 28.0.0 RC 1

6 de agosto de 2018

Esta versão candidata da Biblioteca de Suporte é considerada completa, e a superfície da API pública é estável. Essa versão será enviada como estável final, exceto na existência de qualquer problema crítico. Ela é segura para uso em produção. Informe qualquer problema ao rastreador de problemas público.

Observação: algumas bibliotecas, como media2, permaneceram no estágio Alfa porque as superfícies de API delas ainda não foram concluídas. Não recomendamos o uso de bibliotecas Alfa em produção. É preciso evitar de maneira estrita que as bibliotecas dependam de versões alfa em produção, uma vez que as superfícies de API delas podem ser alteradas de formas incompatíveis com a fonte e o binário.

Problemas corrigidos

  • O menu "BottomNavigationView" não é inicializado corretamente na Android Design Support Library.
  • PositionalDataSource não gerencia corretamente inserções de itens pré-pendentes no banco de dados.
  • Os controles deslizantes são instáveis e não respondem.
  • "SlicesProviderCompat.getPinnedSpecs()" não adiciona IDs do usuário a URIs.
  • RoutePlayer2: a reprodução remota não volta para a reprodução local.
  • A análise de slice em cache está causando falhas em ações.
  • Falha no app Pesquisa Google na renderização do Slice estático.
  • Ocorre uma ConcurrentModificationException na biblioteca de seleção RecyclerView quando o conjunto de dados muda com a remoção da seleção.
  • PreferenceThemeOverlay foi atualizado com o tema do Material mais recente. Se nenhum tema personalizado for informado, PreferenceThemeOverlay será usado como padrão.
  • Os temas PreferenceThemeOverlay.v14 e PreferenceThemeOverlay.v14.Material foram marcados como obsoletos em favor de PreferenceThemeOverlay.
  • Agora, a visibilidade de PreferenceGroup está vinculada aos filhos: a ocultação de um grupo pai também evita que os filhos sejam exibidos na hierarquia. Use Preference.isShown() para saber se uma preferência é realmente exibida para o usuário na hierarquia.
  • Preference.onSetInitialValue(boolean, Object) se tornou obsoleto e foi substituído por onSetInitialValue(Object). PreferenceDataStore agora também restaura corretamente os valores padrão.

Revisão 28.0.0 Beta 1

Julho de 2018

Esta versão Beta da Biblioteca de Suporte é considerada completa, e a superfície da API pública é estável, exceto na existência de um possível problema crítico. Embora essa versão seja segura para uso em produção, ela ainda pode apresentar bugs. Informe qualquer problema ao rastreador de problemas público.

Problemas corrigidos

  • GestureSelectionHelper engole eventos em itens não selecionáveis.
  • Os slices do controle deslizante podem ter um ícone de polegar duplicado quando o valor do controle está sendo atualizado.
  • IconCompat corrompeu ícones TYPE_URI.
  • Falha com preferências usando Seekbar.
  • Falha em Slice.toString().
  • OffsettingListUpdateCallback.onMoved() chama mCallback.onRemoved(), em vez de mCallback.onMoved() (Problema 110711937).

Revisão 27.1.1

Abril de 2018

Problemas corrigidos

  • AsyncListDiffer não chama getChangePayload (Problema AOSP 73961809).
  • O fragmento OnCleared do ViewModel não é chamado (Problema AOSP 74139250).
  • O RecyclerView.setRecycledViewPool() aumenta attachCount mesmo quando o adaptador é nulo.
  • O RecyclerView gera uma NPE se SmoothScroller.onStop chama stop() ou startSmoothScroller().
  • A transação de substituição de fragmento causa a oscilação do fragmento anterior depois que o novo é exibido (Problema AOSP 74051124).
  • Alteração interruptiva do callback do carregador na versão 27.1.0 (Problema AOSP 74135998).
  • O layout RTL não funciona quando visualização em grade vertical define a coluna como >1.
  • O onLoadFinished é chamado várias vezes no ViewPager com o FragmentPagerAdapter.
  • O AsyncListDiffer deve enviar atualizações depois de definir a lista atual (Problema AOSP 74003309).
  • O ShareActionProvider gera uma ClassCastException na versão 27.1.0.
  • Mudança do ciclo de vida do fragmento com o ViewPager (Problema AOSP 73976255).

Revisão 28.0.0 Alfa 1

Março de 2018

Observação: a 28.0.0-alpha1 é uma versão de pré-lançamento compatível com a visualização do Android P para desenvolvedores. A superfície da API está sujeita a mudanças e não inclui necessariamente recursos ou correções de bugs das versões estáveis mais recentes da Biblioteca de Suporte. Para saber mais sobre a visualização do Android P para desenvolvedores, consulte as notas da versão.

Mudanças importantes

  • Conforme observado anteriormente no anúncio do Android KTX, continuamos a adotar o prefixo do pacote androidx nas nossas bibliotecas. Uma seleção de novas bibliotecas, incluindo heifwriter e recyclerview-selection, está começando neste novo pacote. Esperamos que a divisão entre android.* e androidx.* deixe mais claro quais APIs são empacotadas com a plataforma e quais são bibliotecas estáticas para desenvolvedores de appsque funcionam em diferentes versões do Android.
  • Partes de support-core-ui, support-core-utils e support-compat foram divididas em bibliotecas menores. Essa mudança ajudará a determinar com mais clareza as dependências da Biblioteca de Suporte no futuro. Agora temos estas novas bibliotecas:
    • asynclayoutinflater (de support-core-ui)
    • collections (de support-compat)
    • coordinatorlayout (de design)
    • cursoradapter (de support-core-ui)
    • customview (de support-core-ui)
    • documentfile (de support-core-utils)
    • drawerlayout (de support-core-ui)
    • interpolator (de support-core-ui)
    • loader (de support-fragments e core-utils)
    • localbroadcastmanager (de support-core-utils)
    • print (de support-core-utils)
    • slidingpanelayout (de support-core-ui)
    • swiperefreshlayout (de support-core-ui)
    • viewpager (de support-core-ui)

Novas APIs

  • recyclerview-selection oferece suporte à seleção de itens para RecyclerView. O pacote fornece:
    • Compatibilidade para criar, modificar, inspecionar e monitorar mudanças em um conjunto de itens selecionados em uma lista do RecyclerView.
    • Compatibilidade para ações intuitivas de seleção múltipla:
      • A seleção por toque permite que os usuários selecionem intervalos de itens com um gesto intuitivo de tocar, manter pressionado e arrastar.
      • A seleção de banda com o mouse permite que os usuários selecionem um bloco de itens em uma lista do RecyclerView usando ações tradicionais de banda/laço do ponteiro do mouse.
    • Compatibilidade para dispositivos centrados em toque, incluindo smartphones e laptops com touchscreen, bem como dispositivos centrados em ponteiro.
  • A HEIF Writer oferece compatibilidade para gravação de imagens estáticas no formato HEIF.
  • Biblioteca Design
    • Apresentamos um novo tema de app, Theme.MaterialComponents, com novos atributos e estilos atualizados para componentes.
    • Adição dos seguintes componentes:
      • BottomAppBar
      • Chip
      • ChipGroup
      • MaterialButton
      • MaterialCardView
  • Os Slices oferecem um framework para que os apps incorporem conteúdo de modelo de outros apps.
  • slices-builders contém métodos para criar conteúdo em um formato modelo.
  • slices-view contém métodos para apresentar esse conteúdo.
  • As ações do navegador oferecem um protocolo para desenvolvedores de apps iniciarem um menu de contexto consistente (mas personalizável) para URLs. Esse recurso depende da presença de um app de navegador (como o Chrome, em que esse recurso ainda está em desenvolvimento) que implemente compatibilidade para ações do navegador.
  • ContextCompat.getSystemService() e getSystemServiceName() permitem pesquisas de serviço do sistema por tipo em todos os níveis de API.
  • Correções de bugs

    • O fragmento OnCleared do ViewModel não é chamado (Problema AOSP 74139250).
    • O onLoadFinished é chamado várias vezes no ViewPager com FragmentPagerAdapter (Problema AOSP 74182171).
    • O SmoothScrollToPosition() de LinearLayoutManager do RecyearView exibe movimento irregular (para frente e para trás) em algumas circunstâncias (Problema AOSP 71567765).

    Revisão da versão 27.1.0

    Fevereiro de 2018

    Mudanças importantes

    • A implementação subjacente de Carregadores foi reescrita para usar o Ciclo de vida. Embora a API seja a mesma, há diversas mudanças de comportamento:
      • initLoader(), restartLoader() e destroyLoader() agora só podem ser chamados na linha de execução principal.
      • Agora, onStartLoading() e onStopLoading() de um carregador são chamados quando o FragmentActivity/Fragment que o contém é iniciado e interrompido, respectivamente.
      • onLoadFinished() só será chamado entre onStart() e onStop. Como resultado, as transações de fragmento agora podem ser feitas com segurança em onLoadFinished().
      • Os métodos FragmentController relacionados aos carregadores agora estão obsoletos.
    • O getDialog() do DialogFragment não será nulo até onDestroyView(), em vez de se tornar nulo em dismiss(). Agora é possível determinar se a caixa de diálogo foi dispensada manualmente em onStop(), verificando se getDialog().isShowing() retorna falso.

    Novas APIs

    • ListAdapter para RecyclerView (junto com AsyncListDiffer) facilita o cálculo de diffs de lista em uma linha de execução de segundo plano. Isso pode ajudar o RecyclerView a animar mudanças de conteúdo automaticamente, com o mínimo de trabalho na linha de execução de IU. Eles usam DiffUtil internamente.
    • SortedList.ReplaceAll permite atualizar todos os dados em uma SortedList, que executa todas as animações apropriadas para inserções, remoções, mudanças e movimentos. Os movimentos são tratados como remoções e inserções.
    • FragmentActivity e Fragment agora implementam ViewModelStoreOwner e agora podem ser usados com os construtores ViewModelProvider como alternativa ao uso de ViewModelProviders.of()
    • Os fragmentos agora têm os métodos requireContext(), requireActivity(), requireHost() e requireFragmentManager(), que retornam um objeto NonNull dos métodos get equivalentes ou lançam um IllegalStateException.
    • requireViewById(), uma versão @NonNull compat de findViewById() foi adicionado a WindowCompat, ActivityCompat e ViewCompat, que criam IllegalArgumentException quando o destino não pode ser encontrado.
    • Os métodos de LoaderCallbacks agora têm as anotações @Nullable e @NonNull apropriadas.
    • FileProvider agora é compatível com getExternalMediaDirs() na API 21 e em dispositivos posteriores por meio do novo elemento <external-media-path>.

    Correções de bugs

    • O fragmento que inicializa o carregador em onCreate corrompeu o ciclo de vida dentro do ViewPager.
    • O LoaderManager gera IllegalStateException em onLoadFinished.
    • O LoaderViewModel não limpa os carregadores em onCleared.
    • Arquivo de classe para android.arch.lifecycle.ViewModelStoreOwner não encontrado
    • O DialogFragment onDismiss não é chamado imediatamente depois de dismiss().
    • Os emojis de bandeiras de países não funcionam em dispositivos com teclas de liberação ao usar fontes disponíveis para download.
    • A biblioteca de preferências usa atributos que não funcionam em versões antigas do Android.
    • Os tipos de artefatos de testlib do MediaCompat estão documentados incorretamente (Problema AOSP 71559905)
    • Falha do Google Sans no TypefaceCompatUtil
    • Exposição do construtor ArraySet que recebe a coleção.
    • A updateApi remove arquivos .ignore que deveriam ser preservados.
    • MainFragments redundantes eram criados em BrowseFragment.
    • Remoção do uso de reflexão da CarRecyclerView.
    • java.lang.IllegalStateException em FragmentManagerImpl.checkStateLoss
    • Recebemos (não documentado) java.lang.SecurityException ao usar android.support.v4.content.PermissionChecker.checkSelfPermission
    • IndexOutOfBoundsException do RecyclerView porque State.mPreviousLayoutItemCount não foi limpo em setAdapter (Problema AOSP 37657125).
    • O fragmento que inicializa o carregador em onCreate corrompeu o ciclo de vida no ViewPager (Problema AOSP 34831613).
    • Falha de FragmentManagerImpl.execSingleAction.

    Revisão da versão 27.0.2

    Novembro de 2017

    Correções de bugs

    • EmojiEditTextHelper gera NullPointerException.
    • IllegalStateExceptionIllegalStateException: o fragmento ainda não foi anexado.
    • Não é possível dispensar o pop-up do ícone "Transmitir" tocando em qualquer lugar da tela.
    • MediaMetadataCompat gera BadParcelableException.

    Revisão da versão 27.0.1

    Novembro de 2017

    Correções de bugs

    • O LifecycleRegistry está no estado errado depois que startActivityForResult() é chamado. (Problema 65665621, link em inglês)
    • A cor dos botões desativados está muito clara nos níveis mais antigos da API.
    • Depois que um usuário rola a página, não é possível clicar em um item em RecyclerView. (Problema AOSP 66996774).
    • No Talkback, clicar em mais opções não faz o sistema anunciar o novo pop-up ou adicionar foco às novas opções.

    Revisão da versão 27.0.0

    Outubro de 2017

    Diferenças de API

    Mudanças na API

    • Adição de anotações de nulidade a diversas APIs, incluindo: Se os tipos de retorno de nulidade não forem processados corretamente, isso poderá causar erros de compilação no Kotlin.
    • O Fragment pode usar versões da biblioteca de suporte do Transition para transições de fragmento, incluindo transições de elementos compartilhados.
    • A biblioteca de paginação de conteúdo (android.support.content.ContentPager) fornece suporte para paginação de conteúdo exposto por meio de um ContentProvider. Com essa biblioteca, o cliente evita "trocas de janelas com o cursor" dispendiosas entre processos na linha de execução de IU, disponibilizando uma biblioteca de compatibilidade para o recurso do Android 8.0.
    • ViewCompat agora adiciona wrappers para métodos de preenchimento automático, incluindo getImportantForAutofill(), isImportantForAutofill(), setAutofillHints() e setImportantForAutofill().
    • O Leanback usa novos recursos e refinamentos e perde algumas classes obsoletas, como:
      • Agora, Picker pode usar separadores diferentes entre cada coluna usando o método setSeparators().
      • DiffCallback foi adicionado para permitir que ArrayObjectAdapter aproveite a saída fornecida por DiffUtil.
      • Adição de infraestrutura para oferecer compatibilidade com players de mídia com controles variáveis, adicionando controles opcionais para avançar, repetir, seguir ordem aleatória, iniciar seguinte, iniciar anterior e retroceder.
      • Remoção de MediaControllerGlue, PlaybackControlGlue, PlaybackControlSupportGlue e PlaybackOverlayFragment.
    • Para testes, o utilitário PollingCheck é portado a partir do CTS do AOSP. Ele pesquisa se uma condição ocorre dentro de uma janela de tempo limite.
    • Adição de infraestrutura para oferecer compatibilidade às permissões de tempo de execução no Instant Apps para o Android 5.0, usando PermissionCompatDelegate.
    • Guias personalizadas confiáveis agora são compatíveis, assim como a capacidade de definir uma relação entre um app e um URI de origem.
    • A compatibilidade com o modo ambiente do Android Wear foi simplificada por meio do fragmento headless AmbientMode, que também torna o modo ambiente compatível com o uso de Componentes da arquitetura.
    • A equipe do Wear quer saber as opiniões dos desenvolvedores sobre essa mudança significativa. Para mais informações, consulte as Notas da versão do Android Wear.
    • Algumas classes obsoletas foram removidas à medida que removemos as antigas APIs anteriores à V14, como android.support.v7.NotificationCompat (use a v4 NotificationCompat), KeyEventCompat, ParallelExecutorCompat e SearchViewCompat.
    • Agora, as constantes de metadados do manifesto do Wear migrado estão disponíveis por meio de android.support.wear.utils.MetadataConstants.
    • A compatibilidade com o modo ambiente agora está disponível para todas as atividades, não apenas para WearableActivity. Para ver mais informações, consulte a referência de AmbientMode.
    • RoundedDrawable agora é compatível com a inflação de XML.

    Correções de bugs

    • O aplicativo falha com a Biblioteca de Suporte 27 e a fonte disponível para download.
    • As fontes disponíveis para download não funcionam para novos projetos criados depois da atualização do SDK.
    • A API SpeechRecognizer está corrompida no upgrade mais recente.
    • Falha associada a fragmentos durante o desenho, depois da remoção da visualização animada.
    • A abertura de mídia support-leanback-demos está corrompida.
    • A Biblioteca de Suporte do Android está adicionando <meta-data> ao manifesto.
    • O FontResourcesParserCompat deveria entender android: attrs.
    • O Leanback Glue não é compatível com a tecla de entrada de pausa.
    • Símbolo não resolvido no ambiente de desenvolvimento integrado quando vários pacotes compartilham o mesmo código de artefato.
    • Exceção de ponteiro nulo em CarExtender.
    • O modo de ordem aleatória/repetição incorreto definiu PlaybackState depois de criar MediaController.
    • Os pôsteres padrão de cluster da biblioteca estão sendo executados no cluster seguinte durante a navegação.
    • Os metadados do card de recomendação estão cortados.
    • IllegalArgumentException at RecyclerView.attachViewToParent()
    • ClassNotFoundException ao realizar unmarshalling de SavedState (Problema AOSP 37133281).
    • O foco trava no RecyclerView.
    • Corrigir ANR no LayoutManager do Leanback.

    Revisão da versão 26.1.0

    Setembro de 2017

    Esta é uma versão especial para integrar a Biblioteca de Suporte com Lifecycles a partir de Componentes da arquitetura. Se você não está usando a biblioteca Lifecycles, não é necessário atualizar a partir da 26.0.2. Para ver mais informações, consulte as notas da versão dos Componentes da arquitetura.

    Mudanças importantes

    Revisão da versão 26.0.2

    Agosto de 2017

    Correções de bugs

    • Os ícones de menu são achatados na Biblioteca de Suporte 26.0.0.
    • GuidedAction.multilineDescription não funciona corretamente com Leanback

    Revisão da versão 26.0.1

    Agosto de 2017

    Correções de bugs

    • O FontCompat 26.0.0 falha em dispositivos O-MR1.
    • A Biblioteca de Suporte ao Design (Design Support Library) 26.0.0 não deve incluir compatibilidade multidex (Problema 63999442).
    • O AppBarLayout agora tem 300 pixels de preenchimento à esquerda a partir da versão 26.0.0.
    • A navegação de PlaybackTransportControl está corrompida.
    • Fragment.onCreateView é chamado um pouco antes de onCreate terminar.
    • android.os.BadParcelableException: ClassNotFoundException realização de unmarshalling: android.support.v4.media.MediaMetadataCompat

    Revisão da versão 26.0.0

    Julho de 2017

    Importante: as Bibliotecas de Suporte agora estão disponíveis no repositório Maven do Google. Não é necessário fazer o download do repositório de suporte do SDK Manager. Para mais informações, consulte Configuração da Biblioteca de Suporte.

    Mudanças importantes

    • A versão mínima do SDK foi aumentada para 14. Consequentemente, o uso de muitas APIs que existiam apenas para compatibilidade com níveis de API anteriores ao 14 foi suspenso. Os clientes dessas APIs devem migrar para os equivalentes do framework relacionado, conforme indicado na página de referência de cada API obsoleta.
    • A Biblioteca de IU do Wear (Wear UI Library) tem classes que ajudam a implementar padrões e layouts compatíveis com dispositivos Wear. Para ver mais informações, consulte Usar a Biblioteca de IU do Wear.
    • O uso do módulo da Biblioteca de Suporte Percentual (Percent Support Library) foi suspenso. Os clientes desse módulo precisam migrar para o novo widget ConstraintLayout, que é fornecido como um artefato separado no SDK Manager.
    • android.support.v7.app.NotificationCompat e suas classes contidas foram suspensas e serão removidas em uma versão futura:

    Novas APIs

    • Nova sinalização booleana fastScrollEnabled para RecyclerView. Se ativado, fastScrollHorizontalThumbDrawable, fastScrollHorizontalTrackDrawable, fastScrollVerticalThumbDrawable e fastScrollVerticalTrackDrawable precisam ser definidos.

    Diferenças de API

    Correções de bugs

    • Laço infinito em RecyclerView.toString().
    • ResourceNotFoundException executa projetos Kotlin na API 16 do AVD depois do upgrade para o Canary 6.
    • java.lang.AssertionError na visualização de design com a Biblioteca de Suporte 26.0.0-beta2
    • Visualização de layout do Android Studio corrompida para widgets da Biblioteca de Suporte.
    • Preference.setSingleLineTitle() é ignorado se a preferência não é criada com atributos.
    • As anotações DAC "Since" estão erradas nas revisões 25.3.0 / 25.4.0 da Biblioteca de Suporte.
    • ResourcesCompat.getFont() gera uma exceção
    • O título da barra de ferramentas não está em negrito.
    • O dimensionamento automático com maxLines produz resultados inesperados.
    • NullPointerException em TextView.checkForRelayout().
    • AppCompatTextViewAutoSizeHelper.setRawTextSize() chama requestLayout() durante o layout.
    • EmojiAppCompatTextView apresenta falha.
    • O dimensionamento automático de TextView não é ajustado automaticamente quando o texto é alterado.
    • Corrupção da tela em Instacart.
    • UnsupportedOperationException em MenuItemCompat.
    • NotificationCompat não extrai totalmente as ações na API 24 ou posterior.
    • Problemas de ancoragem de CoordinatorLayout em atualizações de layout.