Kaynağın indirilmesi

Android kaynak ağacı, Google tarafından barındırılan Git deposunda bulunur. Git deposu, kaynakta yapılan değişiklikler ve değişikliklerin ne zaman yapıldığı dahil olmak üzere, Android kaynağına ilişkin meta verileri içerir. Bu sayfada belirli bir Android kod satırı için kaynak ağacının nasıl indirileceği açıklanmaktadır.

Kaynağı indirmek yerine belirli bir cihazın fabrika görüntüsüyle başlamak için bkz . Cihaz yapısı seçme .

Repo istemcisinin başlatılması

Repo Başlatıcıyı yükledikten sonra istemcinizi Android kaynak deposuna erişecek şekilde ayarlayın:

  1. Çalışma dosyalarınızı tutmak için boş bir dizin oluşturun. Ona istediğiniz adı verin:

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
    
  2. Git'i gerçek adınız ve e-posta adresinizle yapılandırın. Gerrit kod inceleme aracını kullanmak için kayıtlı bir Google hesabına bağlı bir e-posta adresine ihtiyacınız vardır. Bunun mesaj alabileceğiniz canlı bir adres olduğundan emin olun. Burada sağladığınız ad, kod gönderimlerinize ilişkin atıflarda görünür.

    git config --global user.name Your Name
    git config --global user.email you@example.com
    
  3. En son hata düzeltmelerini içeren Repo'nun en son sürümünü edinmek için repo init çalıştırın. Manifest için, Android kaynağında yer alan çeşitli depoların çalışma dizininizde nereye yerleştirildiğini belirten bir URL belirtmeniz gerekir.

    repo init -u https://android.googlesource.com/platform/manifest
    

    Ana şubeyi kontrol etmek için:

    repo init -u https://android.googlesource.com/platform/manifest -b main
    

    main dışında bir dalı kontrol etmek için onu -b ile belirtin. Dalların listesi için bkz. Kaynak kodu etiketleri ve yapıları .

    Python2 için

    Python3 için

    " /usr/bin/env 'python' no such file or directory " hata mesajını alırsanız aşağıdaki çözümlerden birini kullanın:

    Ubuntu 20.04.2 LTS'niz yeni yüklenmiş (yükseltilmiş) bir Linux sürümüyse:

    sudo ln -s /usr/bin/python3 /usr/bin/python

    Git sürüm 2.19 veya daha üstünü kullanıyorsanız, repo init gerçekleştirirken --partial-clone belirtebilirsiniz. Bu, Git'in her şeyi indirmek yerine yalnızca gerektiğinde Git nesnelerini indirmek için kısmi klonlama yeteneğinden yararlanır. Kısmi klonların kullanılması birçok işlemin sunucuyla iletişim kurması gerektiği anlamına geldiğinden, geliştiriciyseniz ve düşük gecikmeli bir ağ kullanıyorsanız aşağıdakileri kullanın:

    repo init -u https://android.googlesource.com/platform/manifest -b main --partial-clone --clone-filter=blob:limit=10M
    

    Yalnızca Windows işletim sistemi için: repo init başarısız olmasına neden olan sembolik bağlantıların oluşturulamadığını belirten bir hata mesajı alırsanız bunları oluşturmak veya desteklerini etkinleştirmek için GitHub Sembolik Bağlantılar belgelerine bakın. Yönetici olmayanlar için Yönetici olmayanların sembolik bağlantılar oluşturmasına izin verme bölümüne bakın.

Başarılı bir başlatma, Repo'nun çalışma dizininizde başlatıldığını belirten bir mesajla sona erer. İstemci dizininiz artık manifest gibi dosyaların tutulduğu bir .repo dizini içeriyor.

Android kaynak ağacını indirme

Android kaynak ağacını, varsayılan bildirimde belirtildiği şekilde depolardan çalışma dizininize indirmek için şunu çalıştırın:

repo sync

Senkronizasyonları hızlandırmak için -c (geçerli dal) ve -j threadcount işaretlerini iletin:

repo sync -c -j8

Android kaynak dosyaları çalışma dizininizde proje adlarıyla indirilir.

Çıkışı bastırmak için -q (sessiz) bayrağını iletin. Tüm seçenekler için Repo Komut Referansına bakın.

Kimlik doğrulamayı kullanma

Varsayılan olarak Android kaynak koduna erişim anonimdir. Sunucuları aşırı kullanıma karşı korumak için her IP adresi bir kota ile ilişkilendirilir.

Bir IP adresini diğer kullanıcılarla paylaşırken (örneğin, NAT güvenlik duvarının ötesinden kaynak depolarına erişirken), kotalar normal kullanım kalıpları için bile tetiklenebilir (örneğin, birçok kullanıcı yeni istemcileri aynı IP adresinden senkronize ederse). kısa süre).

Bu durumda, IP adresinden bağımsız olarak her kullanıcı için ayrı bir kota kullanan kimlik doğrulamalı erişimi kullanabilirsiniz.

Öncelikle şifre oluşturucuyla bir şifre oluşturun ve şifre oluşturucu sayfasındaki talimatları izleyin.

