Halaman ini menjelaskan seluruh proses pengiriman perubahan kode ke Project Open Source Android (AOSP), termasuk cara meminta peninjauan dan melacak perubahan Anda.
AOSP mengandalkan Gerrit, sistem peninjauan kode berbasis web untuk project yang menggunakan Git.
Menandatangani perjanjian lisensi kontributor
Sebelum memberikan kontribusi perubahan kode apa pun untuk AOSP, Anda harus membaca Perjanjian dan header lisensi kontributor dan menandatangani salah satu perjanjian berikut:
- Sebagai kontributor perorangan yang hanya memberikan kontribusi atas nama Anda, tandatangani Perjanjian Lisensi Kontributor Perorangan.
- Sebagai karyawan yang bekerja untuk perusahaan, pastikan perusahaan Anda telah menandatangani Perjanjian Lisensi Kontributor Perusahaan yang mengizinkan Anda untuk memberikan kontribusi atas nama perusahaan.
Mulai cabang
Untuk setiap perubahan kode yang ingin Anda lakukan, ikuti langkah-langkah berikut:
Mulai cabang baru dalam repositori Git yang relevan. Cabang bukan salinan file asli; cabang adalah penunjuk ke commit tertentu, yang membuat pembuatan cabang lokal dan peralihan di antara cabang menjadi operasi yang ringan. Dengan menggunakan cabang, Anda dapat mengidentifikasi perubahan dari masing-masing cabang. Jalankan perintah ini untuk memulai cabang:
repo start BRANCH_NAME
Anda dapat memulai beberapa cabang independen secara bersamaan di repositori yang sama. Cabang BRANCH_NAME bersifat lokal untuk ruang kerja Anda dan tidak disertakan di Gerrit atau di pohon sumber akhir. Branch juga khusus untuk project tempat Anda berada, jadi jika Anda perlu mengubah file di project yang berbeda sebagai bagian dari perubahan yang sama, Anda memerlukan branch di setiap project tempat Anda mengubah file.
(opsional) Verifikasi bahwa cabang telah dibuat:
repo status .
Anda akan melihat cabang yang baru dibuat. Contoh:
project frameworks/native/ branch mynewbranch
Membuat dan menguji perubahan
Ikuti langkah-langkah berikut untuk membuat dan menguji perubahan Anda:
Untuk memastikan Anda menggunakan codebase terbaru, lakukan sinkronisasi seluruh codebase:
repo sync
Jika Anda mengalami konflik selama sinkronisasi, lihat langkah 2-4 di Menyelesaikan konflik sinkronisasi.
Temukan kode yang akan diubah. Untuk menemukan kode, pertimbangkan penggunaan Penelusuran Kode Android. Anda dapat menggunakan Android Code Search untuk melihat kode sumber AOSP sebagaimana tata letaknya saat Anda benar-benar menggunakannya. Untuk mengetahui informasi selengkapnya, lihat Mulai menggunakan Penelusuran Kode. Untuk melihat semua kode di cabang rilis AOSP terbaru dalam Penelusuran Kode Android, buka
https://cs.android.com/android/platform/superproject/
.Ubah atau tambahkan file sumber. Untuk setiap perubahan yang dilakukan:
Tentukan apakah Anda perlu menggunakan flag peluncuran fitur dan, jika ya, terapkan untuk kode baru Anda.
Ikuti praktik terbaik dalam Menyertakan header lisensi.
Untuk kode Java, ikuti Gaya kode Java AOSP untuk kontributor.
Beberapa bagian AOSP ditulis dalam Kotlin (
.kt
) dan Anda dapat menggunakan Kotlin di area platform yang sudah ditulis dalam Kotlin. Untuk mengetahui informasi selengkapnya tentang Kotlin di Android, lihat panduan gaya Kotlin developer Android dan panduan interop Kotlin-Java. Untuk panduan Kotlin yang lebih lengkap, lihat situs bahasa Kotlin.Saat menulis API, ikuti Pedoman API Android. Gunakan panduan ini untuk melihat konteks di balik keputusan API Android. Penambahan dan modifikasi API platform divalidasi oleh Metalava.
Menyiapkan dan melakukan perubahan
Penerapan adalah unit dasar kontrol revisi di Git dan terdiri dari snapshot struktur direktori dan konten file untuk seluruh project. Ikuti langkah-langkah berikut untuk melakukan perubahan:
Secara default, Git mendaftarkan, tetapi tidak melacak perubahan yang Anda buat. Untuk menginstruksikan Git agar melacak perubahan Anda, Anda harus menandai atau menyiapkan perubahan tersebut untuk disertakan dalam commit. Jalankan perintah ini untuk menyiapkan perubahan:
git add -A
Perintah ini melacak perubahan yang telah Anda lakukan pada file apa pun.
Ambil file di area staging dan lakukan commit atau simpan di database lokal Anda:
git commit -s
Secara default, editor teks akan terbuka dan Anda akan diminta untuk memberikan pesan commit.
Berikan pesan commit dalam format berikut:
Baris 1: Judul. Berikan ringkasan perubahan satu baris (maksimum 50 karakter). Pertimbangkan untuk menggunakan awalan untuk menjelaskan area yang Anda ubah, diikuti dengan deskripsi perubahan yang Anda buat dalam commit ini, seperti contoh berikut yang berisi perubahan antarmuka pengguna:
ui: Removes deprecated widget
Baris 2: Baris kosong. Ikuti judul dengan baris kosong.
Baris 3: Isi. Berikan deskripsi panjang yang di-wrap secara paksa pada maksimum 72 karakter. Jelaskan masalah yang diselesaikan oleh perubahan ini dan caranya. Meskipun isi pesan bersifat opsional, isi pesan akan membantu orang lain yang perlu merujuk kembali ke perubahan tersebut. Pastikan untuk menyertakan catatan singkat tentang asumsi atau informasi latar belakang yang mungkin penting saat kontributor lain mengerjakan fitur ini.
Untuk membaca blog tentang deskripsi commit yang baik (dengan contoh), lihat Cara Menulis Pesan Commit Git.
Simpan commit.
ID perubahan unik serta nama dan email Anda, yang diberikan selama repo init
, akan otomatis ditambahkan ke pesan commit Anda.
Mengupload perubahan untuk ditinjau
Setelah Anda melakukan commit perubahan ke histori Git pribadi, upload perubahan tersebut ke Gerrit:
Jalankan perintah berikut untuk mengupload semua commit di semua project Anda:
repo upload
Semua perubahan di semua project disertakan dalam upload.
Anda akan diminta untuk menjalankan skrip hook.
Tekan a, lalu Enter.
Anda akan diminta untuk menyetujui upload:
Upload project frameworks/native/ to remote branch android16-release: branch BRANCH_NAME ( 1 commit, Wed Aug 7 09:32:33 2019 -0700): ff46b36d android codelab change to https://android-review.googlesource.com/ (y/N)?
Tekan y, lalu Enter untuk menyetujui upload.
Anda akan menerima pesan yang mirip dengan remote: SUCCESS
.
Minta peninjauan
Setelah upload berhasil, Repo akan memberi Anda link ke perubahan Anda di Gerrit. Klik link untuk melihat perubahan Anda di server peninjauan, menambahkan komentar, atau meminta peninjau tertentu untuk perubahan Anda. Semua perubahan pada kode harus ditinjau oleh pemilik kode yang sesuai.
Untuk meminta peninjauan:
Di Gerrit, klik SARANKAN PEMILIK:
Gambar 1. Menyarankan link pemilik di Gerrit.
Dialog peninjau akan muncul. Dialog ini berisi daftar pemilik kode yang dapat meninjau perubahan Anda.
Klik pemilik kode untuk menambahkannya ke peninjauan Anda.
Tombol KIRIM diaktifkan.
(Opsional) Ketik alamat email orang lain yang ingin Anda beri akses untuk meninjau perubahan Anda.
Klik KIRIM untuk mengirimkan perubahan agar ditinjau.
Pemilik kode akan meninjau perubahan kode Anda dan jika diterima, akan memilih perubahan tersebut dan menggabungkannya ke cabang pengembangan internal.
Menentukan status perubahan
Untuk menentukan status file dalam perubahan Anda, periksa ikon berikut di samping file dalam perubahan:
- (ikon centang ): Disetujui oleh pemilik kode
- (ikon silang): Tidak disetujui oleh pemilik kode
- (ikon clock ): Menunggu persetujuan pemilik kode
Gambar berikut menunjukkan ikon status ini diterapkan ke file dalam perubahan:
Gambar 2. Contoh file dengan ikon yang menunjukkan persetujuan pemilik kode.
Menyelesaikan masukan dan mengupload perubahan pengganti
Jika peninjau meminta modifikasi pada update Anda, Anda dapat mengubah commit dalam Git, yang menghasilkan patchset baru pada perubahan yang sama.
Untuk menyelesaikan masukan dan mengubah perubahan Anda:
Ikuti langkah 2-4 di Buat dan uji perubahan Anda.
Jalankan perintah berikut untuk mengubah perubahan Anda:
git add -A git commit --amend
Saat Anda mengupload perubahan yang telah diubah, perubahan tersebut akan menggantikan perubahan asli di Gerrit dan di histori Git lokal Anda.
Menyelesaikan konflik sinkronisasi
Jika perubahan lain dikirimkan ke hierarki sumber yang bertentangan dengan perubahan Anda, Anda akan menerima pesan bahwa Anda memiliki konflik. Untuk menyelesaikan konflik:
Pastikan Anda menggunakan kode terbaru:
repo sync .
Perintah
repo sync
mengambil update dari server sumber, lalu mencoba merebaseHEAD
Anda secara otomatis keHEAD
jarak jauh yang baru.Jika rebase otomatis gagal, lakukan rebase manual:
repo rebase .
Selesaikan konflik penggabungan. Jika tidak memiliki metode pilihan untuk menyelesaikan konflik penggabungan, Anda dapat menggunakan
git mergetool
untuk memperbaiki konflik antar-file secara manual.Setelah Anda berhasil memperbaiki file yang bertentangan, jalankan perintah ini untuk menerapkan commit baru:
git rebase --continue
Kirim perubahan
Setelah kiriman lolos dari proses peninjauan dan verifikasi, pemilik kode akan mengirimkan kode untuk Anda, baik di cabang tempat perubahan ditinjau atau ke cabang internal.
Setelah kiriman Anda digabungkan, Anda dapat membuka dasbor Android Continuous Integration untuk memantau kapan kiriman Anda diintegrasikan ke dalam tree.