Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Codelab Pengembang Android

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Anda dapat membantu mengembangkan sistem operasi yang paling banyak diinstal dalam sejarah Earth. Ya, Anda di sini untuk memulai perjalanan menjadi insinyur platform Android.

Meskipun jalannya menantang, tim Android berusaha untuk menyederhanakan perjalanan Anda, setiap rilis. Dan tim melakukan peningkatan setiap hari melalui kerja langsung di Android Open Source Project (AOSP).

Jadi, duduklah, jalankan terminal, dan mari buat sejarah.

Sasaran

Misi codelab ini ada dua:

  1. Untuk memberi Anda sedikit gambaran tentang seperti apa alur kerja pengembang untuk insinyur Android yang bekerja di platform (sistem operasi).
  2. Dorong Anda untuk memberikan masukan seputar alat, dokumentasi, dan alur kerja pengembang Android.

Prasyarat

Daftar persyaratan untuk codelab ini berasal dari persyaratan untuk pengembangan platform umum ( AOSP ). Untuk mengambil codelab ini, siapkan yang berikut:

Lingkungan

Biasanya, pengguna membangun dan mengembangkan di workstation secara langsung. Karena Anda mungkin bekerja di berbagai terminal, dan banyak perintah yang digunakan khusus terminal, Anda perlu menjalankannya kembali di setiap sesi terminal. Secara khusus, ini termasuk source build/envsetup.sh dan perintah lunch .

Siapkan tempat kerja

  1. Instal paket yang diperlukan di workstation Anda.
  2. Saat masih di terminal, instal Repo dan dapatkan kredensial ke semua repositori Git.

Inisialisasi dan sinkronkan kode

  1. Arahkan ke direktori home Anda:

    cd ~
    
  2. Buat subdirektori kerja lokal di dalamnya:

    mkdir aosp
    
  3. Arahkan ke direktori:

    cd aosp
    
  4. Inisialisasi cabang master kode sumber repositori AOSP (default):

    repo init -u https://android.googlesource.com/platform/manifest
    
  5. Masukkan atau terima kredensial Git Anda (nama, alamat email).

  6. Sinkronkan kode sumber:

    repo sync -j8
    

Sinkronisasi awal dapat memakan waktu satu jam atau lebih.

Setiap checkout repo diwakili oleh file manifes . Diperbolehkan untuk memiliki lebih dari 1 repo checkout sekaligus, selama mereka ada di direktori yang berbeda. Tetapi perhatikan bahwa setiap checkout dan build berjumlah sekitar 300 GB penggunaan (dan terus bertambah), jadi batasi diri Anda dengan 2 checkout repo, atau tambah sistem Anda dengan drive sekunder.

Buat kodenya

Untuk membangun Android, Anda harus memilih jenis perangkat target yang akan dibangun dengan perintah lunch . Target adalah permutasi perangkat, seperti model atau faktor bentuk tertentu.

Target perangkat yang disertakan di bawah, aosp_cf_x86_64_phone-userdebug , memungkinkan Anda membuat perangkat Android virtual Sotong untuk pengujian tanpa perangkat fisik.

Untuk membuat dan memperbarui perangkat fisik, pilih target lain dan ikuti petunjuk untuk mem- flash perangkat .

  1. Siapkan lingkungan Anda untuk membangun perangkat Android dengan menjalankan perintah berikut dari root checkout kode sumber Anda:

    source build/envsetup.sh
    
  2. Lewati target build ke perintah makan siang, seperti ini:

    lunch aosp_cf_x86_64_phone-userdebug
    
  3. Buat kode dari mana saja di checkout Anda dengan:

    m
    

Harapkan pembangunan pertama memakan waktu berjam-jam. Pembuatan selanjutnya membutuhkan waktu yang jauh lebih sedikit.

Buat instance Acloud

Acloud adalah alat baris perintah di AOSP yang membantu pengguna dalam membuat perangkat Android virtual, dalam hal ini Sotong.

Jika Anda berada di sesi terminal yang sama dengan yang digunakan untuk membuat kode , lanjutkan. Jika tidak, jalankan kembali skrip envsetup.sh dan perintah lunch yang sama yang Anda gunakan di sana terlebih dahulu. Kemudian

  1. Buat instance lokal Acloud dengan:

    acloud create --local-image --local-instance
    
  2. Terima pembaruan untuk paket yang diperlukan.

  3. Jika diminta, mulai ulang workstation Anda agar semua perubahan diterapkan.

  4. Pilih perangkat Sotong.

Anda akan disambut dengan sesi VNC yang berisi perangkat Android!

Anda dapat berinteraksi dengan perangkat virtual di workstation Anda menggunakan mouse dan keyboard. Anda juga dapat mengikuti aktivitas dalam log saat menggunakan perangkat dengan menggunakan perintah logcat Android Debug Bridge (adb):

adb logcat

Membuat perubahan

