Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Bảng mã dành cho nhà phát triển Android

Bạn có thể giúp phát triển hệ điều hành được cài đặt rộng rãi nhất trong lịch sử Trái đất. Vâng, bạn ở đây để bắt đầu hành trình trở thành kỹ sư nền tảng Android.

Mặc dù con đường đầy thử thách, nhóm Android luôn cố gắng đơn giản hóa hành trình của bạn, mọi bản phát hành. Và nhóm thực hiện cải tiến mỗi ngày thông qua làm việc trực tiếp trong Dự án nguồn mở Android (AOSP).

Vì vậy, hãy ngồi lại, khởi động một thiết bị đầu cuối và hãy làm nên lịch sử.

Bàn thắng

Nhiệm vụ của codelab này gồm hai phần:

  1. Để cung cấp cho bạn một chút hiểu biết về quy trình làm việc của nhà phát triển như thế nào đối với các kỹ sư Android làm việc trên nền tảng (hệ điều hành).
  2. Khuyến khích bạn để cung cấp thông tin phản hồi xung quanh Android của các công cụ, tài liệu và các công việc phát triển.

Điều kiện tiên quyết

Danh sách các yêu cầu về codelab này có nguồn gốc từ những người cho nền tảng chung ( AOSP phát triển). Để sử dụng mã hóa này, hãy thiết lập như sau:

Môi trường

Thông thường, người dùng xây dựng và phát triển trực tiếp trên máy trạm. Bởi vì bạn có thể đang làm việc trong các thiết bị đầu cuối khác nhau và nhiều lệnh được sử dụng là dành riêng cho thiết bị đầu cuối, bạn sẽ cần chạy lại chúng trong mỗi phiên thiết bị đầu cuối. Cụ thể, những bao gồm các source build/envsetup.shlunch lệnh.

Thiết lập máy trạm

  1. Cài đặt các gói cần thiết trên máy trạm của bạn.
  2. Trong khi vẫn còn trong một thiết bị đầu cuối, cài đặt Repo và đạt được chứng chỉ cho tất cả các kho Git.

Khởi tạo và đồng bộ mã

  1. Điều hướng vào thư mục chính của bạn:

    cd ~
    
  2. Tạo một thư mục con làm việc cục bộ bên trong nó:

    mkdir aosp
    
  3. Điều hướng vào thư mục:

    cd aosp
    
  4. Khởi tạo nhánh chính mã nguồn của kho lưu trữ AOSP (mặc định):

    repo init -u https://android.googlesource.com/platform/manifest
    
  5. Nhập hoặc chấp nhận thông tin đăng nhập Git của bạn (tên, địa chỉ email).

  6. Đồng bộ mã nguồn:

    repo sync -j8
    

Đồng bộ hóa ban đầu có thể mất một giờ hoặc hơn.

Mỗi thanh toán repo được đại diện bởi một file manifest . Được phép có nhiều hơn 1 repo kiểm tra cùng một lúc, miễn là chúng tồn tại trong các thư mục riêng biệt. Nhưng lưu ý rằng mỗi lần thanh toán và bản dựng lên tới mức sử dụng khoảng 300 GB (và đang tăng lên), vì vậy, hãy giới hạn bản thân ở 2 lần thanh toán lại hoặc tăng cường hệ thống của bạn bằng một ổ đĩa phụ.

Xây dựng mã

Để xây dựng Android, bạn phải chọn một mục tiêu loại thiết bị để xây dựng với lunch lệnh. Mục tiêu là một hoán vị thiết bị, chẳng hạn như một mô hình hoặc hệ số hình thức cụ thể.

Mục tiêu thiết bị bao gồm dưới đây, aosp_cf_x86_64_phone-userdebug , cho phép bạn xây dựng Mực thiết bị Android ảo để thử nghiệm mà không có một thiết bị vật lý.

Để xây dựng và cập nhật một thiết bị vật lý thay vào đó, chọn mục tiêu khác và làm theo hướng dẫn cho các thiết bị nhấp nháy .

  1. Thiết lập môi trường của bạn để xây dựng thiết bị Android bằng cách chạy lệnh sau từ thư mục gốc của kiểm tra mã nguồn của bạn:

    source build/envsetup.sh
    
  2. Chuyển mục tiêu xây dựng đến lệnh trưa, như sau:

    lunch aosp_cf_x86_64_phone-userdebug
    
  3. Xây dựng mã từ bất cứ nơi nào trong thanh toán của bạn với:

    m
    

Dự kiến ​​bản dựng đầu tiên sẽ mất hàng giờ. Các bản dựng tiếp theo mất ít thời gian hơn đáng kể.

Tạo một phiên bản Acloud

Acloud là một công cụ dòng lệnh trong AOSP rằng hỗ trợ người dùng trong việc tạo ra các thiết bị Android ảo, trong trường hợp này Mực.

Nếu bạn đang ở trong phiên cuối cùng sử dụng để xây dựng mã , tiến hành. Nếu không, chạy lại envsetup.sh kịch bản và cùng lunch lệnh bạn sử dụng có đầu tiên. sau đó

  1. Tạo một phiên bản cục bộ Acloud với:

    acloud create --local-image --local-instance
    
  2. Chấp nhận cập nhật các gói yêu cầu.

  3. Nếu được nhắc, hãy khởi động lại máy trạm của bạn để mọi thay đổi có hiệu lực.

  4. Chọn thiết bị Mực nang.

Bạn sẽ được chào đón bằng một phiên VNC có chứa thiết bị Android!

