A biblioteca Android for Cars App agora faz parte do Jetpack.
A migração para o Jetpack oferece muitos benefícios, incluindo maior
visibilidade do nosso desenvolvimento de recursos e a consistência da API com
outras bibliotecas do Jetpack.
Como parte dessa migração para o Jetpack, fizemos várias mudanças na API para
que ficasse consistente com o restante do ecossistema Android. Para ajudar a migrar qualquer
app que você já tenha criado com a versão de código-fonte fechado da biblioteca
Car App, compilamos este guia, que descreve as mudanças em detalhes e
fornece instruções para migrar seu app para a nova biblioteca.
Mudanças no AndroidManifest
No AndroidManifest.xml do seu app, substitua as seguintes instâncias
da biblioteca de código-fonte fechado pelos equivalentes da biblioteca do Jetpack, sempre que aplicável:
O namespace da biblioteca foi alterado de com.google.android.libraries.car.app para androidx.car.app.
Substitua todas as importações de biblioteca de com.google.android.libraries.car.app.* para androidx.car.app.*.
CarAppService e Session
Separamos o ciclo de vida da conexão do host com o app de
CarAppService para uma nova
classe Session. A lógica de criação de CarContext
e Screen foi
movida para Session.
Um dos pontos de entrada principais do seu app, CarAppService#onCreateScreen(Intent)
foi substituído por CarAppService.onCreateSession.
Em essência, vários métodos que estavam anteriormente em CarAppService agora
estão na classe Session. Consulte as tabelas a seguir para ver um resumo e
a documentação no nível da classe de Session
para mais detalhes.
Na forma mais simples, seu app pode retornar uma instância de Session como esta, caso seu
app não tenha nenhuma lógica que processe o ciclo de vida da conexão:
@Override
@NonNull
public Session onCreateSession() {
return new Session() {
@Override
@NonNull
public Screen onCreateScreen(@Nullable Intent intent) {
return new HelloWorldScreen(getCarContext());
}
};
}
Construtores de builder
Estamos abandonando o modelo em que fornecemos builders estáticos para a criação de
vários objetos de dados. Em vez disso, os construtores de builder são expostos diretamente
como métodos públicos. Exemplo:
Pane.Builder paneBuilder = Pane.builder();
se tornou:
Pane.Builder paneBuilder = new Pane.Builder();
Reutilização de builder
Estamos abandonando o modelo em que damos suporte explicitamente à reutilização
de builders. Métodos de builder que permitem que seu app limpe alguns dados previamente definidos
não estão mais disponíveis. Por exemplo, os métodos a seguir (e outros métodos de limpeza*)
foram removidos:
ActionStrip.Builder.clearActions()
Novo GridItem e GridTemplate
A biblioteca do Jetpack vem com um novo GridTemplate
que apresenta uma lista de GridItem
em um formato de grade. Para detalhes e uso, consulte a documentação de
GridTemplate.
Validação do host
Adicionamos mecanismos para permitir que seu app confirme se uma conexão de host
vem de uma fonte confiável (por exemplo, Android Auto e Android Automotive OS).
Um exemplo de implementação do método abstrato CarAppService.createHostValidator
é o seguinte:
@Override
public HostValidator createHostValidator() {
if ((getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) {
return HostValidator.ALLOW_ALL_HOSTS_VALIDATOR;
} else {
return new HostValidator.Builder(getApplicationContext())
.addAllowedHosts(androidx.car.app.R.array.hosts_allowlist_sample)
.build();
}
}
As tabelas a seguir destacam o restante das mudanças que fizemos em
toda a biblioteca (como renomear APIs atuais ou adicionar outras). Observe que
esta lista não é completa, mas fornece insights sobre as categorias de
mudanças feitas à biblioteca.
static int TYPE_ROUNDABOUT_ENTER_CW static int TYPE_ROUNDABOUT_EXIT_CW static int TYPE_ROUNDABOUT_ENTER_CCW static int TYPE_ROUNDABOUT_EXIT_CCW static int TYPE_FERRY_BOAT_LEFT static int TYPE_FERRY_BOAT_RIGHT static int TYPE_FERRY_TRAIN_LEFT static int TYPE_FERRY_TRAIN_RIGHT
Removido
static int TYPE_ROUNDABOUT_ENTER static int TYPE_ROUNDABOUT_EXIT
A biblioteca de testes ainda não está disponível na primeira versão Beta. Parte da
funcionalidade oferecida pela biblioteca de testes para acessar campos definidos em modelos
pelas classes de builder agora está disponível nos getters dos
modelos. O restante da funcionalidade de teste estará disponível quando a
biblioteca de testes for lançada como parte do Jetpack em breve.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.