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

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

monitor
~/Android/Sdk/tools/lib/monitor-x86_64/monitor
jre
sudo apt install openjdk-8-jre-headless
, . monitor- /8700, , IDEA.
system_process. .
monitor AOSP

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

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.