Intégrer les Google Apps à la compilation d’une rom Android

Ce post décrit une méthode permettant d’inclure les Google Apps directement dans une rom Android.
Cela évite ainsi de devoir flasher l’appareil 2 fois de suite à chaque mise à jour de la ROM : une fois pour la rom elle-même, puis une seconde fois avec les Google Apps.

Ce post ne décrit pas comment compiler une ROM, il suppose que l’environnement est déjà en place et fonctionne !
L’intégration des Google Apps n’est clairement pas autorisée par Google dans le cadre d’une distribution publique de la ROM. La méthode n’est donc à faire que pour vos propres compilation et rien d’autre.

  1. La première chose à faire est évidemment de se procurer les Google Apps. Vous pouvez les trouver ici.
  2. Ensuite ouvrez un shell et sourcez le fichier ~/buid/envsetup.sh : source ${VOTRE_RACINE_ANDROID}/build/envsetup.sh
  3. Décompressez les Google Apps dans le dossier suivant $ANDROID_BUILD_TOP/vendor/extra/google. Créez le dossier s’il n’existe pas. Pour préciser, vous devriez avoir un fichier $ANDROID_BUILD_TOP/vendor/extra/google/install-optional.sh  après décompression
  4. Exécutez le script ci-dessous dans ce même shell
  5. Ouvrez le fichier $ANDROID_BUILD_TOP/vendor/asus/tf700t/tf700t-vendor.mk  (remplacez évidemment ce qu’il faut pour votre apareil) et ajoutez-y $(call inherit-product-if-exists, vendor/extra/google.mk)
  6. Plus qu’à lancer une compilation
#!/bin/bash
FOUT=$ANDROID_BUILD_TOP/vendor/extra/google.mk

cd $ANDROID_BUILD_TOP/vendor/extra/google
echo 'PRODUCT_COPY_FILES += \' > $FOUT
find system -type f -exec echo -e \\tvendor/extra/google/\{\}:/\{\} \\ \; | sort >> $FOUT
echo 'PRODUCT_COPY_FILES += \' >> $FOUT
find optional -type f -exec echo -e \\tvendor/extra/google/\{\}:/\{\} \\ \; | sort >> $FOUT

 

ERRATA: il faut enlever les 2 \ finaux qui trainent dans le fichier généré.