Android para vehículos: Guía de migración de Jetpack
La biblioteca de apps de Android para vehículos ahora forma parte de Jetpack.
La migración a Jetpack presenta una serie de beneficios, entre los que se incluyen brindarte una mayor visibilidad sobre el desarrollo de funciones, y también proporciona coherencia de API con otras bibliotecas de Jetpack.
Como parte de este cambio a Jetpack, realizamos varios cambios en la API a los efectos de mantener la coherencia con el resto del ecosistema de Android. Para ayudarte a migrar cualquier app que ya hayas compilado con la versión de código cerrado de la biblioteca de la app para vehículos, elaboramos esta guía, en la que se describen los cambios en detalle y se proporcionan instrucciones para migrar tu app a la nueva biblioteca.
Cambios en AndroidManifest
En el archivo AndroidManifest.xml de tu app, reemplaza las siguientes instancias de la biblioteca de código cerrado con sus equivalentes de la biblioteca de Jetpack, según corresponda:
No disponible. Novedades de la biblioteca de Jetpack
androidx.car.app.MAP_TEMPLATES
CarAppService
Código cerrado
Equivalente de la biblioteca de Jetpack
com.google.android.car.action.CAR_APP
androidx.car.app.CarAppService
Temas
Código cerrado
Equivalente de la biblioteca de Jetpack
com.google.android.libraries.car.app.theme
androidx.car.app.theme
Cambios en la API
Cambio en el espacio de nombres
Se cambió el espacio de nombres de la biblioteca de com.google.android.libraries.car.app a androidx.car.app.
Reemplaza todas las importaciones de tu biblioteca de com.google.android.libraries.car.app.* a androidx.car.app.*.
CarAppService y Session
Separamos el ciclo de vida de la conexión del host a tu app de CarAppService a una nueva clase Session. La lógica de creación de CarContext y Screen se movió a Session.
Uno de los puntos de entrada principales de tu app, CarAppService#onCreateScreen(Intent), se reemplazó por CarAppService.onCreateSession.
En esencia, varios métodos que antes estaban en CarAppService ahora se encuentran en la clase Session. Si deseas ver más detalles, consulta las siguientes tablas para obtener un resumen y la documentación a nivel de clase de Session.
En la forma más simple, tu app puede mostrar una instancia de Session de esta manera si no tiene ninguna lógica que se encargue del ciclo de vida de la conexión:
@Override
@NonNull
public Session onCreateSession() {
return new Session() {
@Override
@NonNull
public Screen onCreateScreen(@Nullable Intent intent) {
return new HelloWorldScreen(getCarContext());
}
};
}
Constructores de compilación
Estamos dejando el modelo en el que proporcionábamos compiladores estáticos para crear varios objetos de datos. En cambio, ahora exponemos los constructores de compilación como métodos públicos directamente. Por ejemplo:
Pane.Builder paneBuilder = Pane.builder();
Se convirtió en:
Pane.Builder paneBuilder = new Pane.Builder();
Reutilización de compiladores
Estamos dejando el modelo en el que se admitía de forma explícita la reutilización de compiladores. Los métodos de compilación que permiten que tu app borre algunos datos configurados de forma previa ya no están disponibles. Por ejemplo, se quitaron los siguientes métodos (además de otros métodos claros*):
ActionStrip.Builder.clearActions()
GridItem y GridTemplate nuevos
La biblioteca de Jetpack viene con una GridTemplate nueva que presenta una lista de GridItem en formato de cuadrícula. Si quieres obtener detalles y formas de uso, consulta la documentación de GridTemplate.
Validación del host
Agregamos mecanismos para permitir que tu app valide una conexión de host de una fuente confiable (por ejemplo, Android Auto y el SO Android Automotive).
A continuación, se incluye una implementación de muestra del método CarAppService.createHostValidator abstracto:
@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();
}
}
En las siguientes tablas, se destaca el resto de los cambios que realizamos en toda la biblioteca (por ejemplo, cambiar el nombre de las API existentes o agregar API adicionales). Ten en cuenta que esta lista no es exhaustiva, pero proporciona perspectivas sobre las categorías de los cambios que se realizaron a la biblioteca.
AppManager
Código cerrado
Equivalente de la biblioteca de Jetpack
setSurfaceListener(SurfaceListener)
setSurfaceCallback(SurfaceCallback)
CarContext
Código cerrado
Equivalente de la biblioteca de Jetpack
No disponible. Novedades de la biblioteca de Jetpack
No disponible. Novedades de la biblioteca de Jetpack
clearNavigationManagerCallback()
Maneuver
Código cerrado
Equivalente de la biblioteca de Jetpack
No disponible. Novedades de la biblioteca de Jetpack
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
Quitado
static int TYPE_ROUNDABOUT_ENTER static int TYPE_ROUNDABOUT_EXIT
PlaceListNavigationTemplate.Builder
Código cerrado
Equivalente de la biblioteca de Jetpack
setIsLoading(boolean)
setLoading(boolean)
RoutePreviewNavigationTemplate.Builder
Código cerrado
Equivalente de la biblioteca de Jetpack
setIsLoading(boolean)
setLoading(boolean)
RoutingInfo.Builder
Código cerrado
Equivalente de la biblioteca de Jetpack
setIsLoading(boolean)
setLoading(boolean)
TravelEstimate
Código cerrado
Equivalente de la biblioteca de Jetpack
No disponible. Novedades de la biblioteca de Jetpack
No disponible. Novedades de la biblioteca de Jetpack
setRemainingTimeSeconds(long)
No disponible. Novedades de la biblioteca de Jetpack
setRemainingTime(Duration)
Trip.Builder
Código cerrado
Equivalente de la biblioteca de Jetpack
setIsLoading(boolean)
setLoading(boolean)
CarAppExtender
Código cerrado
Equivalente de la biblioteca de Jetpack
getLargeIconBitmap()
getLargeIcon()
getSmallIconResId()
getSmallIcon()
CarAppExtender.Builder
Código cerrado
Equivalente de la biblioteca de Jetpack
No disponible. Novedades de la biblioteca de Jetpack
setColor(CarColor)
Biblioteca de pruebas
La biblioteca de pruebas aún no está disponible en la primera versión beta. Parte de la funcionalidad que ofrece la biblioteca de pruebas para acceder a campos establecidos en modelos a través de sus clases de compilación ya está disponible mediante los métodos get de los modelos. El resto de la funcionalidad de pruebas estará disponible cuando la biblioteca de pruebas se lance como parte de Jetpack en un futuro cercano.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.