Bạn có thể tương tác với thiết bị ảo trên máy trạm của mình bằng chuột và bàn phím. Bạn cũng có thể làm theo các hoạt động trong các bản ghi trong khi bạn sử dụng thiết bị của bạn bằng cách sử dụng Android Debug Bridge (adb) logcat lệnh:

adb logcat

Thay đổi

Cập nhật mã nguồn sau đây ví dụ này danh sách thay đổi .

  1. Từ thư mục gốc của thanh toán của bạn ( aosp/ thư mục), tìm đến frameworks/native dự án Git:

    cd frameworks/native
    
  2. Bắt đầu một dự án tạm thời bằng lệnh này:

    repo start <some-name> .
    
  3. Sửa SurfaceFlinger.cpp để bao gồm các bản cập nhật từ danh sách thay đổi ở vị trí sau:

    aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
    
  4. Tìm hai dòng sau:

    postFrame();
    postComposition();
    
  5. Thay thế hai dòng đó bằng dòng sau:

    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. Xây dựng mã:

    m
    
  7. Cập nhật bản dựng trên thiết bị:

    adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
    
  8. Nếu bạn được nhắc chọn thiết bị, hãy chọn thiết bị hiển thị thời gian đã trôi qua ngắn nhất. (Đây có lẽ là người cuối cùng trong danh sách bạn nhìn thấy.) Để xem tất cả các trường hợp thiết bị ảo, sử dụng acloud listacloud list -v lệnh.

Xác minh rằng bạn thấy sự thay đổi màu sắc trên thiết bị đã chọn của mình tương tự như những gì hiển thị trong Hình 1.

Example of a successful color change

Hình 1. Màn hình xuất hiện sau khi thay đổi màu thành công

Kiểm tra mã của bạn

Phần này của codelab sử dụng một bài kiểm tra ví dụ trong cây nguồn và không thành công. Đây dụng Atest cho chạy thử nghiệm tại địa phương và kiểm tra mã.

Để sử dụng bài kiểm tra, hãy làm theo các hướng dẫn sau:

  1. Chạy:

    atest DevCodelabTest
    
  2. Bài kiểm tra sẽ thất bại. Để khắc phục, hãy tìm mã nguồn của bài kiểm tra không đạt:

    atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
    
  3. Sau đó nhìn vào đây

    platform_testing/tests/example/devcodelab
    
  4. Để có được các tập tin để chỉnh sửa, lấy tên của bài kiểm tra trong android.test.example.devcodelab.DevCodelabTest và thay thế . với / , để có được kết quả này:

    src/android/test/example/devcodelab/DevCodelabTest.java
    
  5. Sau đó chỉnh sửa

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

    thay thế

    Assert.assertTrue(false)
    

    với

    Assert.assertTrue(true)
    
  6. Chạy lại kiểm tra để xác minh rằng bạn đã khắc phục được sự cố:

    atest DevCodelabTest
    

Tải lên mã của bạn để xem xét

Repo đơn giản hoá việc sử dụng Git bởi bundling lệnh như git clone để làm việc trên nhiều kho Git (hoặc dự án) cùng một lúc.

Xem Source Control Công cụ cho tổng quan của Git và Repo, với các liên kết đến tài liệu hướng dẫn đầy đủ về cách làm việc với mã nguồn Android. Xem kho AOSP cho danh sách đầy đủ các dự án Git và các dự án cá nhân (đường dẫn) đối với các ngành liên quan đến từng dự án.

Để xem xét mã của dự án của bạn trong Git, bạn sẽ sử dụng Gerrit hệ thống xem xét mã dựa trên web.

  1. Giả sử bạn đã thực hiện những thay đổi của bạn trong frameworks/native dự án, chạy các lệnh sau để tải chúng:

    cd frameworks/native
    repo start codelab .
    git add .
    git commit
    
  2. Đối với thông báo cam kết của bạn, hãy nhập như sau:

    Android codelab change
    Test: manual atest
    
  3. Tải lên thay đổi của bạn:

    repo upload
    

Nếu thành công, bạn sẽ thấy một thông báo giống như sau:

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

Xem thay đổi của bạn trong Gerrit

Đi tới liên kết, được in trong thiết bị đầu cuối, tương tự như sau:

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

Điều này hoàn thành bộ mã khởi động cho sự phát triển nền tảng Android. Xem Trình Patches cho các bước tiếp theo, và để biết chi tiết đầy đủ về phát triển Android, xem phần còn lại của trang web này.

Hoàn nguyên thay đổi của bạn

Thông thường, sau khi kiểm tra và sau khi xem xét và phê duyệt, bạn gửi thay đổi của mình trong Gerrit và hợp nhất nó vào kho lưu trữ.

Thay vào đó, với mục đích codelab này, trở lại danh sách thay đổi của bạn bằng cách nhấn vào Abandon trong Gerrit.

Sau đó, loại bỏ nhánh liên quan tạm thời trong frameworks/native thư mục dự án (hoặc thư mục con của nó):

repo abandon codelab .

Cũng hãy nhớ hoàn nguyên các thay đổi bạn đã thực hiện đối với tệp thử nghiệm. Vì bạn đã không repo start , git commit , và repo upload thay đổi, bạn có thể thiết lập lại các tập tin đó. Giả sử bạn đang ở aosp/platform_testing directory , sử dụng sau đây để thiết lập lại các file:

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

Đến đây, bạn đã hoàn tất! Công việc tốt đẹp!

Được trợ giúp

Nếu bạn gặp lỗi trong quá codelab này, hãy thông báo cho họ bằng cách sử dụng Issue Tracker liên kết trên dưới cùng của trang bất kỳ. Gửi câu hỏi cho android xây dựng nhóm.