Integrar apps não agrupados

Os apps que incluem discador, mídia, biblioteca de interface do carro e SMS são considerados apps separados (ou seja, separados da plataforma Android). Esses apps incluem a lógica para receber dados do app complementar para smartphone e a UX no carro, incluindo configurações de associação e inscrição em recursos. Os APKs criados com código não agrupado funcionam com várias versões da plataforma.

Conferir o código

Para conferir o código não agrupado, execute o seguinte:

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

Para saber mais sobre como trabalhar com o código-fonte do AOSP, consulte Inicializar o cliente Repo.

Criar o código

É possível criar o código usando o Android Studio ou na linha de comando.

Android Studio

Para criar o código no Android Studio:

  1. No Android Studio, importe o seguinte arquivo de build:

    packages/apps/Car/libs/aaos-apps-gradle-project/build.gradle
    
  2. Verifique se o JDK do Gradle está definido como a versão 11 ou mais recente:

    Versão 11

    Figura 1. Defina o Gradle JDK como a versão 11 no Android Studio.

Linha de comando

Para criar o código na linha de comando:

  1. Defina a localização do SDK do Android usando um dos seguintes métodos:

    • Crie packages/apps/Car/libs/aaos-apps-gradle-project/local.properties e defina a propriedade sdk.dir que ele contém. O Android Studio pode fazer isso automaticamente ao abrir um projeto. Por exemplo, use sdk.dir=/Users/MY-USERNAME/Library/Android/sdk.

      ou

    • Defina a variável de ambiente ANDROID_SDK_ROOT com o caminho para o SDK do Android.

  2. Abra um prompt de comando ou uma janela de shell.

  3. Acesse packages/apps/Car/libs/aaos-apps-gradle-project.

  4. Execute este comando:

    ./gradlew assemble

Níveis mínimos de API necessários

Cada app desagrupado funciona em plataformas Android com uma versão igual ou maior que o minSdkVersion. A tabela a seguir lista a versão mínima da API compatível com cada app:

App Nível mínimo da API
Agenda 29
Biblioteca da interface do carro 29
CompanionDevice 29
Telefone 31
Mídia 30
Messenger (SMS) 30
Host AOSP 29

Integrar um pré-build a uma imagem do sistema

Se a versão da plataforma Android for compatível com o app (consulte a tabela na seção anterior), adicione o APK à imagem do sistema. No entanto, as etapas de integração variam entre as versões da plataforma Android.

Android 13 e versões mais recentes

O Android 13 e versões mais recentes não incluem código-fonte para apps não agrupados, mas você pode incluir um APK pré-criado na build da plataforma para casos de uso como testes de conformidade do CDD ou provisionamento de apps privilegiados. Para especificar o APK, use a regra android_app_import do Soong, conforme mostrado no exemplo a seguir:

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 e versões anteriores

O Android 12 e versões anteriores incluem código-fonte para apps não agrupados, mas você ainda pode especificar um APK pré-criado para incluir. Como o padrão do Soong é dar precedência ao código-fonte em vez de um pré-criado, é necessário definir a flag prefer como true dentro da regra android_app_import, conforme mostrado no exemplo a seguir:

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
    }

Detalhes de apps não agrupados

App Privilegiado não agrupado
sistema assinado
Privilegiado não agrupado
não sistema assinado
Os
não precisam estar na partição do sistema
Atualizar distribuição OTA OTA ou Google Play OTA ou Google Play
Host AOSP X
Calendar X
CompanionDeviceSupport X
Central de controle (várias telas) X
Discador X
Mídia X
Messenger (SMS) X
Bloqueio de apps sensíveis X