Android 提交補丁程序


最近因緣際會下, 提交了一個補丁到 AOSP - Android Open Source Project

首先先透過 issue tracker 報告錯誤

回報了一個 bug:  
https://issuetracker.google.com/issues/122429718
這是一個 wifi STA/ AP concurrent 同時跑的處理問題.
 
接著 Google 的人很快地回應了, 說當初設計只考慮 single wiphy, 沒有考慮 multiple wiphy,
建議我把相關修正的 source code 上到 Gerrit patch.

接下來和很多人可能遇到的一樣,開始遇到問題了.

Android 有提供一份提交補丁的程序
https://source.android.google.cn/setup/contribute/submit-patches 

1. 搭建編譯環境
    主要是裝 JDK, 我是 ubuntu 環境, 所以還算方便

2. 下載源代碼
     (1) 安裝 Repo : 這邊按照官網方式也很順利

要安装 Repo,请执行以下操作:

确保主目录下有一个 bin/ 目录,并且该目录包含在路径中:
  1. mkdir ~/bin
    PATH=~/bin:$PATH
    
 下载 Repo 工具,并确保它可执行:



  • curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    chmod a+x ~/bin/repo
    

  • 3. 建立工作目錄

    4. git 帳戶設定
    git config --global user.name "Your Name"
    git config --global user.email "you@example.com"
     這邊可以登錄 https://android-review.googlesource.com/ 看自己實際名稱

    5. 我是用創建服務器認證密碼

        可以用 browser 進入 https://android.googlesource.com/new-password
        把執行程式 copy出來到相對應 平台上執行



    6. 設定專案庫

    repo init -u https://android.googlesource.com/platform/manifest

    7. 下載程式

    一般會寫 repo sync , 但這會花很長的時間
    如果是針對某專案上 patch , 修改不大的話, 直接後面帶專案名稱

    repo sync platform/system/connectivity/wificond

    所有有的專案名稱, 可以在工作目錄下的 .repo/manifext.xml 看到
    <project path="....." name="...." groups="..." />
    name 那邊描述的即是專案名稱

    8.repo start
    sync 完後, 相關程式就在工作目錄下. 
    還先不要急著修改, 先做
    repo start NAME . 
    這點其實專案, 後來發現應該是在工作目錄下, 打
    repo start aosp platform/system/connectivity/wificond

    9. 修改檔案

    10. git 
       git add -A
       git commit -s 
       這邊做法和一般 git 做法相同
       不過有一點要注意是, 現在 commit 的敘述需要有一個 Test: xxxx
       描述這程式有做過哪些驗證. ( built, atest .. )

    11. repo upload
       沒意外的話, 就可以在 android-review.googlesource.com
       看到自己的 patch 了

    https://android-review.googlesource.com/c/platform/system/connectivity/wificond/+/874555


    --

    1. repo upload 出現 no branches

       這問題卡了很久, 最後是用第七步 repo start 的方式搭配工作目錄來完成

    如果查看 system/connectivity/wificond/.git/config

    [core]
            repositoryformatversion = 0
            filemode = true
    [filter "lfs"]
            smudge = git-lfs smudge --skip -- %f
    [remote "aosp"]
            url = https://android.googlesource.com/platform/system/connectivity/wificond
            review = https://android-review.googlesource.com/
            projectname = platform/system/connectivity/wificond
            fetch = +refs/heads/*:refs/remotes/aosp/*
    [branch "aosp"]
            remote = aosp
            merge = refs/heads/master

    --

    https://android-googlesource.com/new-password




    留言

    熱門文章