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 Üstbilgileri'ni 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, size şirket adına katkıda bulunma yetkisi veren Kurumsal Katkıda Bulunan Lisans Sözleşmesi'ni imzaladığından emin olun.
Dal başlatma
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öreceksiniz. Ö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ışma olursa Senkronizasyon çakışmalarını çözme sayfasının 2-4. adımlarına bakın.
Değiştirmek istediğiniz kodu bulun. Kod bulmak için Android Code Search'i kullanabilirsiniz. AOSP kaynak kodunu, gerçekten kullandığınızda hazırlanan şekliyle görüntülemek için Android Code Search'ü 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 kullanıma sunma işaretlerini kullanmanız gerekip gerekmediğini belirleyin ve gerekirse bunları yeni kodunuz için 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 arkasındaki bağlamı 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ırlık 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ı, ardından bu kaydetmede yaptığınız değişikliğin açıklamasını ön eklerle belirtebilirsiniz. Örneğin, kullanıcı arayüzü değişikliğini içeren aşağıdaki örnekteki gibi:
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. 72 karakteri aşmayan uzun bir açıklama girin. Değişikliğin hangi sorunu nasıl çözdüğünü açıklayın. Gövde metni isteğe bağlı olsa da, değişiklikten haberdar olması gereken başka kişiler için faydalı olacaktır. Başka bir katkıda bulunan bu özellik üzerinde çalışırken önemli olabilecek varsayımlara veya arka plan bilgilerine kısa bir not ekleyin.
İyi kayıt açıklamalarıyla ilgili bir blog okumak için (örneklerle birlikte) Git Kaydetme Mesajı Nasıl Yazılır? bölümüne bakın.
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 için 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 sahiplere bağlantı öner.
İ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 bir Google çalışanının değişikliğinizi sizin adınıza göndermesi gerekir.
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, sizinkiyle çakışan başka değişiklikler gönderilirse çakışmalarınızın 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, kaynak sunucudan güncellemeleri alır ve ardındanHEAD
öğenizi yeni uzakHEAD
sistemine otomatik olarak yeniden temel etmeye çalışır.Otomatik yeniden temellendirme başarısız olursa manuel olarak yeniden temellendirme yapın:
repo rebase .
Birleştirme çakışmalarını çözün. 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üzelttiğinizde yeni kaydetmeleri 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.