Bu sayfada, inceleme isteğinde bulunma ve değişikliklerinizi takip etme dahil olmak üzere Android Açık Kaynak Projesi'ne (AOSP) kod değişikliği gönderme sürecinin tamamı açıklanmaktadır.
AOSP, Git kullanan projeler için web tabanlı bir kod inceleme sistemi olan Gerrit'i kullanır.
Katkıda bulunanların lisans sözleşmelerini imzalama
AOSP için kod değişiklikleri yapmadan önce Katkıda Bulunan Lisans Sözleşmeleri ve Başlıkları'nı okumanız ve aşağıdaki sözleşmelerden birini imzalamanız gerekir:
- Yalnızca kendi adınıza katkıda bulunan bir bireysel katkıda bulunan olarak Bireysel Katkıda Bulunan Lisans Sözleşmesi'ni imzalayın.
- Bir şirkette çalışan bir çalışan olarak, şirketinizin sizin adınıza katkıda bulunmanıza yetki veren Kurumsal Katkıda Bulunan Lisans Sözleşmesi'ni imzaladığından emin olun.
Dal oluşturma
Yapmak istediğiniz her kod değişikliği için aşağıdaki adımları uygulayın:
İlgili Git deposunda yeni bir dal başlatın. Dal, orijinal dosyaların kopyası değil, belirli bir kayda işaretçidir. Bu sayede yerel dallar oluşturmak ve bunlar arasında geçiş yapmak kolay bir işlem haline gelir. Dalları kullanarak değişiklikleri birbirinden ayırt edebilirsiniz. Şube başlatmak için şu komutu çalıştırın:
repo start BRANCH_NAME
Aynı depoda aynı anda birden fazla bağımsız dal başlatabilirsiniz. BRANCH_NAME şubesi, çalışma alanınıza yereldir ve Gerrit'e veya nihai kaynak ağacına dahil edilmemiştir. Dallar, bulunduğunuz projeye de özeldir. Bu nedenle, aynı değişikliğin bir parçası olarak farklı projelerdeki dosyaları değiştirmeniz gerekirse dosya değiştirdiğiniz her projede bir dalınız olmalıdır.
(isteğe bağlı) Şubenin oluşturulduğunu doğrulayın:
repo status .
Yeni oluşturduğunuz dalı görürsünüz. Örnek:
project frameworks/native/ branch mynewbranch
Değişiklik yapın ve test edin
Değişiklik yapmak ve test etmek için aşağıdaki adımları uygulayın:
En güncel kod tabanıyla çalıştığınızdan emin olmak için kod tabanının tamamını senkronize edin:
repo sync
Senkronizasyon sırasında herhangi bir çakışmayla karşılaşırsanız Senkronizasyon çakışmalarını çözme başlıklı makalenin 2-4. adımlarına bakın.
Değiştirilecek kodu bulun. Kod bulmak için Android Code Search'i kullanabilirsiniz. AOSP kaynak kodunu, gerçekten kullanırken düzenlendiği şekilde görüntülemek için Android Code Search'i kullanabilirsiniz. Daha fazla bilgi için Code Search'i kullanmaya başlama başlıklı makaleyi inceleyin. Android kod aramasında
main
dalındaki tüm kodu görüntülemek içinhttps://cs.android.com/android/platform/superproject/main
bölümüne gidin.Kaynak dosyaları değiştirme veya ekleme Yapılan değişiklikler için:
Özellik lansmanı işaretlerini kullanmanız gerekip gerekmediğini belirleyin ve gerekiyorsa yeni kodunuz için bunları uygulayın.
Lisans üstbilgilerini ekleme başlıklı makaledeki en iyi uygulamalardan yararlanın.
Java kodu için katkıda bulunanlar için AOSP Java kod stilini uygulayın.
AOSP'nin bazı bölümleri Kotlin (
.kt
) ile yazılmıştır ve platformun Kotlin ile yazılmış bölümlerinde Kotlin'i kullanabilirsiniz. Android'de Kotlin hakkında daha fazla bilgi için Android geliştirici Kotlin stil kılavuzuna ve Kotlin-Java birlikte çalışabilirlik kılavuzuna bakın. Kotlin hakkında daha fazla bilgi için Kotlin dili sitesine göz atın.API yazarken Android API Yönergeleri'ni uygulayın. Android'in API kararlarının bağlamını görmek için bu yönergeleri kullanın. Platform API'lerine yapılan eklemeler ve değişiklikler Metalava tarafından doğrulanır.
Değişikliklerinizi aşamalandırıp kaydetme
Commit, Git'teki düzeltme denetiminin temel birimidir ve projenin tamamının dizin yapısı ve dosya içeriklerinin anlık görüntüsünden oluşur. Değişikliklerinizi kaydetmek için aşağıdaki adımları uygulayın:
Git, varsayılan olarak yaptığınız değişiklikleri kaydeder ancak izlemez. Git'e değişikliklerinizi izlemesini bildirmek için bu değişiklikleri bir kayda dahil edilmek üzere işaretlemeniz veya aşamaya almanız gerekir. Değişikliği aşamalı olarak uygulamak için şu komutu çalıştırın:
git add -A
Bu komut, dosyalarda yaptığınız değişiklikleri izler.
Dosyaları hazırlama alanından alıp yerel veritabanınızda kaydetme veya depolama:
git commit -s
Varsayılan olarak bir metin düzenleyici açılır ve bir taahhüt mesajı girmeniz istenir.
Aşağıdaki biçimde bir gönderme mesajı sağlayın:
1. satır: Başlık. Değişikliğin tek satırlık bir özetini girin (en fazla 50 karakter). Değiştirdiğiniz alanı tanımlamak için ön eklerin ardından bu kayda yaptığınız değişikliğin açıklamasını kullanabilirsiniz. Kullanıcı arayüzü değişikliği içeren aşağıdaki örnekte bu yöntem gösterilmektedir:
ui: Removes deprecated widget
2. satır: Boş satır. Başlığın ardından boş bir satır ekleyin.
3. satır: Gövde. Maksimum 72 karakterde sabit satır başı olacak şekilde uzun bir açıklama girin. Değişikliğin hangi sorunu nasıl çözdüğünü açıklayın. Gövde isteğe bağlı olsa da değişikliği tekrar incelemesi gereken diğer kullanıcılar için faydalıdır. Başka bir katkıda bulunan bu özellik üzerinde çalışırken önemli olabilecek varsayımlara veya arka plan bilgilerine dair kısa bir not eklediğinizden emin olun.
İyi commit açıklamaları hakkında (örneklerle) bir blog okumak için Git Commit Mesajı Yazma başlıklı makaleyi inceleyin.
Taahhüt işlemini kaydedin.
Benzersiz bir değişiklik kimliği ve repo init
sırasında sağladığınız adınız ile e-posta adresiniz, gönderme mesajınıza otomatik olarak eklenir.
Değişikliği inceleme için yükleme
Değişikliklerinizi kişisel Git geçmişinize kaydettikten sonra Gerrit'e yükleyin:
Tüm projelerinizin tüm gönderimlerini yüklemek için aşağıdaki komutu çalıştırın:
repo upload
Tüm projelerdeki tüm değişiklikler yüklemeye dahil edilir.
Kanca komut dosyalarını çalıştırmanız istenir.
a ve ardından Enter tuşlarına basın.
Yüklemeyi onaylamanız istenir:
Upload project frameworks/native/ to remote branch main: 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)?
Yüklemeyi onaylamak için y ve ardından Enter tuşlarına basın.
remote: SUCCESS
'e benzer bir mesaj alırsınız.
İnceleme isteğinde bulunun
Yükleme işlemi başarıyla tamamlandıktan sonra Repo, Gerrit'teki değişikliklerinizin bağlantısını sağlar. Değişikliklerinizi inceleme sunucusunda görüntülemek, yorum eklemek veya değişikliğiniz için belirli incelemeciler istemek üzere bağlantıyı tıklayın. Koddaki tüm değişiklikler, ilgili kod sahipleri tarafından incelenmelidir. İnceleme isteğinde bulunmak için:
Gerrit'te SAHİP ÖNERİ'yi tıklayın:
Şekil 1. Gerrit'te sahip öneri bağlantısı.
İnceleme uzmanı iletişim kutusu görünür. Bu iletişim kutusu, değişikliğinizi inceleyebilecek kod sahiplerinin listesini içerir.
Bir kod sahibini tıklayarak yorumunuza ekleyin.
GÖNDER düğmesi etkinleştirilir.
(İsteğe bağlı) Değişikliklerinizi incelemesini istediğiniz diğer kişilerin e-posta adresini yazın.
(İsteğe bağlı) Onay aldıktan sonra değişikliği otomatik olarak göndermek için Otomatik gönder'in yanındaki +1 simgesini tıklayın. Bu düğmeyi tıklamazsanız değişikliğiniz bir Google çalışanı tarafından sizin adınıza gönderilmelidir.
Değişikliği incelemeye göndermek için GÖNDER'i tıklayın.
Kod sahipleri, kod değişikliklerinizi inceler ve değişiklikleri çözmeniz veya onaylamanız için geri bildirim sağlar.
Değişikliğin durumunu belirleme
Değişiklikteki dosyaların durumunu belirlemek için değişiklikteki dosyaların yanındaki aşağıdaki simgeleri kontrol edin:
- (onay işareti simgesi): Kod sahibi tarafından onaylandı
- (haç simgesi): kod sahibi tarafından onaylanmadı
- (saat simgesi): Kod sahibinin onayı bekleniyor
Aşağıdaki şekilde, bir değişiklikteki dosyalara uygulanan bu durum simgeleri gösterilmektedir:
Şekil 2. Kod sahibinin onayını gösteren simgelerin bulunduğu dosyalar örneği.
Geri bildirimi çözme ve değişim değişikliği yükleme
Bir inceleme uzmanı, güncellemenizde değişiklik yapılmasını isterse Git'te gönderiminizi düzeltebilirsiniz. Bu işlem, aynı değişiklik için yeni bir yama grubu oluşturur.
Geri bildirimi çözmek ve değişikliğinizi düzeltmek için:
Değişikliğinizi yapın ve test edin başlıklı makaledeki 2-4. adımları uygulayın.
Değişikliklerinizi düzeltmek için aşağıdaki komutları çalıştırın:
git add -A git commit --amend
Düzeltilen değişikliği yüklediğinizde, bu değişiklik hem Gerrit'te hem de yerel Git geçmişinizde orijinal değişikliğin yerini alır.
Senkronizasyon çakışmalarını çözme
Kaynak ağacına sizinkilerle çakışan başka değişiklikler gönderilirse çakışmalar olduğunu belirten bir mesaj alırsınız. Çakışmaları çözmek için:
En güncel kodla çalıştığınızdan emin olun:
repo sync .
repo sync
komutu, güncellemeleri kaynak sunucudan getirir ve ardındanHEAD
dosyanızı yeni uzakHEAD
dosyasına otomatik olarak yeniden temellendirmeyi dener.Otomatik yeniden temellendirme başarısız olursa manuel olarak yeniden temellendirme yapın:
repo rebase .
Birleştirme çakışmalarını çözme Birleştirme çakışmalarını çözmek için tercih ettiğiniz bir yöntem yoksa dosyalar arasındaki çakışmaları manuel olarak düzeltmek için
git mergetool
'i kullanabilirsiniz.Çakışan dosyaları başarıyla düzelttikten sonra yeni taahhütleri uygulamak için şu komutu çalıştırın:
git rebase --continue
Değişikliği gönder
Gönderim, inceleme ve doğrulama sürecinden geçtikten sonra bir Google inceleme uzmanı kodu sizin için göndermelidir. Diğer kullanıcılar, güncellemeyi kendi yerel istemcilerine çekmek için repo sync
komutunu çalıştırabilir.
Gönderiminiz birleştirildikten sonra, gönderimlerinizin ağaca ne zaman entegre edildiğini izlemek için Android Sürekli Entegrasyon kontrol panelini ziyaret edebilirsiniz.