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.
Trang này được dịch bởi Cloud Translation API.
Switch to English

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. Có, 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, chúng tôi, nhóm Android luôn cố gắng đơn giản hóa hành trình của bạn mỗi khi phát hành. Và chúng tôi cải tiến hàng 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. Bảng mã này sẽ 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 đối với các kỹ sư Android làm việc trên nền tảng (hệ điều hành).
  2. Bảng mã này là một chức năng buộc bạn phải 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 khi bắt đầu từ đầu.

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

Dưới đây là danh sách đầy đủ các yêu cầu đối với codelab này, lấy từ những yêu cầu dành cho phát triển nền tảng chung ( AOSP ).

Để sử dụng mã hóa này, bạn cần thiết lập:

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.
  2. Trong 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 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 -j16
    

Quá trình đồ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 . Bạn có thể có nhiều repo checkout 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 hãy lưu ý mỗi lần thanh toán và xây dựng số lượng lên tới khoảng 300GB và đang tăng lên, vì vậy hãy giới hạn ở hai 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:

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à các 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ị đượ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 trưa được 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 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 lệnh logcat của 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), điều hướng đến dự án frameworks/native Git frameworks/native :

    cd frameworks/native
    
  2. Bắt đầu một dự án tạm thời với:

    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
    
  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
    

Bạn sẽ thấy sự thay đổi màu sắc trên thiết bị.

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

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

Để sử dụng bài kiểm tra:

  1. Chạy:

    atest DevCodelabTest
    
  2. Bài kiểm tra sẽ thất bại; bây giờ chúng ta hãy sửa chữa nó! 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 bên trong:

    platform_testing/tests/example/devcodelab
    
  4. Đối với tệp để chỉnh sửa, hãy lấy tên của bài kiểm tra và thay thế . với / , như vậy:

    android.test.example.devcodelab.DevCodelabTest
    

    Trở thành:

    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 kiểm tra lại để xác minh rằng bạn đã sửa lỗi kiểm tra:

    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.

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

  1. Giả sử bạn đã thực hiện các thay đổi của mình 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 điệp cam kết của bạn, hãy nhập:

    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 đến 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 để 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à 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, khi đăng thử nghiệm và xem xét / phê duyệt, bạn sẽ 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ã, 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 framework / dự án gốc (hoặc gói phụ của nó):

repo abandon codelab .

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

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

Tại thời điểm này, bạn đã hoàn thành! Công việc tốt đẹp!

Được 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 phản hồi Trang web ở cuối trang bất kỳ. Gửi câu hỏi đến nhóm xây dựng android .