Android kaynak ağacı, Google tarafından barındırılan bir Git deposunda bulunur. Git deposu, kaynakta yapılan değişiklikler ve değişikliklerin ne zaman yapıldığı dahil olmak üzere Android kaynağı için meta verileri içerir. Bu sayfa, belirli bir Android kod satırı için kaynak ağacının nasıl indirileceğini açıklar.
Kaynağı indirmek yerine belirli bir cihazın fabrika görüntüsüyle başlamak için, bkz. Bir cihaz derlemesi seçme .
Bir Repo istemcisini başlatma
Repo Launcher'ı kurduktan sonra, istemcinizi Android kaynak deposuna erişecek şekilde ayarlayın:
Çalışan dosyalarınızı tutmak için boş bir dizin oluşturun. İstediğiniz ismi verin:
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
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 var. Bunun, mesaj alabileceğiniz canlı bir adres olduğundan emin olun. Burada sağladığınız ad, kod gönderimleriniz için atıflarda görünür.
git config --global user.name Your Name
git config --global user.email you@example.com
En son hata düzeltmeleriyle birlikte Repo'nun en son sürümünü almak için
repo init
çalıştırın. Android kaynağında bulunan çeşitli havuzların çalışma dizininizde nereye yerleştirildiğini belirten bildirim için bir URL belirtmelisiniz.repo init -u https://android.googlesource.com/platform/manifest
Ana dalı kontrol etmek için:
repo init -u https://android.googlesource.com/platform/manifest -b master
master dışında bir dalı teslim almak için
-b
ile belirtin. Dalların listesi için bkz. Kaynak kodu etiketleri ve yapıları .Python 2 için
Python 3 için
"
/usr/bin/env 'python' no such file or directory
" hata mesajı alırsanız, aşağıdaki çözümlerden birini kullanın:Ubuntu 20.04.2 LTS'niz yeni kurulmuş (yükseltilmiş) bir Linux sürümüyse:
sudo ln -s /usr/bin/python3 /usr/bin/python
Git sürüm 2.19 veya üzerini kullanıyorsanız
repo init
gerçekleştirirken--partial-clone
belirtebilirsiniz. Bu, Git'in kısmi klonlama yeteneğinden yararlanarak her şeyi indirmek yerine yalnızca Git nesnelerini gerektiğinde indirmek için kullanılı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 master --partial-clone --clone-filter=blob:limit=10M
Yalnızca Windows işletim sistemi için: Sembolik bağlantıların oluşturulamayacağını belirten ve
repo init
işleminin başarısız olmasına neden olan 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, çalışma dizininizde Repo'nun başlatıldığını belirten bir mesajla sona erer. İstemci dizininiz artık bildirim 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 gibi depolardan çalışma dizininize indirmek için şunu çalıştırın:
repo sync
Eşitlemeleri hızlandırmak için -c
(geçerli dal) ve -j threadcount
bayraklarını iletin:
repo sync -c -j8
Android kaynak dosyaları, çalışma dizininizde proje adları altında indirilir.
Çıktıyı 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, bir NAT güvenlik duvarının ötesinden kaynak havuzlara erişirken), kotalar normal kullanım kalıpları için bile tetiklenebilir (örneğin, birçok kullanıcı aynı IP adresinden yeni istemcileri bir kısa süre).
Bu durumda, IP adresinden bağımsız olarak her kullanıcı için ayrı bir kota kullanan kimliği doğrulanmış erişimi kullanabilirsiniz.
İlk olarak, şifre üreticisi ile bir şifre oluşturun ve şifre üreticisi sayfasındaki talimatları izleyin.
Ardından, bildirim URI'sini https://android.googlesource.com/a/platform/manifest
kullanarak kimliği doğrulanmış erişimi zorlayın. /a/
dizin önekinin zorunlu kimlik doğrulamasını nasıl tetiklediğine dikkat edin. Aşağıdaki komutla mevcut bir istemciyi zorunlu kimlik doğrulamasını 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 kullanması için 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 bağlantı sorunları yaşar ve indirmelerin ortasında takılır (genellikle nesneleri alırken ). TCP/IP yığınının ayarlarını yapmak ve paralel olmayan komutları kullanmak durumu iyileştirebilir. TCP ayarını değiştirmek için kök erişiminiz olmalıdır:
sudo sysctl -w net.ipv4.tcp_window_scaling=0
repo sync -j1
Yerel bir ayna kullanma
Birkaç istemci kullanırken, özellikle bant genişliğinin kıt olduğu durumlarda, tüm sunucu içeriğinin yerel bir aynasını oluşturmak ve istemcileri bu aynadan senkronize etmek (ağ erişimi gerektirmez) daha iyidir. Tam yansıtma için indirme, iki istemcinin indirmesinden daha küçüktür ve daha fazla bilgi içerir.
Bu yönergeler, aynanın /usr/local/aosp/mirror
içinde oluşturulduğunu varsayar. İlk olarak, 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 eşitlendiğinde, ondan yeni istemciler oluşturabilirsiniz. Mutlak bir yol belirtmeniz gerektiğini unutmayın:
mkdir -p /usr/local/aosp/master
cd /usr/local/aosp/master
repo init -u /usr/local/aosp/mirror/platform/manifest.git
repo sync
Son olarak, bir istemciyi sunucuyla eşitlemek için aynayı sunucuyla, ardından istemciyi aynayla eşitleyin:
cd /usr/local/aosp/mirror
repo sync
cd /usr/local/aosp/master
repo sync
Yansıtmayı 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 geçirmek de 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 anahtarları 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, aşağıdakilerle herhangi bir etiketi doğrulayabilirsiniz:
git tag -v TAG_NAME
Özel ikili dosyalar edinin
AOSP yalnızca saf kaynak kodundan kullanılamaz ve çalışması için donanım grafik hızlandırması gibi donanımla ilgili ek özel kitaplıklar gerektirir. İndirme bağlantıları için aşağıdaki bölümlere ve ek kaynaklar için Cihaz ikili dosyalarına bakın.
Özel 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 olmayan kaynak koduyla ek donanım özelliklerine erişim sağlar. AOSP ana dalını oluşturmak için bunun yerine İkili Dosya Önizleme'yi kullanın. Bir cihaz için ana dalı oluştururken, en son numaralı sürüm veya en son tarihe sahip ikili dosyaları kullanın.
Özel ikili dosyaları ayıklayın
Her ikili dosya grubu, sıkıştırılmış bir arşivde kendi kendine açılan bir komut dosyası olarak gelir. Her bir arşivi açın, kaynak ağacın kökünden dahil edilen kendi kendine açılan komut dosyasını çalıştırın, ardından ekteki lisans sözleşmesinin şartlarını kabul ettiğinizi onaylayın. İkili dosyalar ve bunlarla eşleşen makefile dosyaları, kaynak ağacın vendor/
hiyerarşisine kurulur.
Temizlemek
Yeni kurulan ikili dosyaların ayıklandıktan sonra düzgün bir şekilde dikkate alındığından emin olmak için, aşağıdakileri kullanarak önceki herhangi bir derlemenin mevcut çıktısını silin:
make clobber