Tutorial ini memungkinkan Anda mencoba pengembangan sistem operasi Android untuk pertama kalinya.
Menyiapkan pengembangan Android
Sebelum mendownload dan mem-build cabang manifes android-latest-release dari
sumber Android, pastikan hardware Anda memenuhi
persyaratan yang diperlukan dan bahwa
software yang diperlukan telah diinstal dengan benar. Anda juga harus memahami istilah berikut:
- Git
- Git adalah sistem kontrol versi terdistribusi open source dan gratis. Android menggunakan Git untuk operasi lokal seperti percabangan, commit, perbedaan, dan pengeditan. Untuk mendapatkan bantuan mempelajari Git, lihat dokumentasi Git.
- Repo
- Repo adalah wrapper Python di sekitar Git yang menyederhanakan operasi kompleks di beberapa repositori Git. Repo tidak menggantikan Git untuk semua operasi kontrol versi, tetapi hanya mempermudah operasi Git yang kompleks. Repo menggunakan file manifes untuk menggabungkan project Git ke dalam superproject Android.
- file manifes
- File manifes adalah file XML yang menentukan tempat berbagai project Git dalam sumber Android ditempatkan dalam pohon sumber AOSP.
Memenuhi persyaratan hardware
Workstation pengembangan Anda harus memenuhi atau melampaui persyaratan hardware berikut:
Sistem x86 64-bit.
Setidaknya 400 GB ruang disk kosong untuk mengaktifkan dan mem-build kode (250 GB untuk mengaktifkan + 150 GB untuk mem-build).
RAM minimal 64 GB. Google menggunakan mesin 72 core dengan RAM 64 GB untuk mem-build Android. Dengan konfigurasi hardware ini, diperlukan waktu sekitar 40 menit untuk mem-build Android secara penuh dan hanya beberapa menit untuk mem-build Android secara bertahap. Sebaliknya, diperlukan waktu sekitar 6 jam untuk mem-build secara penuh dengan mesin 6 core dengan RAM 64 GB.
Memenuhi persyaratan sistem operasi
Workstation pengembangan Anda harus menjalankan distribusi Linux 64-bit apa pun dengan GNU C Library (glibc) 2.17 atau yang lebih baru.
Menginstal paket yang diperlukan
Untuk menginstal paket yang diperlukan untuk Ubuntu 18.04 atau yang lebih baru, jalankan perintah berikut:
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfigMenginstal software yang diperlukan
Sebelum dapat menggunakan AOSP, Anda harus menginstal OpenJDK, Make, Python 3, dan Repo. Cabang rilis terbaru Android dilengkapi dengan versi OpenJDK, Make, dan Python 3 yang telah di-build sebelumnya, sehingga langkah penginstalan tambahan tidak diperlukan. Bagian berikut menjelaskan cara menginstal Repo.
Menginstal Repo
Ikuti langkah-langkah berikut untuk menginstal Repo:
Download informasi paket saat ini:
sudo apt-get updateJalankan perintah berikut untuk menginstal peluncur Repo:
sudo apt-get install repoPeluncur Repo menyediakan skrip Python yang menginisialisasi checkout dan mendownload alat Repo lengkap.
Jika berhasil, lanjutkan ke langkah 4.
(opsional) Instal Repo secara manual menggunakan serangkaian perintah berikut:
export REPO=$(mktemp /tmp/repo.XXXXXXXXX) curl -o ${REPO} https://storage.googleapis.com/git-repo-downloads/repo gpg --recv-keys 8BB9AD793E8E6153AF0F9A4416530D5E920F5C65 curl -s https://storage.googleapis.com/git-repo-downloads/repo.asc | gpg --verify - ${REPO} && install -m 755 ${REPO} ~/bin/repoTiga perintah pertama menyiapkan file sementara, mendownload Repo ke file, dan memverifikasi bahwa kunci yang diberikan cocok dengan kunci yang diperlukan. Jika perintah ini berhasil, perintah terakhir akan menginstal peluncur Repo.
Verifikasi versi peluncur Repo:
repo versionOutput harus menunjukkan versi 2.4 atau yang lebih tinggi, misalnya:
repo launcher version 2.45
Mendownload sumber Android
Sumber Android terletak dalam kumpulan repositori Git yang dihosting oleh Google. Setiap repositori Git menyertakan seluruh histori sumber Android, termasuk perubahan pada sumber dan waktu perubahan tersebut dilakukan. Untuk mendownload sumber Android:
Buka direktori utama Anda:
cd ~Buat subdirektori kerja lokal di dalamnya:
mkdir aospBuka direktori:
cd aospInisialisasi cabang rilis terbaru kode sumber repositori AOSP (
android-latest-release):repo init --partial-clone -b android-latest-release -u https://android.googlesource.com/platform/manifestMasukkan atau terima kredensial Git Anda (nama, alamat email).
Sinkronkan kode sumber:
repo sync -c -j8Jika Anda mengalami masalah selama proses download, lihat Memecahkan masalah dan memperbaiki masalah sinkronisasi.
Mem-build kode
Untuk mem-build kode:
Dari dalam direktori kerja Anda, sumberkan skrip
envsetup.shuntuk menyiapkan lingkungan build Anda:source build/envsetup.shTentukan jenis perangkat target untuk di-build dengan perintah
lunch. Target adalah permutasi perangkat, seperti model atau faktor bentuk tertentu. Tentukan target ini:lunch aosp_cf_x86_64_only_phone-aosp_current-userdebugAnda akan melihat ringkasan target dan lingkungan build Anda:
============================================ PLATFORM_VERSION_CODENAME=Baklava PLATFORM_VERSION=Baklava TARGET_PRODUCT=aosp_cf_x86_64_only_phone TARGET_BUILD_VARIANT=userdebug TARGET_ARCH=x86_64 TARGET_ARCH_VARIANT=silvermont HOST_OS=linux HOST_OS_EXTRA=Linux-6.10.11-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete HOST_CROSS_OS=windows BUILD_ID=BP1A.250305.020 OUT_DIR=out ============================================Build target:
m
Build pertama diperkirakan akan memakan waktu berjam-jam. Build berikutnya memerlukan waktu yang jauh lebih singkat. Output build Anda akan muncul di $OUT_DIR.
Meluncurkan Cuttlefish
Cuttlefish adalah emulator Android yang digunakan untuk menguji build Anda.
Jalankan perintah berikut untuk mendownload, mem-build, dan menginstal paket Debian host:
sudo apt install -y git devscripts equivs config-package-dev debhelper-compat golang curlgit clone https://github.com/google/android-cuttlefishcd android-cuttlefishfor dir in base frontend; do pushd $dir # Install build dependencies sudo mk-build-deps -i dpkg-buildpackage -uc -us popd donesudo dpkg -i ./cuttlefish-base_*_*64.deb || sudo apt-get install -fsudo dpkg -i ./cuttlefish-user_*_*64.deb || sudo apt-get install -fsudo usermod -aG kvm,cvdnetwork,render $USERsudo rebootReboot akan memicu penginstalan modul kernel tambahan dan menerapkan aturan
udev.Luncurkan Cuttlefish:
launch_cvd --daemonHubungkan ke perangkat Cuttlefish dengan membuka
https://localhost:8443di browser web Anda. Perangkat virtual yang didukung Android akan ditampilkan.
Membuat perubahan
Perbarui kode sumber dengan mengikuti daftar perubahan contoh ini changelist.
Dari root checkout Anda (direktori
aosp/), buka project Gitframeworks/native:cd frameworks/nativeMulai project sementara dengan perintah ini:
repo start PROJECT_NAME.Gunakan editor Anda untuk mengedit
SurfaceFlinger.cppdi lokasi berikut:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cppTemukan baris ini:
void SurfaceFlinger::updateColorMatrixLocked() {Tambahkan baris ini di awal
updateColorMatrixLocked():mClientColorMatrix = mat4(vec4{1.0f, 0.0f, 0.0f, 0.0f}, vec4{0.0f, -1.0f, 0.0f, 0.0f}, vec4{0.0f, 0.0f, -1.0f, 0.0f}, vec4{0.0f, 1.0f, 1.0f, 1.0f});Build kode:
mPerbarui build di perangkat:
adb rootadb remount -Radb rootadb syncadb rebootPastikan Anda melihat perubahan warna pada perangkat yang dipilih, yang mirip dengan yang ditampilkan pada Gambar 1.
Gambar 1. Tampilan layar setelah perubahan warna berhasil
Memperbaiki pengujian
Bagian codelab ini menggunakan contoh pengujian yang ada di pohon sumber dan gagal.
Untuk menjalankan, men-debug, dan memperbaiki pengujian, ikuti petunjuk berikut:
Jalankan:
atest DevCodelabTestPengujian gagal.
Periksa stack trace pengujian yang gagal:
STACKTRACE: java.lang.AssertionError at org.junit.Assert.fail(Assert.java:87) at org.junit.Assert.assertTrue(Assert.java:42) at org.junit.Assert.assertTrue(Assert.java:53) at android.test.example.devcodelab.DevCodelabTest.testHelloWorld(DevCodelabTest.java:29)Baris terakhir stack trace menunjukkan pengujian yang gagal (
testHelloWorld). Pengujian ini ada dalam file bernamaDevCodelabTest.java.Untuk menentukan lokasi pengujian yang akan diperbaiki, tambahkan
WORKING_DIRECTORY/platform_testing/tests/example/devcodelab/src/ke baris terakhir stack trace hingga dan termasuk nama file pengujian. Jadi,android.test.example.devcodelab.DevCodelabTestmenjadiWORKING_DIRECTORY/platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java.Edit
platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.javadan gantiAssert.assertTrue(false)denganAssert.assertTrue(true)Jalankan pengujian lagi untuk memverifikasi bahwa Anda telah memperbaiki masalah:
atest DevCodelabTest
Mengupload kode Anda untuk ditinjau
Repo menyederhanakan penggunaan Git dengan menggabungkan perintah seperti git clone untuk bekerja di beberapa repositori Git (atau project) sekaligus.
Untuk peninjauan kode project Anda di Git, gunakan sistem peninjauan kode berbasis web Gerrit.
Dengan asumsi Anda membuat perubahan di project
frameworks/native, jalankan perintah ini untuk mengupload perubahan Anda:cd frameworks/nativerepo start PROJECT_NAME.git add .git commitUntuk pesan commit Anda, masukkan hal berikut:
Android PROJECT_NAME. change Test: manual atestUpload perubahan Anda:
repo uploadJika berhasil, Anda akan melihat pesan yang mirip dengan pesan berikut:
Upload project frameworks/native/ to remote branch android17-release: branch PROJECT_NAME. ( 1 commit, Wed Aug 7 09:32:33 2019 -0700): ff46b36d android PROJECT_NAME. change to https://android-review.googlesource.com/ (y/N)? y remote: Processing changes: refs: 1, new: 1, done remote: remote: SUCCESS remote: remote: https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432 android PROJECT_NAME. change [NEW] remote: To https://android-review.googlesource.com/platform/frameworks/native * [new branch] PROJECT_NAME. -> refs/for/android17-release
Melihat perubahan Anda di Gerrit
Untuk melihat perubahan Anda di Gerrit, buka output link di terminal. Link tersebut mirip dengan yang berikut ini:
https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432
Mengembalikan perubahan Anda
Biasanya, setelah pengujian dan setelah peninjauan dan persetujuan, Anda akan mengirimkan perubahan di Gerrit dan menggabungkannya ke dalam repositori. Namun, untuk tujuan codelab ini, kembalikan pekerjaan Anda:
Di Gerrit, klik Abandon.
Batalkan cabang sementara terkait di direktori project
frameworks/native(atau subdirektorinya):repo abandon PROJECT_NAME.Kembalikan perubahan yang Anda buat pada file pengujian. Karena Anda tidak menjalankan
repo start,git commit, danrepo uploadpada perubahan pengujian, Anda dapat mereset file itu sendiri. Dengan asumsi Anda berada diaosp/platform_testing directory, gunakan perintah berikut untuk mereset file:git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.javagit checkout .
Codelab untuk pengembangan platform Android telah selesai.
Dapatkan bantuan
Jika Anda mengalami error selama codelab ini, laporkan menggunakan link Issue Tracker di bagian bawah halaman mana pun. Kirim pertanyaan ke android-building grup.
Ketik ps -A | grep crosvm untuk melihat apakah crosvm sudah berjalan. Jika crossvm berjalan, ketik stop_cvd || true atau kill crosvm proses dengan PID proses.