Android geliştirici kod laboratuvarı

Dünya tarihindeki en yaygın şekilde kurulu işletim sisteminin geliştirilmesine yardımcı olabilirsiniz. Evet, bir Android platform mühendisi olma yolculuğuna çıkmak için buradasınız.

Yol zorlu olsa da Android ekibi, her sürümde yolculuğunuzu basitleştirmeye çalışıyor. Ekip, Android Açık Kaynak Projesi'nde (AOSP) doğrudan çalışarak her gün iyileştirmeler yapıyor.

Arkanıza yaslanın, bir terminali çalıştırın ve tarih yazalım.

Hedefler

Bu codelab'in misyonu iki yönlüdür:

  1. Platformda (işletim sistemi) çalışan Android mühendisleri için geliştirici iş akışının nasıl olduğuna dair size küçük bir fikir vermek için.
  2. Android'in araçları, belgeleri ve geliştirici iş akışı hakkında geri bildirimde bulunmanız için sizi teşvik ediyoruz.

Önkoşullar

Bu codelab için gereksinimlerin listesi, genel platform ( AOSP ) geliştirme gereksinimlerinden türetilmiştir. Bu codelab'i almak için aşağıdakileri ayarlayın:

Çevre

Tipik olarak, kullanıcılar doğrudan iş istasyonunda derler ve geliştirir. Çeşitli uçbirimlerde çalışıyor olabileceğiniz ve kullanılan komutların çoğu uçbirime özel olduğundan, bunları her uçbirim oturumunda yeniden çalıştırmanız gerekecektir. Spesifik olarak, bunlar source build/envsetup.sh ve lunch komutlarını içerir.

İş istasyonunu kur

  1. İş istasyonunuza gerekli paketleri kurun .
  2. Hala bir terminaldeyken, Repo'yu kurun ve tüm Git havuzlarının kimlik bilgilerini alın.

Kodu başlat ve senkronize et

  1. Ana dizininize gidin:

    cd ~
    
  2. İçinde yerel bir çalışma alt dizini oluşturun:

    mkdir aosp
    
  3. Dizine gidin:

    cd aosp
    
  4. AOSP deposu kaynak kodu ana dalını başlatın (varsayılan):

    repo init -u https://android.googlesource.com/platform/manifest
    
  5. Git kimlik bilgilerinizi (ad, e-posta adresi) girin veya kabul edin.

  6. Kaynak kodunu senkronize edin:

    repo sync -j8
    

İlk eşitlemeler bir saat veya daha uzun sürebilir.

Her repo teslim alma, bir bildirim dosyasıyla temsil edilir. Farklı dizinlerde bulundukları sürece, bir seferde 1'den fazla repo kontrolüne izin verilebilir. Ancak, her kontrol ve derlemenin kabaca 300 GB kullanıma (ve büyümeye) karşılık geldiğini unutmayın, bu nedenle ya kendinizi 2 depo çıkışıyla sınırlayın ya da sisteminizi ikincil bir sürücüyle artırın.

kodu oluştur

Android oluşturmak için, lunch komutuyla oluşturmak üzere bir hedef cihaz türü seçmelisiniz. Hedef, belirli bir model veya form faktörü gibi bir cihaz permütasyonudur.

Aşağıda yer alan aosp_cf_x86_64_phone-userdebug cihaz hedefi, Cuttlefish sanal Android cihazını fiziksel bir cihaz olmadan test etmek için oluşturmanıza olanak tanır.

Bunun yerine fiziksel bir cihaz oluşturmak ve güncellemek için başka bir hedef seçin ve yanıp sönen cihazlara ilişkin talimatları izleyin.

  1. Kaynak kodu kontrolünüzün kök dizininden aşağıdaki komutu çalıştırarak ortamınızı Android cihazlar oluşturmak için ayarlayın:

    source build/envsetup.sh
    
  2. Derleme hedefini öğle yemeği komutuna şu şekilde iletin:

    lunch aosp_cf_x86_64_phone-userdebug
    
  3. Aşağıdakilerle ödeme işleminizin herhangi bir yerinden kodu oluşturun :

    m
    

İlk derlemenin saatler sürmesini bekleyin. Sonraki derlemeler önemli ölçüde daha az zaman alır.

Bir Acloud örneği oluşturun

Acloud , AOSP'de kullanıcıların sanal Android cihazları, bu durumda Cuttlefish oluşturmasına yardımcı olan bir komut satırı aracıdır.

Kodu oluşturmak için kullanılan aynı terminal oturumundaysanız devam edin. Aksi takdirde, envsetup.sh komut dosyasını ve orada ilk kullandığınız lunch komutunu yeniden çalıştırın. O zamanlar

  1. Aşağıdakilerle bir Acloud yerel örneği oluşturun:

    acloud create --local-image --local-instance
    
  2. Gerekli paketlerdeki güncellemeleri kabul edin.

  3. İstenirse, tüm değişikliklerin geçerli olması için iş istasyonunuzu yeniden başlatın.

  4. Mürekkep Balığı cihazını seçin.

Android cihazı içeren bir VNC oturumu ile karşılaşacaksınız!

Farenizi ve klavyenizi kullanarak iş istasyonunuzdaki sanal cihazla etkileşim kurabilirsiniz. Android Debug Bridge (adb) logcat komutunu kullanarak, cihazınızı kullanırken günlüklerdeki etkinliği de takip edebilirsiniz:

adb logcat

Bir değişiklik yap

