Halaman ini menjelaskan proses lengkap pengiriman tambalan ke Proyek Sumber Terbuka Android (AOSP), termasuk cara meminta peninjauan dan melacak perubahan Anda dengan Gerrit .
Prasyarat
Untuk memulai, pastikan Anda telah melakukan hal berikut:
- Menginisialisasi lingkungan build Anda
- Mengunduh sumbernya
- Membuat kata sandi menggunakan pembuat kata sandi.
Sumber daya
- Untuk detail tentang Repo dan Git, lihat halaman Alat Kontrol Sumber .
- Untuk informasi tentang berbagai peran dalam komunitas Sumber Terbuka Android, lihat halaman Peran proyek .
- Untuk informasi lisensi tentang mengontribusikan kode ke platform Android, lihat halaman Lisensi .
Untuk kontributor
Otentikasi dengan server
Jika Anda berbagi alamat IP dengan pengguna lain, kuota dapat dipicu bahkan untuk pola penggunaan biasa. Ini dapat terjadi ketika, misalnya, banyak pengguna menyinkronkan klien baru dari alamat IP yang sama dalam waktu singkat. Akses yang diautentikasi menggunakan kuota terpisah untuk setiap pengguna, tanpa memandang alamat IP. Untuk membaca tentang mengaktifkan akses yang diautentikasi, lihat Menggunakan autentikasi .
Memulai cabang Repo
Untuk setiap perubahan yang ingin Anda lakukan, mulai cabang baru di dalam repositori Git yang relevan:
repo start NAME .
You can start several independent branches at the same time in the same
repository. The branch NAME
is local to your
workspace and isn't included either on Gerrit or in the final source tree.
Making your change
Modify the source files, and validate your changes.
Commit the changes to your local repository with these commands:
git add -A
git commit -s
Ubah deskripsi
- Baris 1: Judul
Berikan ringkasan satu baris ( maksimum 50 karakter)
Format ini digunakan oleh Git dan Gerrit untuk berbagai tampilan. Ini adalah bagian terpenting dan terpadat dari pesan komit Anda. Pertimbangkan untuk menggunakan prefiks untuk mendeskripsikan area yang Anda ubah, diikuti dengan deskripsi perubahan yang Anda buat dalam komit ini, seperti ini yang memiliki awalan
ui
:ui: Removes deprecated widget
- Baris 2: Kosong
Kosongkan baris ini, selalu.
- Baris 3: Tubuh
Tulis deskripsi yang lebih panjang, mulai dari baris ini.
Ini harus dibungkus dengan maksimal 72 karakter. Jelaskan masalah apa yang dipecahkan oleh perubahan, dan bagaimana caranya. Meskipun ini opsional saat mengimplementasikan fitur baru, akan sangat membantu orang lain nantinya jika mereka mengacu pada perubahan ini, terutama untuk debugging.
Sertakan catatan singkat tentang asumsi atau informasi latar belakang yang mungkin penting saat kontributor lain mengerjakan fitur ini.
ID perubahan unik dan nama serta email Anda, yang disediakan selama repo init
, secara otomatis ditambahkan ke pesan komit Anda.
Berikut adalah contoh pesan komit:
Line 1, Headline - a short description Line 3, Body - Add the detailed description of your patch here. Use as many lines as needed. You can write an overall description, then list specifics. I6e3c64e7a:Added a new widget. I60c539a8f:Fixed the spinning image.To read a blog about good commit descriptions (with examples), see How to Write a Git Commit Message by Chris Beams.
Uploading to Gerrit
After you commit your change to your personal history, upload it to Gerrit with this command:
repo upload
If you started multiple branches in the same repository, you're prompted to select which ones to upload.
After a successful upload, Repo provides you with the URL of a new page on Gerrit. Click the link that Repo gives you to view your patch on the review server, add comments, or request specific reviewers for your patch.
Requesting a review
After you've uploaded your changes to Gerrit, the patch must be reviewed
and approved by the appropriate code owners. Locate code owners in
OWNERS
files.
To find the appropriate code owners and add them as reviewers for your change, follow these steps.
-
Select the SUGGEST OWNERS link in the Gerrit UI to see a list of code owners for the files in your patch.
Figure 1. Suggest owners link in Gerrit Add code owners from the list as reviewers for your patch.
To determine the status of the files in your patch, check for the following icons next to the files in the patch.
- (checkmark icon): Approved by code owner
- (cross icon): Not approved by code owner
- (clock icon): Pending approval by code owner

