Android Geliştirici Codelab

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

Yol zorlu olsa da, Android ekibi her sürümde yolculuğunuzu basitleştirmeye çalışır. 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, bir terminali ateşleyin ve hadi 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ğu hakkında size küçük bir fikir vermek için.
  2. Sağlamak için teşvik geribildirim Android'in araçları, belgeler ve ve geliştirici iş akışını.

Önkoşullar

Bu codelab için gereksinimleri listesi genel platformu (için, aşağıdakilerden türetilenlerdir AOSP ) gelişme. 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 terminallerde çalışıyor olabileceğiniz ve kullanılan komutların çoğu terminale özgü olduğundan, bunları her terminal oturumunda yeniden çalıştırmanız gerekecektir. Özellikle, bu şunlardır source build/envsetup.sh ve lunch komutları.

İş istasyonunu kur

  1. Gerekli paketleri yükleyin iş istasyonunda.
  2. Hala terminalde, iken Repo yükleyip kimlik kazandırmak tüm Git depolarına.

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 girin veya kabul edin (ad, e-posta adresi).

  6. Kaynak kodunu senkronize edin:

    repo sync -j8
    

İlk eşitlemeler bir saat veya daha uzun sürebilir. Bkz indirirken talimatları beklerken ilgili detaylar için.

Her Repo çıkış bir temsil edilir manifest dosyasında . Farklı dizinlerde bulundukları sürece, aynı anda 1'den fazla repo ödemesine izin verilir. Ancak, her bir ödeme ve derlemenin yaklaşık 300 GB kullanım (ve artan) tutarında olduğunu unutmayın, bu nedenle ya kendinizi 2 depo kontrolü ile sınırlayın ya da sisteminizi ikincil bir sürücü ile güçlendirin.

Kodu oluştur

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

Cihaz hedefi, aşağıda yer aosp_cf_x86_64_phone-userdebug inşa sağlar, Mürekkep balığı fiziksel cihaz olmadan test etmek için sanal bir Android cihazı.

İnşa etmek ve yerine fiziksel bir cihaz güncellemek için başka bir hedef seçin ve talimatlarını izleyin cihazları yanıp sönen .

  1. Kaynak kodu satın alma işleminizin 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. Derleme hedefini öğle yemeği komutuna şu şekilde iletin:

    lunch aosp_cf_x86_64_phone-userdebug
    
  3. Yapı ile çıkış içinde her yerde kodu:

    m
    

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

Bir Acloud örneği oluşturun

Acloud bu durumda Mürekkepbalığı içinde, sanal Android cihazlar oluştururken kullanıcılara yardımcı AOSP bir komut satırı aracıdır.

Eğer için kullanılan aynı terminali oturumunda iseniz kodunu oluşturmak , devam edin. Aksi takdirde, yeniden envsetup.sh senaryo ve aynı lunch öncelikle orada kullanılan komutu. Sonra

  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 etkili olması için iş istasyonunuzu yeniden başlatın.

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

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

Farenizi ve klavyenizi kullanarak iş istasyonunuzdaki sanal aygıtla etkileşime girebilirsiniz. Android Debug Bridge (adb) kullanılarak cihazınızı kullanırken Ayrıca günlükleri içinde aktiviteyi takip edebilirsiniz logcat komutu:

adb logcat

Bir değişiklik yap

Bu örnek aşağıdaki kaynak kodunu güncelleyin değişiklik listesi .

  1. Senin çıkış (kökünden aosp/ dizin) e gezinmek frameworks/native Git projesi:

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

    repo start <some-name> .
    
  3. Düzenleme SurfaceFlinger.cpp aşağıdaki konumda değişiklik listesi güncelleştirmeleri içerecek şekilde:

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

    postFrame();
    postComposition();
    
  5. Bu iki satırı aşağıdakilerle 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 en kısa süreyi gösteren cihazı seçin. (Bu muhtemelen gördüğünüz listedeki son biridir.), Tüm sanal aygıt örnekleri görmek kullanmak için acloud list ve acloud list -v komutları.

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

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

Kodunuzu test edin

Codelab'in bu bölümü, kaynak ağacında bulunan ve başarısız olan bir örnek testi kullanır. Bu istihdam ATEST lokal testi çalıştıran ve kodu test etmek için.

Testi kullanmak için şu talimatları izleyin:

  1. Çalıştırmak:

    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. Düzenlemeye dosyasını almak için de testin adını alır android.test.example.devcodelab.DevCodelabTest ve değiştir . 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
    

İncelenmek üzere kodunuzu yükleyin

Gibi komutlar donatılacak Repo basitleştirir Git kullanım git clone kerede çok sayıda Git depoları (veya projeler) karşısında işe.

Bkz Kaynak Kontrol Araçları Android kaynak kodu ile çalışma hakkında tam belgelere bağlantıları ile Git ve Repo genel bakışlar için. Bkz AOSP deposunu Git projeleri ve her proje ile ilişkili dallar için bireysel projeler (yolları) tam listesi için.

Git de projelerinizin kod incelemesi için kullanacağınız Gerrit web tabanlı kod incelemesi sistemini.

  1. Daki değişiklikler yaptı varsayarsak frameworks/native bunları yüklemek için şu komutları çalıştırın proje:

    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 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

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

Şuna benzeyen terminalde yazdırılan 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. Bkz lütfen Yama sonraki adımlar için ve Android geliştirmeye tüm detaylar için, bu sitenin geri kalanını görmek.

Değişikliğinizi geri alın

Normalde, test sonrası ve inceleme ve onay üzerine, değişikliğinizi Gerrit'e gönderir ve depoda birleştirirsiniz.

Bunun yerine, bu codelab amaçları için, Gerrit içinde terk tıklayarak changeList dönmek.

Sonra ilişkili geçici şube terk frameworks/native proje dizinine (veya alt dizin):

repo abandon codelab .

Test dosyasında yaptığınız değişiklikleri geri almayı da unutmayın. Eğer vermedi beri repo start , git commit ve repo upload değişikliği, dosyayı kendisi sıfırlayabilirsiniz. Eğer konum varsayarsak aosp/platform_testing directory dosyayı sıfırlamak için aşağıdaki 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, kullanarak bunları rapor edin Sayı Tracker herhangi bir sayfanın alt kısmında bulunan. Soru Gönder android-yapı grubundan.