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

Codelab Pengembang Android

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.

Gol

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. Mendorong Anda untuk memberikan umpan balik di sekitar alat Android, dokumentasi, dan alur kerja pengembang.

Prasyarat

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

Lingkungan Hidup

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 lunch perintah.

Siapkan tempat kerja

  1. Instal paket yang diperlukan pada workstation Anda.
  2. Sementara masih dalam terminal, install Repo dan mendapatkan mandat untuk 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. Lihat petunjuk download untuk rincian terkait sementara Anda menunggu.

Setiap checkout repo diwakili oleh file manifest . 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 target yang jenis perangkat untuk membangun dengan lunch perintah. Target adalah permutasi perangkat, seperti model atau faktor bentuk tertentu.

Target perangkat termasuk di bawah, aosp_cf_x86_64_phone-userdebug , memungkinkan Anda untuk membangun Sotong perangkat Android virtual untuk menguji tanpa perangkat fisik.

Untuk membangun dan memperbarui perangkat fisik sebaliknya, memilih target lain dan ikuti petunjuk untuk berkedip 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. Membangun 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 menciptakan perangkat Android virtual, dalam hal ini Sotong.

Jika Anda berada di sesi terminal yang sama digunakan untuk membangun kode , lanjutkan. Jika tidak, jalankan kembali envsetup.sh naskah dan sama lunch perintah yang digunakan di sana pertama. 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 Anda menggunakan perangkat Anda dengan menggunakan Android Debug Bridge (adb) logcat perintah:

adb logcat

Membuat perubahan

Memperbarui kode sumber berikut contoh ini daftar perubahan .

  1. Dari akar checkout Anda ( aosp/ direktori), menavigasi ke frameworks/native proyek Git:

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

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

    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 contoh perangkat virtual, menggunakan acloud list dan acloud list -v perintah.

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

Example of a successful color change

Gambar tampilan 1. Layar setelah perubahan warna yang sukses

Uji kode Anda

Bagian codelab ini menggunakan tes contoh yang ada di pohon sumber dan gagal. Ini menggunakan atest untuk menjalankan tes 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 untuk mengedit, mengambil nama dari tes di android.test.example.devcodelab.DevCodelabTest dan mengganti . 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

Penggunaan Git repo menyederhanakan dengan bundling perintah seperti git clone bekerja di berbagai repositori Git (atau proyek) sekaligus.

Lihat Sumber Control Alat untuk ikhtisar dari Git dan Repo, dengan link ke dokumentasi lengkap tentang bekerja dengan kode sumber Android. Lihat repositori AOSP untuk daftar lengkap proyek Git dan proyek-proyek individu (jalur) untuk cabang yang berhubungan dengan setiap proyek.

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

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

    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 Mengirimkan Patch untuk langkah-langkah selanjutnya, dan untuk rincian lengkap pada pengembangan Android, melihat sisa situs ini.

Kembalikan perubahan Anda

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

Sebaliknya, untuk tujuan codelab ini, kembali daftar perubahan dengan mengklik Abaikan di Gerrit.

Kemudian meninggalkan cabang terkait sementara di frameworks/native direktori proyek (atau subdirektorinya):

repo abandon codelab .

Ingatlah juga untuk mengembalikan perubahan yang Anda buat pada file pengujian. Karena Anda tidak repo start , git commit , dan repo upload perubahan, Anda dapat mengatur ulang file itu sendiri. Dengan asumsi Anda berada di aosp/platform_testing directory , menggunakan berikut untuk me-reset 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 mengalami kesalahan selama codelab ini, laporkan mereka menggunakan Issue Tracker link di bagian bawah halaman manapun. Kirim pertanyaan ke android-bangunan kelompok.