AOSP herunterladen und erstellen

Ich habe beschlossen, meine Anweisungen zum Erstellen von AOSP (Android Open Source Project) zu teilen. Diese Anleitung ist nĂŒtzlich fĂŒr diejenigen, die etwas in Android sehen und möglicherweise die Systementwicklung durchfĂŒhren möchten. In jedem Fall ist dieses Wissen nĂŒtzlich, um Android selbst zu verstehen. Nur dafĂŒr habe ich beschlossen, AOSP zu erstellen.



Ich habe das Projekt unter elementarem 5.1 OS Ubuntu 18.04 LTS (bionisch) erstellt. Ich habe versucht, es unter MacOS zu erstellen, bin aber gescheitert. FĂŒr Quellen und Assembly benötigen Sie 200 GB Festplattenspeicher (besser als SSD, bei normaler Leistung sinkt er stark). Ich habe auch viel Zeit damit verbracht, ungefĂ€hr 20 Stunden herunterzuladen und zusammenzubauen, was teilweise auf die "schwache" Konfiguration meines Computers zurĂŒckzufĂŒhren ist. Ich habe nur 8 GB RAM installiert, aber die GrĂ¶ĂŸe des Swaps auf 16 GB erhöht.



Laden von AOSP



Installieren Sie die erforderlichen Pakete zum Herunterladen und Erstellen:



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


Erstellen Sie einen Ordner und laden Sie das Repo-Dienstprogramm herunter, um den Quellcode herunterzuladen



mkdir aosp #     
cd aosp

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


AOSP-Quellen bestehen aus separaten Projekten mit eigenen Git-Repositorys. Mit repo können Sie den gesamten Download aller Projekte vereinfachen und in den erforderlichen Ordnern ablegen.



Repo initialisieren



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


Parameter:



  • -u - URL des Git-Repositorys mit Manifest
  • -b - Zweig (aktuell im 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,



,

Emulator



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- .



Einrichten von Java in einem Projekt





monitor



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


jre

sudo apt install openjdk-8-jre-headless

, . monitor- /8700, , IDEA.

system_process. .



monitor AOSP

Monitor von Android



FĂŒgen Sie im Projekt eine neue Remote-Konfiguration hinzu und geben Sie nur Port 8700 an. An diesen Port werden wir uns anschließen



HinzufĂŒgen der Remote-Konfiguration zu IDEA



Debug ausfĂŒhren (AusfĂŒhren → Debuggen)



Um sicherzustellen, dass alles verbunden ist, setzen Sie einen Haltepunkt in der Datei Frameworks / base / services / core / java / com / android / server / wm / ActivityTaskManagerService.java auf die folgende Methode:



// 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) {
//...
}


und fĂŒhren Sie eine beliebige Anwendung auf dem Emulator aus (z. B. Einstellungen).



Alles ist jetzt bereit zum Experimentieren.




All Articles