Daha sonra, https://android.googlesource.com/a/platform/manifest manifest URI'sini kullanarak kimlik doğrulamalı erişimi zorlayın. /a/ dizin önekinin zorunlu kimlik doğrulamayı nasıl tetiklediğine dikkat edin. Aşağıdaki komutla mevcut bir istemciyi zorunlu kimlik doğrulamayı kullanacak şekilde dönüştürebilirsiniz:

repo init -u https://android.googlesource.com/a/platform/manifest

Ağ sorunlarını giderme

Bir proxy arkasından indirirken (bazı kurumsal ortamlarda yaygın olan), Repo'nun kullanacağı proxy'yi açıkça belirtmeniz gerekebilir:

export HTTP_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>
export HTTPS_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>

Daha nadiren Linux istemcileri, indirme işleminin ortasında (genellikle nesneleri alırken ) takılıp kalan bağlantı sorunlarıyla karşılaşır. TCP/IP yığınının ayarlarını düzenlemek ve paralel olmayan komutları kullanmak durumu iyileştirebilir. TCP ayarını değiştirmek için root erişiminizin olması gerekir:

sudo sysctl -w net.ipv4.tcp_window_scaling=0
repo sync -j1

Yerel ayna kullanma

Birden fazla istemci kullanırken, tüm sunucu içeriğinin yerel bir yansımasını oluşturabilir ve istemcileri bu yansımadan senkronize edebilirsiniz (bu, ağ erişimi gerektirmez).

Bu talimatlar aynanın /usr/local/aosp/mirror konumunda oluşturulduğunu varsayar. İlk önce aynanın kendisini oluşturun ve senkronize edin. Yalnızca yeni bir istemci oluştururken belirtebileceğiniz --mirror bayrağına dikkat edin:

mkdir -p /usr/local/aosp/mirror
cd /usr/local/aosp/mirror
repo init -u https://android.googlesource.com/mirror/manifest --mirror
repo sync

Ayna senkronize edildiğinde ondan yeni müşteriler oluşturabilirsiniz. Mutlak bir yol belirtmeniz gerektiğini unutmayın:

mkdir -p /usr/local/aosp/main
cd /usr/local/aosp/main
repo init -u /usr/local/aosp/mirror/platform/manifest.git
repo sync

Son olarak, bir istemciyi sunucuyla senkronize etmek için aynayı sunucuyla, ardından istemciyi aynayla senkronize edin:

cd /usr/local/aosp/mirror
repo sync
cd /usr/local/aosp/main
repo sync

Aynayı bir LAN sunucusunda depolamak ve ona NFS, SSH veya Git üzerinden erişmek mümkündür. Çıkarılabilir bir sürücüde saklamak ve bu sürücüyü kullanıcılar veya makineler arasında aktarmak da mümkündür.

Git etiketlerini doğrulama

Aşağıdaki genel anahtarı GnuPG anahtar veritabanınıza yükleyin. Anahtar, sürümleri temsil eden açıklamalı etiketleri imzalamak için kullanılır.

gpg --import

Aşağıdaki anahtarı kopyalayıp yapıştırın, ardından girişi sonlandırmak ve tuşları işlemek için EOF ( Ctrl-D ) yazın.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)

mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----

Anahtarları içe aktardıktan sonra herhangi bir etiketi aşağıdakilerle doğrulayabilirsiniz:

git tag -v TAG_NAME

Tescilli ikili dosyalar edinin

AOSP yalnızca saf kaynak kodundan kullanılamaz ve donanım grafik hızlandırma gibi donanımla ilgili ek özel kitaplıkların çalıştırılmasını gerektirir. Ek kaynaklar için indirme bağlantıları ve Cihaz ikili dosyaları için aşağıdaki bölümlere bakın.

Tescilli ikili dosyaları indirin

Etiketli AOSP sürüm dallarını çalıştıran desteklenen cihazlar için resmi ikili dosyaları Google'ın sürücülerinden indirebilirsiniz. Bu ikili dosyalar, açık kaynak olmayan kodla ek donanım özelliklerine erişim sağlar. AOSP ana dalını oluşturmak için bunun yerine İkili Dosya Önizlemesini kullanın. Bir cihaz için ana dalı oluştururken, en yeni numaralı sürüme veya en yeni tarihe sahip ikili dosyaları kullanın.

Tescilli ikili dosyaları çıkarın

Her ikili dosya kümesi, sıkıştırılmış bir arşivde kendi kendine açılan bir komut dosyası olarak gelir. Her arşivi açın, dahil edilen kendi kendine açılan komut dosyasını kaynak ağacın kökünden çalıştırın ve ardından ekteki lisans sözleşmesinin şartlarını kabul ettiğinizi onaylayın. İkili dosyalar ve bunların eşleşen yapım dosyaları, kaynak ağacın vendor/ hiyerarşisine yüklenir.

Temizlemek

Yeni yüklenen ikili dosyaların çıkarıldıktan sonra düzgün bir şekilde dikkate alındığından emin olmak için, aşağıdakileri kullanarak önceki herhangi bir yapının mevcut çıktısını silin:

make clobber