Anda dapat membantu mengembangkan sistem operasi yang paling banyak diinstal dalam sejarah Bumi. Ya, Anda di sini untuk memulai perjalanan menjadi insinyur platform Android.
Meskipun jalurnya menantang, tim Android berupaya menyederhanakan perjalanan Anda, di setiap rilis. Dan tim melakukan perbaikan setiap hari melalui kerja langsung di Android Open Source Project (AOSP).
Jadi duduk santai, jalankan terminal, dan mari buat sejarah.
Sasaran
Misi codelab ini ada dua:
- Untuk memberi Anda sedikit gambaran tentang seperti apa alur kerja pengembang bagi para insinyur Android yang bekerja pada platform (sistem operasi).
- Mendorong Anda untuk memberikan masukan seputar alat, dokumentasi, dan alur kerja pengembang Android.
Prasyarat
Daftar persyaratan untuk codelab ini berasal dari persyaratan untuk pengembangan platform umum ( AOSP ). Untuk menggunakan codelab ini, siapkan hal berikut:
- Workstation Linux fisik memenuhi semua persyaratan publik .
- Repo dan konfigurasi Git diperlukan untuk mengedit basis kode Android.
Lingkungan
Biasanya, pengguna membangun dan mengembangkan di workstation secara langsung. Karena Anda mungkin bekerja di berbagai terminal, dan banyak perintah yang digunakan khusus untuk terminal, Anda perlu menjalankannya kembali di setiap sesi terminal. Secara khusus, ini termasuk perintah source build/envsetup.sh
dan lunch
.
Siapkan stasiun kerja
- Instal paket yang diperlukan di workstation Anda.
- Saat masih di terminal, instal Repo dan dapatkan kredensial ke semua repositori Git.
Inisialisasi dan sinkronkan kode
Arahkan ke direktori home Anda:
cd ~
Buat subdirektori kerja lokal di dalamnya:
mkdir aosp
Arahkan ke direktori:
cd aosp
Inisialisasi cabang utama kode sumber repositori AOSP (default):
repo init -u https://android.googlesource.com/platform/manifest
Masukkan atau terima kredensial Git Anda (nama, alamat email).
Sinkronkan kode sumber:
repo sync -j8
Sinkronisasi awal dapat memerlukan waktu satu jam atau lebih.
Setiap checkout repo diwakili oleh file manifes . Dibolehkan melakukan lebih dari 1 repo checkout sekaligus, asalkan repo tersebut ada di direktori yang berbeda. Namun perhatikan bahwa setiap checkout dan build berjumlah penggunaan sekitar 300 GB (dan terus bertambah), jadi batasi diri Anda hingga 2 checkout repo, atau tambah sistem Anda dengan drive sekunder.
Buat kodenya
Untuk membangun Android, Anda harus memilih jenis perangkat target yang akan dibangun dengan perintah lunch
. Target adalah permutasi perangkat, seperti model atau faktor bentuk tertentu.
Target perangkat yang disertakan di bawah, aosp_cf_x86_64_phone-userdebug
, memungkinkan Anda membuat perangkat Android virtual Cuttlefish untuk pengujian tanpa perangkat fisik.
Untuk membuat dan memperbarui perangkat fisik, pilih target lain dan ikuti petunjuk untuk mem-flash perangkat .
Siapkan lingkungan Anda untuk membangun perangkat Android dengan menjalankan perintah berikut dari root checkout kode sumber Anda:
source build/envsetup.sh
Berikan target build ke perintah makan siang, seperti ini:
lunch aosp_cf_x86_64_phone-userdebug
Buat kode dari mana saja di checkout Anda dengan:
m
Diperkirakan pembangunan pertama akan memakan waktu berjam-jam. Pembangunan selanjutnya membutuhkan waktu yang jauh lebih sedikit.
Buat instans Acloud
Acloud adalah alat baris perintah di AOSP yang membantu pengguna dalam membuat perangkat Android virtual, dalam hal ini Cuttlefish.
Jika Anda berada di sesi terminal yang sama dengan yang digunakan untuk membuat kode , lanjutkan. Jika tidak, jalankan kembali skrip envsetup.sh
dan perintah lunch
yang sama yang Anda gunakan pertama kali. Kemudian
Instal dependensi untuk menjalankan perangkat virtual Cuttlefish secara lokal dengan:
acloud setup
Jika diminta, mulai ulang stasiun kerja Anda agar semua perubahan diterapkan.
Buat instans lokal
acloud
dengan:acloud create --local-image --local-instance
Pilih perangkat Sotong.
Anda akan disambut dengan sesi VNC yang berisi perangkat Android!
Anda dapat berinteraksi dengan perangkat virtual di stasiun kerja Anda menggunakan mouse dan keyboard. Anda juga dapat mengikuti aktivitas dalam log saat menggunakan perangkat dengan menggunakan perintah logcat
Android Debug Bridge (adb):
adb logcat
Membuat perubahan
Perbarui kode sumber dengan mengikuti contoh daftar perubahan ini.
Dari root checkout Anda (direktori
aosp/
), navigasikan keframeworks/native
:cd frameworks/native
Mulai proyek sementara dengan perintah ini:
repo start <some-name> .
Edit
SurfaceFlinger.cpp
untuk menyertakan pembaruan dari daftar perubahan di lokasi berikut:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
Temukan baris ini:
postComposition();
Ganti kedua baris tersebut dengan yang berikut ini:
postComposition(); 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}); updateColorMatrixLocked();
Buat kode:
m
Perbarui versi pada perangkat:
adb root
adb remount
adb sync
adb reboot
acloud reconnect
Jika Anda diminta untuk memilih perangkat, pilih perangkat yang menunjukkan waktu berlalu terpendek. (Ini mungkin yang terakhir dalam daftar yang Anda lihat.) Untuk melihat semua perangkat virtual, gunakan perintah
acloud list
danacloud list -v
.
Pastikan Anda melihat perubahan warna pada perangkat pilihan Anda seperti yang ditunjukkan pada Gambar 1.
Gambar 1. Tampilan layar setelah perubahan warna berhasil
Uji kode Anda
Bagian codelab ini menggunakan contoh pengujian yang ada di pohon sumber dan gagal. Ini menggunakan Atest untuk menjalankan pengujian secara lokal dan menguji kode.
Untuk menggunakan tes ini, ikuti petunjuk berikut:
Berlari:
atest DevCodelabTest
Tes akan gagal. Untuk memperbaikinya, temukan kode sumber pengujian yang gagal:
atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
Lalu lihat di sini
platform_testing/tests/example/devcodelab
Agar file dapat diedit, ambil nama pengujian di
android.test.example.devcodelab.DevCodelabTest
dan ganti.
dengan/
, untuk mendapatkan hasil ini:src/android/test/example/devcodelab/DevCodelabTest.java
Kemudian edit
platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
untuk menggantikan
Assert.assertTrue(false)
dengan
Assert.assertTrue(true)
Jalankan pengujian lagi untuk memverifikasi bahwa Anda telah memperbaiki masalahnya:
atest DevCodelabTest
Unggah kode Anda untuk ditinjau
Repo menyederhanakan penggunaan Git dengan menggabungkan perintah seperti git clone
untuk bekerja di banyak repositori (atau proyek) Git sekaligus.
Lihat Alat Kontrol Sumber untuk ikhtisar Git dan Repo, dengan link ke dokumentasi lengkap tentang bekerja dengan kode sumber Android. Lihat repositori AOSP untuk daftar lengkap proyek Git dan masing-masing proyek (jalur) untuk cabang yang terkait dengan setiap proyek.
Untuk peninjauan kode proyek Anda di Git, Anda akan menggunakan sistem peninjauan kode berbasis web Gerrit .
Dengan asumsi Anda membuat perubahan pada
frameworks/native
, jalankan perintah berikut untuk mengunggahnya:cd frameworks/native
repo start codelab .
git add .
git commit
Untuk pesan komit Anda, masukkan yang berikut ini:
Android codelab change Test: manual atest
Unggah perubahan Anda:
repo upload
Jika berhasil, Anda akan melihat pesan seperti ini:
Upload project frameworks/native/ to remote branch main:
branch codelab ( 1 commit, Wed Aug 7 09:32:33 2019 -0700):
ff46b36d android codelab 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 codelab change [NEW]
remote:
To https://android-review.googlesource.com/platform/frameworks/native
* [new branch] codelab -> refs/for/main
Lihat perubahan Anda di Gerrit
Buka tautan yang tercetak di terminal, yang menyerupai ini:
https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432
Ini melengkapi codelab awal untuk pengembangan platform Android. Lihat Mengirimkan patch untuk langkah selanjutnya, dan untuk detail lengkap tentang pengembangan Android, lihat seluruh situs ini.
Kembalikan kembalian Anda
Biasanya, pasca-pengujian dan setelah ditinjau dan disetujui, Anda mengirimkan perubahan Anda di Gerrit dan menggabungkannya ke dalam repositori.
Sebagai gantinya, untuk keperluan codelab ini, kembalikan daftar perubahan Anda dengan mengklik Abaikan di Gerrit.
Kemudian tinggalkan cabang sementara terkait di direktori proyek frameworks/native
(atau subdirektorinya):
repo abandon codelab .
Ingatlah juga untuk mengembalikan perubahan yang Anda buat pada file pengujian. Karena Anda tidak melakukan repo start
, git commit
, dan repo upload
perubahan, Anda dapat mengatur ulang file itu sendiri. Dengan asumsi Anda berada di aosp/platform_testing directory
, gunakan yang berikut ini untuk mereset file:
git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
git checkout .
Pada titik ini, Anda sudah selesai! Kerja bagus!
Mendapatkan bantuan
Jika Anda mengalami error selama codelab ini, laporkan error tersebut menggunakan link Issue Tracker di bagian bawah halaman mana pun. Kirim pertanyaan ke grup pembuat android .