Anda dapat membantu mengembangkan sistem operasi yang paling banyak dipasang dalam sejarah Bumi. Ya, Anda di sini untuk memulai perjalanan menjadi insinyur platform Android.
Meskipun jalurnya menantang, kami tim Android berusaha untuk menyederhanakan perjalanan Anda setiap rilis. Dan kami melakukan peningkatan setiap hari melalui pekerjaan langsung di Proyek Sumber Terbuka Android (AOSP).
Jadi duduk, nyalakan terminal, dan mari buat sejarah.
Tujuan
Misi dari codelab ini ada dua:
- Codelab ini akan memberi Anda gambaran kecil tentang seperti apa alur kerja pengembang untuk insinyur Android yang bekerja di platform (sistem operasi).
- Codelab ini adalah fungsi yang memaksa Anda untuk memberikan umpan balik seputar alat Android, dokumentasi, dan alur kerja pengembang saat memulai dari awal.
Prasyarat
Berikut adalah daftar lengkap persyaratan untuk codelab ini, yang diturunkan dari persyaratan untuk pengembangan platform umum ( AOSP ).
Untuk mengambil codelab ini, Anda perlu menyiapkan:
- Workstation Linux fisik memenuhi semua kebutuhan publik .
- Repo dan konfigurasi Git diperlukan untuk mengedit basis kode Android.
Lingkungan Hidup
Biasanya, pengguna membangun dan mengembangkan 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 source build/envsetup.sh
, dan perintah lunch
.
Siapkan workstation
- Instal paket yang diperlukan di workstation.
- 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 lokal yang berfungsi di dalamnya:
mkdir aosp
Arahkan ke direktori:
cd aosp
Inisialisasi cabang master 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 -j16
Sinkronisasi awal membutuhkan waktu satu jam atau lebih. Lihat petunjuk pengunduhan untuk detail terkait sambil menunggu.
Setiap pembayaran repo diwakili oleh file manifes . Anda mungkin memiliki lebih dari satu pembayaran repo pada satu waktu selama mereka ada di direktori yang berbeda. Tetapi perhatikan setiap pembayaran dan jumlah build sekitar 300GB dan terus bertambah, jadi batasi diri Anda pada dua atau tingkatkan sistem Anda dengan drive sekunder.
Tip: Untuk mengosongkan ruang, hapus direktori cabang dan mulai lagi dari pembuatan direktori:
rm -rf aosp2
Bangun 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 Sotong 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 membuat perangkat Android dengan menjalankan perintah berikut dari root checkout kode sumber Anda:
source build/envsetup.sh
Teruskan target build ke perintah makan siang, seperti ini:
lunch aosp_cf_x86_64_phone-userdebug
Buat kode dari mana saja di pembayaran Anda dengan:
m
Harapkan build pertama membutuhkan waktu berjam-jam. Pembangunan selanjutnya membutuhkan waktu yang jauh lebih sedikit.
Buat instance Acloud
Acloud adalah alat baris perintah di AOSP yang membantu pengguna dalam membuat perangkat Android virtual, dalam hal ini Sotong.
Jika Anda berada di sesi terminal yang sama dengan yang digunakan untuk membuat kode , lanjutkan. Jika tidak, jalankan kembali skrip envsetup.sh
dan perintah makan siang yang sama yang digunakan di sana terlebih dahulu. Kemudian:
Buat instance lokal Acloud dengan:
acloud create --local-image --local-instance
Terima pembaruan untuk paket yang diperlukan.
Jika diminta, mulai ulang workstation Anda agar semua perubahan diterapkan.
Pilih perangkat Sotong.
Anda akan disambut dengan sesi VNC yang berisi perangkat Android!
Anda dapat berinteraksi dengan perangkat virtual di workstation Anda menggunakan mouse dan keyboard. Anda juga dapat mengikuti aktivitas dalam log saat menggunakan perangkat dengan perintah logcat
Android Debug Bridge (adb):
adb logcat
Membuat perubahan
Perbarui kode sumber mengikuti daftar perubahan contoh ini.
Dari root checkout Anda (direktori
aosp/
), bukaframeworks/native
Git project:cd frameworks/native
Mulai proyek sementara dengan:
repo start <some-name> .
Edit
SurfaceFlinger.cpp
untuk menyertakan pembaruan dari daftar perubahan di lokasi berikut ini:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
Buat kode:
m
Perbarui build di perangkat:
adb root adb remount adb sync adb reboot acloud reconnect
Anda akan melihat perubahan warna pada perangkat.
Uji kode Anda
Selama bagian codelab ini, kita akan menjalankan pengujian contoh yang ada di pohon sumber dan sudah gagal. Untuk menjalankan pengujian secara lokal, kami akan menggunakan Atest untuk menguji kode.
Untuk menggunakan tes:
Lari:
atest DevCodelabTest
Tes akan gagal; sekarang mari kita perbaiki! Temukan kode sumber dari tes yang gagal:
atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
Kemudian lihat ke dalam:
platform_testing/tests/example/devcodelab
Untuk file yang akan diedit, ambil nama pengujian dan ganti
.
dengan/
, seperti ini:android.test.example.devcodelab.DevCodelabTest
Menjadi:
src/android/test/example/devcodelab/DevCodelabTest.java
Jadi 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 pengujian:
atest DevCodelabTest
Unggah kode Anda untuk ditinjau
Repo menyederhanakan penggunaan Git dengan menggabungkan perintah seperti git clone
untuk bekerja di banyak repositori Git (atau proyek) sekaligus.
Lihat Alat Kontrol Sumber untuk ikhtisar Git dan Repo dengan tautan 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.
Anda akan menggunakan sistem tinjauan kode berbasis web Gerrit untuk proyek-proyek di Git.
Dengan asumsi Anda membuat perubahan dalam
frameworks/native
proyekframeworks/native
, jalankan perintah ini untuk mengunggahnya:cd frameworks/native repo start codelab . git add . git commit
Untuk pesan komit Anda masukkan:
Android codelab change Test: manual atest
Unggah perubahan Anda:
repo upload
Jika berhasil, Anda akan melihat pesan seperti:
Upload project frameworks/native/ to remote branch master:
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/master
Lihat perubahan Anda di Gerrit
Buka tautan yang dicetak di terminal seperti:
https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432
Ini melengkapi codelab pemula untuk pengembangan platform Android. Lihat Mengirimkan Tambalan untuk langkah selanjutnya dan bagian lain dari situs ini untuk detail lengkap tentang mengembangkan Android.
Kembalikan kembalian Anda
Biasanya, setelah pengujian dan tinjauan / persetujuan, Anda akan mengirimkan perubahan Anda di Gerrit dan menggabungkannya ke dalam repositori.
Sebagai gantinya, untuk keperluan codelab, kembalikan daftar perubahan Anda dengan mengklik Abaikan di Gerrit.
Kemudian tinggalkan cabang sementara yang terkait di direktori framework / project asli (atau subsnya):
repo abandon codelab .
Ingat juga untuk mengembalikan perubahan ke file tes. Karena kami tidak repo start
, git commit
, dan repo upload
perubahan, kami hanya dapat mengatur ulang file itu sendiri, seperti itu (dengan asumsi Anda berada di aosp/platform_testing directory
):
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 kesalahan selama codelab ini, harap laporkan menggunakan tautan umpan balik Situs di bagian bawah halaman mana pun. Kirim pertanyaan ke grup pembangun android .