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:
- 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.
- Android'in araçları, belgeleri ve geliştirici iş akışı hakkında geri bildirim sağlamaya teşvik edin.
Önkoşullar
Bu kod laboratuvarına ilişkin gereksinimler listesi, genel platform ( AOSP ) geliştirme gereksinimlerinden türetilmiştir. Bu codelab'i almak için aşağıdakileri ayarlayın:
- Tüm genel gereksinimleri karşılayan fiziksel Linux iş istasyonu.
- Android kod tabanını düzenlemek için Repo ve Git yapılandırması gerekir.
Ç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. Spesifik olarak, bunlar source build/envsetup.sh
ve lunch
komutlarını içerir.
İş istasyonunu kur
- Gerekli paketleri iş istasyonunuza kurun .
- Hala bir terminaldeyken, Repo'yu kurun ve tüm Git depolarına kimlik bilgileri alın.
Kodu başlat ve senkronize et
Ana dizininize gidin:
cd ~
İçinde yerel bir çalışan alt dizini oluşturun:
mkdir aosp
Dizine gidin:
cd aosp
AOSP deposu kaynak kodu ana dalını başlatın (varsayılan):
repo init -u https://android.googlesource.com/platform/manifest
Git kimlik bilgilerinizi (ad, e-posta adresi) girin veya kabul edin.
Kaynak kodunu senkronize edin:
repo sync -j8
İlk eşitlemeler bir saat veya daha fazla sürebilir.
Her depo kullanıma alma, bir bildirim dosyasıyla temsil edilir. 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 kendinizi 2 depo kontrolü ile sınırlayın veya sisteminizi ikincil bir sürücü ile güçlendirin.
Kodu oluştur
Android oluşturmak için, lunch
komutuyla oluşturulacak 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 cihaz hedefi, aosp_cf_x86_64_phone-userdebug
, fiziksel bir cihaz olmadan test etmek için Cuttlefish sanal Android cihazını 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 cihazlarla ilgili talimatları izleyin.
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
Derleme hedefini öğle yemeği komutuna şu şekilde iletin:
lunch aosp_cf_x86_64_phone-userdebug
Kodu, kasanızın herhangi bir yerinden aşağıdakilerle oluşturun :
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 , AOSP'de kullanıcılara sanal Android cihazlar, bu durumda Cuttlefish oluşturma konusunda 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
komutunu yeniden çalıştırın. O zamanlar
Aşağıdakilerle bir Acloud yerel örneği oluşturun:
acloud create --local-image --local-instance
Gerekli paketlerdeki güncellemeleri kabul edin.
İstenirse, tüm değişikliklerin etkili olması için iş istasyonunuzu yeniden başlatın.
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) 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.
Ödemenizin kökünden (
aosp/
dizini),frameworks/native
Git projesine gidin:cd frameworks/native
Bu komutla geçici bir proje başlatın:
repo start <some-name> .
Aşağıdaki konumdaki değişiklik listesinden güncellemeleri dahil etmek için
SurfaceFlinger.cpp
düzenleyin:aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
Bu iki satırı bulun:
postFrame(); postComposition();
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();
Kodu oluşturun:
m
Cihazdaki yapıyı güncelleyin:
adb root
adb remount
adb sync
adb reboot
acloud reconnect
Bir cihaz seçmeniz istenirse, geçen en kısa süreyi gösteren cihazı seçin. (Bu muhtemelen listede gördüğünüz sonuncusudur.) Tüm sanal cihaz örneklerini görmek için
acloud list
veacloud 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.
Şekil 1. Başarılı renk değişiminden sonraki ekran görünümü
Kodunuzu test edin
Codelab'in bu bölümü, kaynak ağaçta bulunan ve başarısız olan bir örnek 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:
Koşmak:
atest DevCodelabTest
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
O zaman buraya bak
platform_testing/tests/example/devcodelab
Dosyanın düzenlenmesini sağlamak için
android.test.example.devcodelab.DevCodelabTest
içindeki testin adını alın ve.
/
ile bu sonucu elde etmek için:src/android/test/example/devcodelab/DevCodelabTest.java
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)
Sorunu çözdüğünüzü doğrulamak için testi tekrar çalıştırın:
atest DevCodelabTest
İncelenmek üzere kodunuzu yükleyin
Repo, aynı anda çok sayıda Git deposunda (veya projesinde) çalışmak için git clone
gibi komutları bir araya getirerek Git kullanımını basitleştirir.
Android kaynak koduyla çalışma hakkında tam belgelere bağlantılar içeren Git ve Repo'ya genel bakış için Kaynak Kontrol Araçları'na bakın. Git projelerinin tam listesi için AOSP deposuna ve her projeyle ilişkili dallar için ayrı projelere (yollara) bakın.
Git'teki projelerinizin kod incelemesi için Gerrit web tabanlı kod inceleme sistemini kullanacaksınız.
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
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, 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. 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 üzerine, değişikliğinizi Gerrit'e gönderir ve depoda birleştirirsiniz.
Bunun yerine, bu kod laboratuvarının amaçları doğrultusunda, Gerrit'te Vazgeç'i tıklatarak değişiklik listenizi geri alın.
Ardından, frameworks/native
proje dizinindeki (veya alt dizinlerindeki) ilişkili geçici dalı bırakın:
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ği yapmadığınız için dosyanın kendisini sıfırlayabilirsiniz. aosp/platform_testing directory
olduğunuzu varsayarsak, 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 kod laboratuvarı sırasında hatalarla karşılaşırsanız, lütfen bunları herhangi bir sayfanın altındaki Sorun İzleyici bağlantısını kullanarak bildirin. Android oluşturma grubuna sorular gönderin.