Cómo integrar apps sin agrupar

Las apps que incluyen el Marcador, Multimedia, la biblioteca de Car UI y SMS se consideran apps desglosadas (es decir, se desglosan de la plataforma de Android). Estas apps incluyen la lógica para recibir datos de la app complementaria para teléfonos y la UX del lado del automóvil, incluidos los parámetros de configuración para la asociación y el registro de funciones. Los APKs compilados a partir de código sin agrupar funcionan con varias versiones de la plataforma.

Consulta el código

Para consultar el código no agrupado, ejecuta el siguiente comando:

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 Inicializa 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 posterior:

    Versión 11

    Figura 1: Establece el JDK de Gradle 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

    • Establece 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 no agrupada funciona en plataformas de Android con una versión igual o superior a su minSdkVersion. En la siguiente tabla, se indica la versión mínima de la 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 de 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 las apps no agrupadas, pero puedes incluir un APK compilado previamente en la compilación de la plataforma para casos de uso como las pruebas de cumplimiento de la CDD o el 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 el código fuente de las apps no agrupadas, pero puedes especificar un APK compilado previamente para incluirlo. Dado que el valor predeterminado de Soong es dar prioridad al código fuente sobre un elemento precompilado, 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 no agrupada

App/Distribution
Sistema
privilegiado no incluido en el paquete y firmado
Privilegiado, no incluido en el paquete
no del sistema firmado
Las apps no agrupadas
no necesitan estar en la partición del sistema
App: Calendario X
App: CompanionDeviceSupport X
App: Dialer X
App - AOSP Host X
App: Media X
App: Mensajes (SMS) X
Actualizar la distribución OTA OTA o Google Play OTA o Google Play