Téléchargement et création d'AOSP

J'ai dĂ©cidĂ© de partager mes instructions sur la façon de construire AOSP (Android Open Source Project). Cette instruction sera utile pour ceux qui veulent voir quelque chose Ă  l'intĂ©rieur d'Android et Ă©ventuellement faire du dĂ©veloppement de systĂšme. Dans tous les cas, ces connaissances sont utiles pour comprendre Android lui-mĂȘme, rien que pour cela, j'ai dĂ©cidĂ© de construire AOSP.



J'ai construit le projet sur le systÚme d'exploitation élémentaire 5.1 Ubuntu 18.04 LTS (bionic), j'ai essayé de le construire sur MacOS, mais j'ai échoué. Pour les sources et l'assemblage, vous avez besoin de 200 Go d'espace sur le disque dur (mieux que le SSD, sur des performances normales, il s'affaisse beaucoup). J'ai également passé beaucoup de temps à télécharger et à assembler environ 20 heures, en partie à blùmer pour la configuration "faible" de mon ordinateur. Je n'ai que 8 Go de RAM installés, mais j'ai augmenté la taille du swap à 16 Go.



Chargement d'AOSP



Installez les packages requis pour le téléchargement et la construction:



sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig


Créez un dossier et téléchargez l'utilitaire de repo pour télécharger le code source



mkdir aosp #     
cd aosp

curl https://storage.googleapis.com/git-repo-downloads/repo > repo
chmod a+x repo


Les sources AOSP sont constituées de projets séparés avec leurs propres référentiels git, le repo vous permet de simplifier le téléchargement complet de tous les projets et de les placer dans les dossiers nécessaires.



Initialisation du repo



./repo init -b android-10.0.0_r45 --depth 1 -u https://android.googlesource.com/platform/manifest


ParamĂštres:



  • -u - URL du dĂ©pĂŽt git avec le manifeste
  • -b - branche (la plus rĂ©cente pour le moment)
  • —depth — ( , , )


Android 10. develop master, .



AOSP



./repo sync -c  -j $(nproc) --no-tags --no-clone-bundle


:



  • -c — ( — android-10.0.0_r45)
  • -j — ,
  • —no-tags —
  • —no-clone-bundle — clone.bundle ( , , bundle),


—no-clone-bundle , , 404

, repo , : https://source.android.com/setup/develop/repo





:



source build/envsetup.sh




lunch aosp_x86_64-eng


x86_64 — , Generic x86_64 , Nexus , https://source.android.com/setup/build/building#choose-a-target



eng — ( engineering), .



java Heap size, , StackOverflow :



export _JAVA_OPTIONS="-Xmx4g"


.bashrc

, :



USE_CCACHE=1 CCACHE_DIR=ccache make -j $(nproc)


CCACHE, , . "" - 16 .



, :



emulator -show-kernel


-show-kernel —



Enter,



,

Émulateur



IDE



IDE, IDEA. :



mmm development/tools/idegen


AOSP ,



development/tools/idegen/idegen.sh


IDEA "". . IDEA , Android



development/tools/idegen/intellij-gen.sh frameworks/base




cat .repo/project.list


base.iml ( frameworks/base) IDEA. Java, java , AOSP- .



Configurer Java dans un projet





monitor



 ~/Android/Sdk/tools/lib/monitor-x86_64/monitor


jre

sudo apt install openjdk-8-jre-headless

, . monitor- /8700, , IDEA.

system_process. .



monitor AOSP

moniteur depuis Android



Dans le projet, ajoutez une nouvelle configuration à distance, spécifiez uniquement le port 8700. C'est à ce port que nous allons nous connecter



Ajouter une configuration Ă  distance Ă  IDEA



ExĂ©cuter le dĂ©bogage (ExĂ©cuter → DĂ©boguer)



Pour vous assurer que tout est connectĂ©, placez un point d'arrĂȘt dans le fichier frameworks / base / services / core / java / com / android / server / wm / ActivityTaskManagerService.java Ă  la mĂ©thode:



// line 1040
int startActivityAsUser(IApplicationThread caller, String callingPackage,
            Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode,
            int startFlags, ProfilerInfo profilerInfo, Bundle bOptions, int userId,
            boolean validateIncomingUser) {
//...
}


et exécutez n'importe quelle application sur l'émulateur (par exemple, ParamÚtres).



Tout est maintenant prĂȘt Ă  expĂ©rimenter.




All Articles