Perbarui kode sumber dengan mengikuti contoh daftar perubahan ini.

  1. Dari root checkout Anda (direktori aosp/ ), navigasikan ke frameworks/native :

    cd frameworks/native
    
  2. Mulai proyek sementara dengan perintah ini:

    repo start <some-name> .
    
  3. Edit SurfaceFlinger.cpp untuk menyertakan pembaruan dari daftar perubahan di lokasi berikut ini:

    aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
    
  4. Temukan dua baris ini:

    postFrame();
    postComposition();
    
  5. Ganti kedua baris tersebut dengan yang berikut ini:

    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. Buat kode:

    m
    
  7. Perbarui build di perangkat:

    adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
    
  8. Jika Anda diminta untuk memilih perangkat, pilih perangkat yang menunjukkan waktu berlalu terpendek. (Ini mungkin yang terakhir dalam daftar yang Anda lihat.) Untuk melihat semua instance perangkat virtual, gunakan perintah acloud list dan acloud list -v .

Pastikan Anda melihat perubahan warna pada perangkat yang Anda pilih mirip dengan yang ditunjukkan pada Gambar 1.

Example of a successful color change

Gambar 1. Tampilan layar setelah perubahan warna berhasil

Uji kode Anda

Bagian codelab ini menggunakan tes contoh yang ada di pohon sumber dan gagal. Ini menggunakan Atest untuk menjalankan pengujian secara lokal dan menguji kode.

Untuk menggunakan tes, ikuti petunjuk berikut:

  1. Lari:

    atest DevCodelabTest
    
  2. Tes akan gagal. Untuk memperbaikinya, temukan kode sumber dari tes yang gagal:

    atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
    
  3. Kemudian lihat di sini

    platform_testing/tests/example/devcodelab
    
  4. Untuk mendapatkan file yang akan diedit, ambil nama pengujian di android.test.example.devcodelab.DevCodelabTest dan ganti . dengan / , untuk mendapatkan hasil ini:

    src/android/test/example/devcodelab/DevCodelabTest.java
    
  5. Kemudian edit

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

    untuk menggantikan

    Assert.assertTrue(false)
    

    dengan

    Assert.assertTrue(true)
    
  6. Jalankan tes lagi untuk memverifikasi bahwa Anda telah memperbaiki masalah:

    atest DevCodelabTest
    

Unggah kode Anda untuk ditinjau

Repo menyederhanakan penggunaan Git dengan menggabungkan perintah seperti git clone untuk bekerja di banyak repositori Git (atau proyek) sekaligus.

Lihat Alat Kontrol Sumber untuk ikhtisar Git dan Repo, dengan tautan ke dokumentasi lengkap tentang bekerja dengan kode sumber Android. Lihat repositori AOSP untuk daftar lengkap proyek Git dan proyek individu (jalur) untuk cabang yang terkait dengan setiap proyek.

Untuk tinjauan kode proyek Anda di Git, Anda akan menggunakan sistem tinjauan kode berbasis web Gerrit .

  1. Dengan asumsi Anda membuat perubahan dalam frameworks/native , jalankan perintah ini untuk mengunggahnya:

    cd frameworks/native
    repo start codelab .
    git add .
    git commit
    
  2. Untuk pesan komit Anda, masukkan yang berikut ini:

    Android codelab change
    Test: manual atest
    
  3. Unggah perubahan Anda:

    repo upload
    

Jika Anda berhasil, Anda akan melihat pesan seperti ini:

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

Lihat perubahan Anda di Gerrit

Buka tautan, tercetak di terminal, yang menyerupai ini:

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

Ini melengkapi codelab starter untuk pengembangan platform Android. Lihat Mengirim Patch untuk langkah selanjutnya, dan untuk detail lengkap tentang pengembangan Android, lihat bagian lain dari situs ini.

Kembalikan perubahan Anda

Biasanya, setelah pengujian dan setelah ditinjau dan disetujui, Anda mengirimkan perubahan Anda di Gerrit dan menggabungkannya ke dalam repositori.

Sebagai gantinya, untuk tujuan codelab ini, kembalikan daftar perubahan Anda dengan mengklik Abaikan di Gerrit.

Kemudian tinggalkan cabang sementara terkait di frameworks/native (atau subdirektorinya):

repo abandon codelab .

Ingatlah juga untuk mengembalikan perubahan yang Anda buat pada file pengujian. Karena Anda tidak melakukan repo start , git commit , dan repo upload perubahan, Anda dapat mengatur ulang file itu sendiri. Dengan asumsi Anda berada di aosp/platform_testing directory , gunakan yang berikut ini untuk mengatur ulang file:

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

Pada titik ini, Anda sudah selesai! Kerja bagus!

Mendapatkan bantuan

Jika Anda menemukan kesalahan selama codelab ini, laporkan menggunakan tautan Pelacak Masalah di bagian bawah halaman mana pun. Kirim pertanyaan ke grup pembuatan android .