Android geliştirici codelab'i

Dünya tarihindeki en yaygın kurulu işletim sisteminin geliştirilmesine yardımcı olabilirsiniz. Evet, 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.

O halde arkanıza yaslanın, 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.
  2. Android'in araçları, belgeleri ve geliştirici iş akışıyla ilgili geri bildirimde bulunmanızı teşvik etmek.

Önkoşullar

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

Çevre

Genellikle kullanıcılar doğrudan iş istasyonunda derleme ve geliştirme yapar. Çeşitli terminallerde çalışıyor olabileceğiniz ve kullanılan komutların çoğu terminale özel olduğundan, bunları her terminal oturumunda yeniden çalıştırmanız gerekecektir. Bunlar özellikle source build/envsetup.sh ve lunch komutlarını içerir.

İş istasyonunu ayarla

  1. Gerekli paketleri iş istasyonunuza yükleyin .
  2. Hâlâ bir terminaldeyken Repo'yu yükleyin ve tüm Git depolarına yönelik kimlik bilgilerini kazanın .

Kodu başlatın ve senkronize edin

  1. Ana dizininize gidin:

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

    mkdir aosp
    
  3. Dizine gidin:

    cd aosp
    
  4. AOSP veri havuzu 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 senkronizasyonlar bir saat veya daha uzun sürebilir.

Her repo alımı bir bildirim dosyasıyla temsil edilir. Farklı dizinlerde bulundukları sürece aynı anda 1'den fazla repo ödemesine izin verilebilir. Ancak her ödeme ve derlemenin kabaca 300 GB kullanıma (ve giderek arttığına) tekabül ettiğini unutmayın; bu nedenle ya kendinizi 2 repo alımıyla sınırlayın ya da sisteminizi ikincil bir sürücüyle güçlendirin.

Kodu oluşturun

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

Cihaz hedefi aosp_cf_x86_64_phone-userdebug fiziksel bir cihaz olmadan test için Mürekkepbalığı sanal Android cihazı 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 cihazların yanıp sönmesine ilişkin talimatları izleyin.

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

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

    lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
    
  3. Kodu ödeme sayfanızın herhangi bir yerinden şunu kullanarak oluşturun :

    m
    

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

Acloud örneği oluşturun

Acloud , AOSP'de kullanıcılara sanal Android cihazlar (bu durumda Mürekkepbalığı) oluşturmada yardımcı olan bir komut satırı aracıdır.

Kodu oluşturmak için kullanılan terminal oturumundaysanız devam edin. Aksi takdirde, envsetup.sh betiğini ve orada ilk kullandığınız lunch komutunun aynısını yeniden çalıştırın. Daha sonra

  1. Mürekkepbalığı sanal cihazını yerel olarak çalıştırmak için bağımlılıkları aşağıdakilerle yükleyin:

    acloud setup
    
  2. İstenirse, tüm değişikliklerin etkili olması için iş istasyonunuzu yeniden başlatın.

  3. Aşağıdakilerle bir acloud yerel örneği oluşturun:

    acloud create --local-image --local-instance
    
  4. Mürekkepbalığı cihazını seçin.

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

Farenizi ve klavyenizi kullanarak iş istasyonunuzdaki sanal cihazla etkileşim kurabilirsiniz. Ayrıca 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. Ödemenizin 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 dosyasını düzenleyin:

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

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

    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ürenin en kısa olduğunu gösteren cihazı seçin. (Bu muhtemelen listede gördüğünüz sonuncudur.) Tüm sanal cihaz ö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şimi sonrasında ekranın görünümü

Kodunuzu test edin

Codelab'in bu bölümünde kaynak ağaçta bulunan ve başarısız olan bir örnek test kullanılıyor. 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 olacak. Bunu 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 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

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

    atest DevCodelabTest
    

Kodunuzu incelenmek üzere yükleyin

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

Git ve Repo'ya genel bakış için, Android kaynak koduyla çalışmaya ilişkin tüm belgelerin bağlantılarını içeren Kaynak Kontrol Araçları'na bakın. Git projelerinin tam listesi ve her projeyle ilişkili dallara ait 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ğıdakileri 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 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

Gerrit'teki değişikliğinizi görüntüleyin

Terminalde yazdırılan, buna benzeyen bağlantıya gidin:

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

Bu, Android platformu geliştirmeye yönelik başlangıç ​​kod laboratuvarını tamamlar. Sonraki adımlar için Yama gönderme bölümüne bakın 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ı, inceleme ve onay sonrasında, değişikliğinizi Gerrit'e gönderir ve depoyla birleştirirsiniz.

Bunun yerine, bu codelab'in amaçları doğrultusunda, Gerrit'te Vazgeç'i tıklatarak değişiklik listenizi geri alın.

Daha sonra frameworks/native proje dizinindeki (veya alt dizinlerindeki) ilgili geçici şubeyi terk edin:

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 olduğunuzu varsayarak dosyayı sıfırlamak için aşağıdakileri 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 herhangi bir sayfanın alt kısmındaki Sorun İzleyici bağlantısını kullanarak bunları bildirin. Android geliştirme grubuna sorularınızı gönderin.