Bu örnek değişiklik listesini izleyerek kaynak kodunu güncelleyin.

  1. Ödeme işleminizin kökünden ( aosp/ dizini), frameworks/native Git projesine gidin:

    cd frameworks/native
    
  2. Bu komutla geçici bir proje başlatın:

    repo start <some-name> .
    
  3. Değişiklik listesindeki güncellemeleri aşağıdaki konuma dahil etmek için SurfaceFlinger.cpp düzenleyin:

    aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
    
  4. Bu iki satırı bulun:

    postFrame();
    postComposition();
    
  5. Bu iki satırı aşağıdaki ile değiştirin:

    postFrame();
    postComposition();
    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});
    updateColorMatrixLocked();
    
  6. Kodu oluşturun:

    m
    
  7. Cihazdaki yapıyı güncelleyin:

    adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
    
  8. Bir cihaz seçmeniz istenirse, geçen süreyi en kısa göstereni seçin. (Bu muhtemelen listede gördüğünüz son örnektir.) Tüm sanal aygıt örneklerini görmek için acloud list ve acloud list -v komutlarını kullanın.

Seçtiğiniz cihazda Şekil 1'de gösterilene benzer bir renk değişikliği gördüğünüzü doğrulayın.

Example of a successful color change

Şekil 1. Başarılı renk değişikliğinden sonra ekran görünümü

Kodunuzu test edin

Codelab'in bu kısmı, kaynak ağaçta bulunan ve başarısız olan örnek bir testi kullanır. Bu, testi yerel olarak çalıştırmak ve kodu test etmek için Atest'i kullanır.

Testi kullanmak için şu talimatları izleyin:

  1. Koşmak:

    atest DevCodelabTest
    
  2. Test başarısız olacaktır. Düzeltmek için başarısız olan testin kaynak kodunu bulun:

    atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
    
  3. O zaman buraya bak

    platform_testing/tests/example/devcodelab
    
  4. Dosyanın düzenlenmesini sağlamak için android.test.example.devcodelab.DevCodelabTest içinde testin adını alın ve . / ile bu sonucu elde etmek için:

    src/android/test/example/devcodelab/DevCodelabTest.java
    
  5. Sonra düzenle

    platform_testing/tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
    

    değiştirmek

    Assert.assertTrue(false)
    

    ile birlikte

    Assert.assertTrue(true)
    
  6. Sorunu çözdüğünüzü doğrulamak için testi tekrar çalıştırın:

    atest DevCodelabTest
    

İnceleme için kodunuzu yükleyin

Repo, çok sayıda Git deposunda (veya projesinde) aynı anda çalışmak için git clone gibi komutları bir araya getirerek Git kullanımını basitleştirir.

Git ve Repo'ya genel bakış için Kaynak Kontrol Araçları'na bakın ve Android kaynak koduyla çalışmaya ilişkin eksiksiz belgelere bağlantılar verin. Git projelerinin tam listesi ve her bir projeyle ilişkili şubeler için bireysel projeler (yollar) için AOSP deposuna bakın.

Git'teki projelerinizin kod incelemesi için Gerrit web tabanlı kod inceleme sistemini kullanacaksınız.

  1. Değişikliklerinizi frameworks/native projede yaptığınızı varsayarak, bunları yüklemek için şu komutları çalıştırın:

    cd frameworks/native
    repo start codelab .
    git add .
    git commit
    
  2. Taahhüt mesajınız için aşağıdakini girin:

    Android codelab change
    Test: manual atest
    
  3. Değişikliğinizi yükleyin:

    repo upload
    

Başarılı olursanız, buna benzer bir mesaj görürsünüz:

Upload project frameworks/native/ to remote branch master:
  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/master

Değişikliğinizi Gerrit'te görüntüleyin

Terminalde yazdırılan ve şuna benzeyen bağlantıya gidin:

https://android-review.googlesource.com/c/platform/frameworks/native/+/1098432

Bu, Android platform geliştirme için başlangıç ​​kod laboratuvarını tamamlar. Sonraki adımlar için Yamaları gönderme bölümüne ve Android geliştirmeyle ilgili tüm ayrıntılar için bu sitenin geri kalanına bakın.

Değişikliğinizi geri alın

Normalde, test sonrası ve inceleme ve onayın ardından, değişikliğinizi Gerrit'e gönderir ve havuzda birleştirirsiniz.

Bunun yerine, bu kod laboratuvarının amaçları doğrultusunda, Gerrit'te Terk Et'i tıklayarak değişiklik listenizi geri alın.

Ardından, frameworks/native proje dizinindeki (veya alt dizinlerindeki) ilişkili geçici dalı terk edin:

repo abandon codelab .

Test dosyasında yaptığınız değişiklikleri geri almayı da unutmayın. repo start , git commit ve repo upload değişikliğini yapmadığınız için, dosyanın kendisini sıfırlayabilirsiniz. aosp/platform_testing directory olduğunuzu varsayarak, dosyayı sıfırlamak için aşağıdakini kullanın:

git reset HEAD tests/example/devcodelab/src/android/test/example/devcodelab/DevCodelabTest.java
git checkout .

Bu noktada işiniz bitti! İyi iş!

Yardım almak

Bu codelab sırasında hatalarla karşılaşırsanız, lütfen herhangi bir sayfanın altındaki Sorun İzleyici bağlantısını kullanarak bunları bildirin. Android oluşturma grubuna sorular gönderin.