Uploading a replacement patch
Suppose a reviewer looked at your patch and requested a small modification. You can amend your commit within Git, which results in a new patch on Gerrit that has the same change ID as the original.
git add -A
git commit --amend
Saat Anda mengunggah tambalan yang diubah, itu menggantikan yang asli baik di Gerrit maupun di riwayat Git lokal Anda.
Menyelesaikan konflik sinkronisasi
Jika tambalan lain dikirimkan ke pohon sumber yang bertentangan dengan milik Anda, rebase tambalan Anda di atas HEAD
baru dari repositori sumber. Untuk melakukannya, jalankan perintah ini:
repo sync
Perintah repo sync
mengambil pembaruan dari server sumber, lalu mencoba untuk secara otomatis mengubah posisi HEAD
Anda ke HEAD
jarak jauh yang baru.
Jika rebase otomatis tidak berhasil, lakukan rebase manual.
repo rebase
Alat lain untuk menangani konflik rebase adalah git mergetool
. Saat Anda berhasil menggabungkan file yang bertentangan, jalankan perintah ini:
git rebase --continue
Setelah rebase otomatis atau manual selesai, jalankan repo upload
untuk mengirimkan tambalan berbasis ulang Anda.
Setelah pengajuan disetujui
Setelah pengajuan berhasil melewati proses peninjauan dan verifikasi, Gerrit secara otomatis menggabungkan perubahan tersebut ke dalam repositori publik. Pengguna lain dapat menjalankan repo sync
untuk menarik pembaruan ke klien lokal masing-masing.
Untuk proyek hulu
Android memanfaatkan sejumlah proyek sumber terbuka lainnya, seperti kernel Linux dan WebKit, seperti yang dijelaskan dalam Manajemen Perangkat Lunak Android . Untuk sebagian besar proyek yang berada di bawah external/
, buat perubahan di upstream, lalu beri tahu pengelola Android tentang rilis upstream baru yang berisi perubahan Anda.
Anda juga dapat mengunggah tambalan yang menyebabkan rilis upstream baru dilacak. Perhatikan bahwa ini bisa menjadi perubahan yang sulit dilakukan jika proyek digunakan secara luas dalam Android, seperti sebagian besar perubahan yang lebih besar yang disebutkan di bawah, yang biasanya ditingkatkan di setiap rilis.
Satu kasus khusus yang menarik adalah Bionic. Sebagian besar kode berasal dari BSD, jadi kecuali jika perubahannya adalah kode yang baru di Bionic, harap lakukan perbaikan upstream, lalu tarik file baru dari BSD yang sesuai.
Kernel Android
Lakukan semua perubahan di hulu. Untuk panduan umum, ikuti Panduan Kontribusi Kernel Android dan halaman Kembangkan Kode Kernel untuk GKI .
ICU
Buat semua perubahan pada proyek ICU di external/icu
( icu4c/
dan icu4j/
) di Halaman Beranda ICU-TC . Lihat Mengirim Bug ICU dan Permintaan Fitur untuk lebih lanjut. Tambahkan label "android" ke semua permintaan Jira upstream.
CLDR
Sebagian besar data linguistik di ICU berasal dari proyek Unicode CLDR . Kirimkan semua permintaan upstream menurut Contributing to CLDR dan tambahkan label “android.”
LLVM/Dentang/Kompiler-rt
Buat semua perubahan pada proyek terkait LLVM ( external/clang
, external/compiler-rt
, external/llvm
) pada halaman LLVM Compiler Infrastructure .
mksh
Lakukan semua perubahan pada proyek MirBSD Korn Shell di external/mksh
baik dengan mengirim email ke miros-mksh
di domain mirbsd.org
(tidak perlu berlangganan untuk mengirim ke sana) atau di Launchpad .
BukaSSL
Lakukan semua perubahan pada proyek OpenSSL di external/openssl
pada halaman OpenSSL .
V8
Kirimkan semua perubahan ke proyek V8 di external/v8
di halaman masalah V8 . Lihat Berkontribusi ke V8 untuk detailnya.
WebKit
Lakukan semua perubahan pada proyek WebKit di external/webkit
pada halaman WebKit . Mulai proses dengan mengajukan bug WebKit . Dalam bug, gunakan bidang Android
untuk Platform dan OS hanya jika bug tersebut khusus untuk Android. Bug jauh lebih mungkin untuk menerima perhatian peninjau setelah perbaikan yang diusulkan ditambahkan dan tes disertakan. Lihat Menyumbang Kode ke WebKit untuk detailnya.
zlib
Buat semua perubahan pada proyek zlib di external/zlib
di halaman beranda zlib .