Geçmişten en çok yüklenen işletim sisteminin geliştirilmesine yardımcı olabilirsiniz yer alıyor. Evet, Android olma yolculuğuna başlamak için buradasınız platform mühendisi olarak çalışıyorum.
Her ne kadar zorlu bir yol olsa da Android ekibi, yolculuğunda ona eşlik eder. Ekip her gün doğrudan pazarlama ekibiyle Android Açık Kaynak Projesi (AOSP) üzerinde çalışıyor.
Arkanıza yaslanın, bir terminali ateşleyin ve tarihe geçin.
Hedefler
Bu codelab'in amacı iki yönlüdür:
- Geliştirici iş akışının nasıl olduğuna dair biraz bilgi vermek için Örneğin, Android mühendisleri için platform (işletim sistemi) üzerinde çalışan Android mühendisleri vardır.
- Geri bildirim sağlamanızı teşvik edin geliştirici iş akışı ve Android araçları, belgeleri ve
Ön koşullar
Bu codelab'deki gereklilikler listesi, genel platformu (AOSP) geliştirme Bu codelab'i tamamlamak için aşağıdakileri ayarlayın:
- Tüm herkese açık gereksinimleri karşılayan fiziksel Linux iş istasyonu.
- Android kod tabanını düzenlemek için gereken kod deposu ve Git yapılandırması.
Çevre
Genellikle kullanıcılar doğrudan iş istasyonunda oluşturma ve geliştirme yapar. Çünkü
farklı terminallerde çalışıyor olabilir ve kullanılan komutların çoğu terminale özgüdür,
her terminal oturumunda bunları yeniden çalıştırmanız gerekir. Özellikle,
Bunlar, source build/envsetup.sh
ve lunch
komutlarını içerir.
İş istasyonunu ayarlama
- Gerekli paketleri bir iş istasyonu olabilir.
- Terminaldeyken Repo'yu yükleyin ve kimlik bilgilerini edinin. test edebilirsiniz.
Kodu başlatma ve senkronize etme
Ana dizininize gidin:
cd ~
İçinde yerel bir çalışma alt dizini oluşturun:
mkdir aosp
İlgili dizine gidin:
cd aosp
AOSP deposu kaynak kodu ana dalını (varsayılan) başlatın:
repo init -u https://android.googlesource.com/platform/manifest
Git kimlik bilgilerinizi (ad, e-posta adresi) girin veya kabul edin.
Kaynak kodu senkronize edin:
repo sync -j8
İlk senkronizasyonlar bir saat veya daha uzun sürebilir.
Her depo ödemesi bir manifest dosyası ile temsil edilir. Tek seferde 1'den fazla depo ödemesi yapılmasına izin verilir. Bunun için farklı dizinlerde bulunabilir. Ancak her bir önizleme ve derleme işleminin yaklaşık 300 GB'lık bir kullanım alanı kapladığını (ve bu alanın giderek arttığını) unutmayın. Bu nedenle, kendinizi 2 depo önizlemesiyle sınırlayın veya sisteminizi ikincil bir sürücüyle destekleyin.
Kodu oluşturma
Android'i derlemek için bir hedef seçmelisiniz
lunch
komutuyla derlemek için "device" türünü kullanın. Hedef, cihaz permütasyonudur.
tercih edebilirsiniz.
aosp_cf_x86_64_phone-userdebug
cihaz hedefi şunları yapmanıza olanak tanır:
Bu kullanıcı için Cuttlefish'in sanal Android cihazını
fiziksel bir cihaz olmadan test etmek.
Bunun yerine fiziksel bir cihaz oluşturup güncellemek için başka bir hedef seçin ve yanıp sönen cihazlara ilişkin talimatlara bakın.
Android cihaz oluşturmak için ortamınızı şu komutu çalıştırarak ayarlayın: kaynak kodundan ödeme işleminizin kök dizininden aşağıdaki komutu çalıştırın:
source build/envsetup.sh
Derleme hedefini aşağıdakiler gibi bir Öğle yemeği komutuna geçirin:
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
Kodu istediğiniz yerde oluşturun ödeme yöntemi:
m
İlk derlemenin birkaç saat sürmesini bekleyebilirsiniz. Sonraki derlemeler çok daha kısa sürer.
Mürekkep Balığı'nı başlat
Cuttlefish, derlemelerinizi test etmek için kullanılan Android emülatörüdür.
Mürekkep balığı'nı daha önce hiç yüklemediyseniz, Mürekkep balığı bağımlılıkları. Bir terminal penceresinde aşağıdaki komutları çalıştırın: ana Debian paketlerini indirin, derleyin ve yükleyin:
sudo apt install -y git devscripts equivs config-package-dev debhelper-compat golang curl
git clone https://github.com/google/android-cuttlefish
cd android-cuttlefish
for dir in base frontend; do pushd $dir # Install build dependencies sudo mk-build-deps -i dpkg-buildpackage -uc -us popd done
sudo dpkg -i ./cuttlefish-base_*_*64.deb || sudo apt-get install -f
sudo dpkg -i ./cuttlefish-user_*_*64.deb || sudo apt-get install -f
sudo usermod -aG kvm,cvdnetwork,render $USER
sudo reboot
Yeniden başlatma, ek çekirdek modüllerinin yüklenmesini tetikler ve
udev
kurallar.Mürekkep balığı'nı başlatın:
launch_cvd --daemon
Şurada
https://localhost:8443
adresine giderek Mürekkep balığı cihazına bağlanın: tarayıcınızda Google Chrome'u açın. Android destekli video akışıyla karşılıyorsunuz cihazınızı kullanabilirsiniz.
Değişiklik yapın
Bu örnek changelist'i izleyerek kaynak kodu güncelleyin.
Ödeme işleminin kök dizininden (
aosp/
dizini)frameworks/native
Git projesine gidin:cd frameworks/native
Şu komutla geçici bir proje başlatın:
repo start <some-name> .
SurfaceFlinger.cpp
öğesini düzenleyerek değişiklik listesinden güncellemeleri ekleyin. şu konum:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
Bu satırı bul:
void SurfaceFlinger::updateColorMatrixLocked() {
Aşağıdaki iki satırı updateColorMatrixLocked() işlevinin başına ekleyin:
mClientColorMatrix = mat4(vec4{1.0f, 0.0f, 0.0f, 0.0f}, vec4{0.0f, -1.0f, 0.0f, 0.0f}, vec4{0.0f, 0.0f, -1.0f, 0.0f}, vec4{0.0f, 1.0f, 1.0f, 1.0f});
Kodu oluşturun:
m
Cihazdaki derlemeyi güncelleyin:
adb root
adb remount
adb sync
adb reboot
Seçtiğiniz cihazda gösterilene benzer bir renk değişikliği gördüğünüzü doğrulayın (Şekil 1'de verilmiştir).
Şekil 1. Başarılı renk değişikliğinden sonra ekran görünümü
Kodunuzu test etme
Codelab'in bu bölümünde, kaynak ağacındaki örnek bir test kullanılmaktadır ve başarısız oluyor. Bu öğede, kontrol etmek için Atest yerel olarak çalıştırma ve kodu test etme.
Testi kullanmak için aşağıdaki talimatları uygulayın:
Çalıştırma:
atest DevCodelabTest
Test başarısız olur. Başarısız testin yığın izlemeyi (stack trace) inceleyin:
STACKTRACE: java.lang.AssertionError at org.junit.Assert.fail(Assert.java:87) at org.junit.Assert.assertTrue(Assert.java:42) at org.junit.Assert.assertTrue(Assert.java:53) at android.test.example.devcodelab.DevCodelabTest.testHelloWorld(DevCodelabTest.java:29)
Sonra buraya bakın
platform_testing/tests/example/devcodelab
Dosyanın düzenlenmesi için testin adını
android.test.example.devcodelab.DevCodelabTest
ve.
değerini şununla değiştirin:/
ise şu sonucu almak için:src/android/test/example/devcodelab/DevCodelabTest.java
Ardından düzenleme
platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
değiştirin
Assert.assertTrue(false)
ile
Assert.assertTrue(true)
Sorunu çözdüğünüzü doğrulamak için testi tekrar çalıştırın:
atest DevCodelabTest
Kodunuzu incelenmek üzere yükleyin
Depo, git clone
gibi komutları çalışmak için paketleyerek Git kullanımını basitleştirir
aynı anda birden fazla Git deposunda (veya projede) kullanılabilir.
Git ve Repo'ya genel bakış için Source Control Tools (Kaynak Denetim Araçları) Android kaynak koduyla çalışma hakkındaki dokümanların tam bağlantıları AOSP deposuna göz atın için Git projelerinin tam listesi ve bağımsız projelerin (yolların) her bir proje için gerekli olan dalları belirlemektir.
Git'te projelerinizin kod incelemesi için Gerrit'i kullanırsınız. web tabanlı kod inceleme sistemi olarak düşünebilirsiniz.
Değişikliklerinizi
frameworks/native
projesinde yaptığınız varsayılarak, yüklemek için aşağıdaki komutları çalıştırın:cd frameworks/native
repo start codelab .
git add .
git commit
Taahhüt mesajınız için aşağıdakileri girin:
Android codelab change Test: manual atest
Değişikliğinizi yükleyin:
repo upload
Başarılı olursanız şuna benzer bir mesaj görürsünüz:
Upload project frameworks/native/ to remote branch main:
branch codelab ( 1 commit, Wed Aug 7 09:32:33 2019 -0700):
ff46b36d android codelab change
to https://android-review.googlesource.com/ (y/N)? y
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432 android codelab change [NEW]
remote:
To https://android-review.googlesource.com/platform/frameworks/native
* [new branch] codelab -> refs/for/main
Değişikliklerinizi Gerrit'te görüntüleme
Terminalde basılı olan ve şuna benzeyen bağlantıya gidin:
https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432
Böylece Android platform geliştirme için başlangıç codelab'i tamamlanmış olur. Görüntüleyin Yama gönderme Android'i geliştirmeyle ilgili tüm ayrıntılar için bu sitede bulabilirsiniz.
Değişikliğinizi geri alma
Normalde, son test aşamasında ve incelenip onaylandıktan sonra değişikliğinizi Gerrit'i kullanıp depoya ekleyin.
Bunun yerine, bu codelab'de yararlanmak için Gerrit dilinde terk edin.
Ardından frameworks/native
projesindeki ilişkili geçici daldan vazgeçin
dizini (veya alt dizinleri):
repo abandon codelab .
Test dosyasında yaptığınız değişiklikleri geri almayı da unutmayın. Değişikliği repo start
, git commit
ve repo upload
yapmadığınız için dosyayı sıfırlayabilirsiniz. aosp/platform_testing directory
içinde olduğunuzu varsayarsak
aşağıdaki adımları uygulayarak dosyayı sıfırlayın:
git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
git checkout .
Böylece işleminiz tamamlanmış olur. Harika!
Yardım alma
Bu codelab sırasında hatalarla karşılaşırsanız bunları Sorun İzleyici bağlantısını tıklayabilirsiniz. Soruları şuraya gönderin: android-bina grubu.