Cómo integrar apps sin agrupar

Las apps que incluyen el selector, el contenido multimedia, la biblioteca de la IU de Car y los SMS se consideran apps sin paquetes (es decir, no están empaquetadas en la plataforma de Android). Estas apps incluyen la lógica para recibir datos de la app complementaria del teléfono y la UX en el automóvil, incluida la configuración para la asociación y la inscripción de funciones. Los APK compilados a partir de código no empaquetado funcionan con varias versiones de la plataforma.

Consulta el código

Para revisar el código sin agrupar, ejecuta lo siguiente:

repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
repo sync -cq -j4

Para obtener más información sobre cómo trabajar con el código fuente de AOSP, consulta Cómo inicializar el cliente de Repo.

Cómo compilar el código

Puedes compilar el código con Android Studio o desde la línea de comandos.

Android Studio

Para compilar el código en Android Studio, haz lo siguiente:

  1. En Android Studio, importa el siguiente archivo de compilación:

    packages/apps/Car/libs/aaos-apps-gradle-project/build.gradle
    
  2. Asegúrate de que el JDK de Gradle esté configurado en la versión 11 o una posterior:

    Versión 11

    Figura 1: Establece Gradle JDK en la versión 11 en Android Studio.

Línea de comandos

Para compilar el código desde la línea de comandos, haz lo siguiente:

  1. Establece la ubicación del SDK de Android con uno de los siguientes métodos:

    • Crea packages/apps/Car/libs/aaos-apps-gradle-project/local.properties y, luego, establece la propiedad sdk.dir que contiene. Android Studio puede hacerlo automáticamente cuando se abre un proyecto. Por ejemplo, usa sdk.dir=/Users/MY-USERNAME/Library/Android/sdk.

      o

    • Configura la variable de entorno ANDROID_SDK_ROOT con la ruta de acceso al SDK de Android.

  2. Abre un símbolo del sistema o una ventana de shell.

  3. Ve a packages/apps/Car/libs/aaos-apps-gradle-project.

  4. Ejecuta el siguiente comando:

    ./gradlew assemble

Niveles de API mínimos requeridos

Cada app sin empaquetar funciona en plataformas de Android con una versión igual o superior a su minSdkVersion. En la siguiente tabla, se muestra la versión mínima de API que admite cada app:

App Nivel mínimo de API
Calendario 29
Biblioteca de la IU del vehículo 29
CompanionDevice 29
Dialer 31
Contenido multimedia 30
Messenger (SMS) 30
Host de AOSP 29

Cómo integrar una compilación previa en una imagen del sistema

Si la app admite la versión de la plataforma de Android (consulta la tabla en la sección anterior), puedes agregar el APK a la imagen del sistema. Sin embargo, los pasos de integración difieren entre las versiones de la plataforma de Android.

Android 13 y versiones posteriores

Android 13 y versiones posteriores no incluyen código fuente para apps sin agrupar, pero puedes incluir un APK compilado previamente en la compilación de la plataforma para casos de uso como pruebas de cumplimiento de CDD o aprovisionamiento de apps con privilegios. Para especificar el APK, usa la regla android_app_import de Soong, como se muestra en el siguiente ejemplo:

android_app_import {
    name: "CarMediaApp",
    apk: "CarMediaApp.apk",
    privileged: true,
    certificate: "platform", // Media must be signed by the platform
    required: ["allowed_privapp_com.android.car.media"],
}

Android 12 y versiones anteriores

Android 12 y versiones anteriores incluyen código fuente para apps sin empaquetar, pero puedes especificar un APK compilado previamente para incluirlo. Como la configuración predeterminada de Soong es dar prioridad al código fuente sobre una compilación previa, es necesario establecer la marca prefer en true dentro de la regla android_app_import, como se muestra en el siguiente ejemplo:

android_app_import {
    name: "CarDialerApp",
    apk: "CarDialerApp.apk",
    privileged: true,
    presigned: true, // Dialer can have its own signature
    required: ["allowed_privapp_com.android.car.dialer"],
    overrides: ["Dialer"],
    prefer: true, // The prebuilt replaces a source target with the same name
    }

Detalles de la app sin agrupar

App/Distribución
Firma del sistema exento de privilegios
Sin paquetes con privilegios
no firmados por el sistema
Los paquetes sin agrupar
no es necesario que estén en la partición del sistema.
App: Calendario X
App: CompanionDeviceSupport X
App: Dialer X
App: Host de AOSP X
App: Media X
App: Mensajero (SMS) X
Actualiza la distribución OTA OTA o Google Play OTA o Google Play