Google致力於提高黑人社區的種族平等。 怎麼看。
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

Android開發人員Codelab

您可以幫助開發地球歷史上安裝最廣泛的操作系統。是的,您是在這裡踏上成為Android平台工程師的旅程。

儘管路途充滿挑戰,但我們的Android團隊會努力簡化您每個版本的旅程。而且我們每天都會通過直接在Android開放源代碼項目(AOSP)中進行改進。

因此,坐下來,啟動一個終端,讓我們創造歷史。

目標

該代碼實驗室的任務是雙重的:

  1. 該代碼實驗室將使您大致了解平台(操作系統)上的Android工程師的開發人員工作流程。
  2. 此代碼實驗室是一種強制功能,可讓您從頭開始提供有關 Android工具,文檔和開發人員工作流程的反饋

先決條件

這是此代碼實驗室的要求的完整列表,該要求是從通用平台( AOSP )開發的要求中得出的。

要使用此代碼實驗室,您需要進行以下設置:

環境

通常,用戶直接在工作站上進行構建和開發。由於您可能在各種終端上工作,並且使用的許多命令都是特定於終端的,因此您將需要在每個終端會話中重新運行它們。具體而言,這些包括source build/envsetup.sh ,和lunch命令。

設置工作站

  1. 在工作站上安裝必要的軟件包
  2. 仍在終端中時, 安裝Repo並獲得所有Git存儲庫的憑據

初始化並同步代碼

  1. 導航到您的主目錄:

     cd ~
     
  2. 在其中創建本地工作子目錄:

     mkdir aosp
     
  3. 導航到目錄:

     cd aosp
     
  4. 初始化AOSP信息庫源代碼主分支(默認):

     repo init -u https://android.googlesource.com/platform/manifest
     
  5. 輸入或接受您的Git憑證(名稱,電子郵件地址)。

  6. 同步源代碼:

     repo sync -j16
     

初始同步可能需要一個小時或更長時間。等待期間,請參閱下載說明以獲取相關詳細信息。

每個回購結帳都由清單文件表示。只要它們存在於不同的目錄中,則一次可能有多個回購結帳。但是請注意,每個結帳和構建大約需要300GB並在不斷增長,因此請限制為兩個或使用輔助驅動器來擴充系統。

提示:要釋放空間,請刪除分支目錄,然後從目錄創建重新開始:

 rm -rf aosp2
 

建立程式碼

要構建Android,您必須選擇一個用lunch命令構建的目標設備類型。目標是設備排列,例如特定的型號或尺寸。

下面的設備包括目標, aosp_cf_x86_phone-userdebug ,使您能夠建立墨魚虛擬的Android設備沒有物理設備測試。

要構建和更新物理設備,請選擇另一個目標,然後按照有關刷新設備的說明進行操作。

  1. 通過從源代碼簽出的根目錄運行以下命令,設置用於構建Android設備的環境:

     source build/envsetup.sh
     
  2. 將構建目標傳遞給Lunch命令,如下所示:

     lunch aosp_cf_x86_phone-userdebug
     
  3. 使用以下方法在結帳處的任何地方構建代碼:

     m
     

預計首次構建將花費數小時。後續構建所需的時間大大減少。

創建Acloud實例

Acloud是AOSP中的命令行工具,可幫助用戶創建虛擬Android設備(在本例中為Cuttlefish)。

如果您處於用於構建代碼的同一終端會話中,請繼續。否則,請重新運行envsetup.sh腳本,並首先在其中使用相同的envsetup.sh命令。然後:

  1. 創建具有以下內容的Acloud本地實例:

     acloud create --local-image --local-instance
     
  2. 接受對必需軟件包的更新。

  3. 如果出現提示,請重新啟動工作站以使所有更改生效。

  4. 選擇墨魚設備。

應該會為您帶來一個包含Android設備的VNC會話!

您可以使用鼠標和鍵盤與工作站上的虛擬設備進行交互。在將設備與Android調試橋(adb) logcat命令一起使用時,您還可以跟踪日誌中的活動:

 adb logcat
 

做出改變

按照此示例更改列表更新源代碼。

  1. 從結帳的根目錄( aosp/目錄),導航到frameworks/native Git項目:

     cd frameworks/native
     
  2. 使用以下內容啟動一個臨時項目:

     repo start <some-name> .
     
  3. 編輯SurfaceFlinger.cpp以將更改列表中的更新包括在以下位置:

     aosp/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp
     
  4. 構建代碼:

     m
     
  5. 更新設備上的版本:

     adb root
    adb remount
    adb sync
    adb reboot
    acloud reconnect
     

您應該在設備上看到顏色變化。

測試你的代碼

在代碼實驗室的這一部分中,我們將通過源樹中已經失敗的示例測試進行測試。為了在本地運行測試,我們將使用Atest來測試代碼。

要使用測試:

  1. 跑:

     atest DevCodelabTest
     
  2. 測試將失敗;現在讓我們修復它!查找失敗的測試的源代碼:

     atest --info android.test.example.devcodelab.DevCodelabTest#testHelloWorld
     
  3. 然後看一下:

     platform_testing/tests/example/devcodelab
     
  4. 要編輯文件,請使用測試名稱並替換.使用/ ,如下所示:

     android.test.example.devcodelab.DevCodelabTest
     

    成為:

     src/android/test/example/devcodelab/DevCodelabTest.java
     
  5. 因此編輯:

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

    取代:

     Assert.assertTrue(false)
     

    帶有:

     Assert.assertTrue(true)
     
  6. 再次運行測試以確認您已修復測試:

     atest DevCodelabTest
     

上傳您的代碼以供審核

Repo通過捆綁諸如git clone命令來一次跨多個Git存儲庫(或項目)來簡化Git的使用。

有關Git和Repo的概述,請參閱源代碼管理工具 ,並提供有關使用Android源代碼的完整文檔的鏈接。有關Git項目的完整列表以及與每個項目關聯的分支的單個項目(路徑),請參見AOSP存儲庫

您將對Git中的項目使用Gerrit基於Web的代碼檢查系統。

  1. 假設您在frameworks/native項目中進行了更改,請運行以下命令以上傳它們:

     cd frameworks/native
    repo start codelab .
    git add .
    git commit
     
  2. 對於您的提交消息,請輸入:

     Android codelab change
    Test: manual atest
     
  3. 上載您的變更:

     repo upload
     

如果成功,您將看到類似以下消息:

 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
 

查看您在Gerrit中的更改

轉到終端上印有的鏈接,類似:

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

這樣就完成了用於Android平台開發的入門級代碼實驗室。有關開發Android的完整詳細信息,請參閱提交補丁以獲取後續步驟以及本網站的其餘部分。

恢復您的更改

通常,在進行測試和審查/批准後,您將在Gerrit中提交更改並將其合併到存儲庫中。

相反,出於代碼實驗室的目的,請通過單擊Gerrit中的“ 放棄”來還原更改列表。

然後放棄在frameworks / native項目目錄(或其子目錄)中關聯的臨時分支:

 repo abandon codelab .
 

還要記住將更改還原到測試文件。由於我們沒有repo startgit commitrepo upload更改,因此我們只能像這樣重置文件本身(假設您位於aosp/platform_testing directory ):

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

至此,您完成了!幹得好!

得到幫助

如果在此代碼實驗室期間遇到錯誤,請使用任何頁面底部的“ 站點反饋”鏈接報告這些錯誤。將問題發送給android-building組。