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 công 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 phản hồi về các công cụ, tài liệu của Android và quy trình làm việc của nhà phát triển.

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

Danh sách các yêu cầu đối với codelab này được lấy từ các yêu cầu dành cho phát triển nền tảng chung ( AOSP ). Để lấy bảng mã 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ể, chúng bao gồm source build/envsetup.sh và các lệnh lunch .

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. Khi vẫn ở trong thiết bị đầu cuối, hãy cài đặt Repo và lấy thông tin đăng nhập vào tất cả các kho lưu trữ 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. Xem hướng dẫn tải xuống để biết chi tiết liên quan trong khi bạn chờ đợi.

Mỗi lần xuất kho được thể hiện bằng một tệp kê khai . Có thể 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 kiểm tra và bản dựng lên đến 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 kiểm tra lại hoặc tăng cường hệ thống của bạn bằng một ổ đĩa phụ.

Mẹo: Để giải phóng dung lượng, hãy xóa một thư mục nhánh và bắt đầu lại từ việc tạo thư mục, như được hiển thị ở đây:

rm -rf aosp2

Xây dựng mã

Để xây dựng Android, bạn phải chọn loại thiết bị mục tiêu để xây dựng bằng lệnh lunch . 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ố dạng cụ thể.

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

Thay vào đó, để xây dựng và cập nhật một thiết bị vật lý, hãy chọn một mục tiêu khác và làm theo hướng dẫn dành cho 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. Tạo mã từ bất kỳ đâu 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 phiên bản Acloud

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

Nếu bạn đang ở trong cùng một phiên đầu cuối được sử dụng để tạo mã , hãy tiếp tục. Nếu không, hãy chạy lại tập lệnh envsetup.sh và cùng một lệnh lunch mà bạn đã sử dụng ở đó trước. 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ể theo dõi hoạt động trong nhật ký khi sử dụng thiết bị của mình bằng cách sử dụng lệnh logcat Android Debug Bridge (adb):

adb logcat

Thay đổi

Cập nhật mã nguồn theo danh sách thay đổi mẫu này.

  1. Từ thư mục gốc của thanh toán ( aosp/ directory), hãy điều hướng đến dự án frameworks/native 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. Chỉnh sửa SurfaceFlinger.cpp để bao gồm các bản cập nhật từ danh sách thay đổi tại vị trí sau:

    aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
    

    Thêm phần sau vào bên dưới dòng mã bạn vừa đưa vào:

    updateColorMatrixLocked();
    
  4. Xây dựng mã:

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

    adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
    

Xác minh rằng bạn thấy sự thay đổi màu sắc trên thiết bị.

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. Điều này sử dụng Atest để chạy thử nghiệm cục bộ 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. Để chỉnh sửa tệp, hãy lấy tên của bài kiểm tra trong android.test.example.devcodelab.DevCodelabTest và thay thế . với / , để nhận được kết quả này:

    src/android/test/example/devcodelab/DevCodelabTest.java
    
  5. Vì vậy, 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 hóa việc sử dụng Git bằng cách gói các lệnh như git clone để hoạt động trên nhiều kho lưu trữ Git (hoặc dự án) cùng một lúc.

Xem Công cụ kiểm soát nguồn để biết tổng quan về Git và Repo, với các liên kết đến tài liệu đầy đủ về cách làm việc với mã nguồn Android. Xem kho lưu trữ AOSP để biết danh sách đầy đủ các dự án Git và các dự án riêng lẻ (đường dẫn) cho các nhánh được liên kết với từng dự án.

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

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

    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

Truy cập liên kết được in trong thiết bị đầu cuối giống 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 Gửi bản vá để biết các bước tiếp theo và xem phần còn lại của trang web này để biết chi tiết đầy đủ về cách phát triển Android.

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ì mục đích của bảng mã này, hãy hoàn nguyên danh sách thay đổi của bạn bằng cách nhấp vào Bỏ qua trong Gerrit.

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

repo abandon codelab .

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

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á trình mã hóa này, vui lòng báo cáo chúng bằng cách sử dụng liên kết Trình theo dõi vấn đề ở cuối trang bất kỳ. Gửi câu hỏi đến nhóm xây dựng android .