協作開發攻略:Git全面使用指南 — 結語

協作開發攻略:Git全面使用指南 — 結語

Git 是一種分布式版本控制系統,用于跟蹤文件和目錄的變更。它能幫助開發者有效管理代碼版本,支持多人協作開發,方便代碼合并與沖突解決,廣泛應用于軟件開發領域。

文中內容僅限技術學習與代碼實踐參考,市場存在不確定性,技術分析需謹慎驗證,不構成任何投資建議。

Git LFS
📖 引言 🔥

  • 為什么選擇Git?
  • Git的基本概念簡述
  • 安裝與配置Git環境

📖 第一部分 Git基礎 🔥

  1. 版本控制概述
  2. 初始化倉庫
  3. 文件狀態管理
  4. 提交更改
  5. 查看歷史記錄
  6. 撤銷操作
  7. 分支管理
  8. 遠程倉庫
  9. 標簽管理

📖 第二部分 高級技巧與最佳實踐 🔥

  1. 交互式重置
  2. 變基操作
  3. 子模塊
  4. Git Hooks
  5. 全性和身份驗證

📖 第三部分 特殊應用場景 🔥

  1. 大型文件存儲——Git LFS 解決方案
  2. 協作開發流程——Git Flow/GitHub/GitLab CI/CD 集成

📖 結語 🔥

  • 要點速查
  • 進一步學習資源
  • 常見問題解答

結語

以下是本指南全部要點速查、進一步學習資源推薦和常見問題解答。

要點速查

第一部分 Git基礎

1. 版本控制概述
  • 什么是版本控制?

    • 跟蹤和管理文件或項目的變化歷史。
    • 允許多版本文件的保存、查看、恢復和記錄變更信息。
    • 幫助團隊協作開發,減少代碼沖突,并提供完整的項目歷史記錄。
  • 主要功能包括:

    • 版本追蹤:記錄每次修改的內容和時間戳。
    • 歷史回溯:可以隨時查看或恢復到之前的任意版本。
    • 分支管理:允許多個開發線同時進行,便于并行開發。
    • 變更記錄:記錄每次提交的信息,包括提交者、日期、描述等。
    • 協作開發:支持多人協作,方便團隊成員共享代碼庫。
  • 常見的應用場景:

    • 軟件開發:管理源代碼的變化。
    • 文檔撰寫:跟蹤文檔的修訂歷史。
    • 設計項目:管理設計文件的不同版本。
    • 研究項目:記錄實驗數據和分析結果的變化。
2. 分布式 vs 集中式版本控制系統
  • 集中式版本控制系統 (CVCS)

    • 架構特點:所有版本歷史都存儲在一個中央服務器上。
    • 代表產品:CVS, Subversion (SVN), Perforce。
    • 優點:簡單易用,集中管理,節省空間。
    • 缺點:單點故障,網絡依賴,性能限制。
  • 分布式版本控制系統 (DVCS)

    • 架構特點:每個開發者本地都有一個完整的倉庫副本,包含所有版本歷史記錄。
    • 代表產品:Git, Mercurial, Bazaar。
    • 優點:去中心化,離線工作,高性能,靈活性高,安全可靠。
    • 缺點:學習曲線陡峭,初始設置較繁瑣,存儲占用較大。
  • Git 的優勢

    • 高效性:優化的數據結構和算法。
    • 靈活性:支持多種工作流和分支策略。
    • 安全性:使用 SHA-1 哈希值確保數據完整性和一致性。
    • 廣泛支持:龐大的用戶社區和豐富的第三方工具。
    • 協作友好:支持多用戶協作,方便代碼審查。
3. 初始化倉庫
  • 創建新項目與初始化倉庫

    1. 創建項目目錄。
    2. 使用 git init 初始化一個新的 Git 倉庫。
    3. 添加文件到倉庫。
    4. 使用 git add 將文件添加到暫存區。
    5. 使用 git commit 提交更改。
  • 克隆現有倉庫

    1. 獲取倉庫 URL。
    2. 使用 git clone 克隆倉庫到本地。
    3. 進入克隆后的倉庫目錄。
    4. 使用 git status 查看倉庫狀態。
    5. 使用 git pull 拉取最新更改。
4. 文件狀態管理
  • 文件狀態

    • 未跟蹤(Untracked):未被 Git 追蹤的新文件。
    • 已暫存(Staged):已經添加到暫存區的文件。
    • 已提交(Committed):已經被提交到倉庫的歷史記錄中的文件。
  • 查看工作區狀態 (git status)

    • 基本用法git status
    • 示例輸出:顯示未跟蹤文件、已暫存文件和未暫存文件。
    • 詳細解釋:如何處理不同狀態的文件。
5. 提交更改
  • 暫存區的作用

    • 分批提交:允許分批提交更改。
    • 預覽更改:在最終提交之前預覽更改。
    • 組織工作:更好地組織和管理更改。
  • 提交本地修改到歷史記錄中

    • 使用 git add 添加文件到暫存區
    • 使用 git commit 提交更改
    • 跳過暫存區直接提交git commit -a -m "Your descriptive commit message"
    • 編輯提交信息git commit
    • 修改最后一次提交git commit --amend -m "Updated commit message"
6. 查看歷史記錄
  • 瀏覽提交歷史 (git log)

    • 基本用法git log
    • 簡化輸出git log --oneline
    • 顯示分支圖git log --graph --oneline --all
    • 顯示文件修改情況git log -p
    • 限制顯示的提交數量git log -n 3
    • 其他常用選項:按作者、日期范圍、文件路徑等搜索。
  • 查找特定的提交信息

    • 根據提交信息關鍵字、作者、日期范圍、文件路徑等搜索。
    • 使用 git show 查看特定提交的詳細信息。
7. 撤銷操作
  • 取消工作區中的更改

    • 取消對單個文件的更改:git checkout -- <file>git restore <file>
    • 取消對所有文件的更改:git checkout -- .git restore .
    • 刪除未跟蹤文件:git clean -fgit clean -fd
  • 修改最近一次提交

    • 修改提交信息:git commit --amend -m "Updated commit message"
    • 修改提交內容:git add <file> && git commit --amend -m "Updated commit message with new changes"
8. 分支管理
  • 創建并切換分支

    • 查看當前分支:git branch
    • 創建新分支:git branch <new-branch-name>
    • 切換到新分支:git checkout <branch-name>
    • 創建并切換到新分支:git checkout -b <new-branch-name>
    • 刪除分支:git branch -d <branch-name>git branch -D <branch-name>
  • 合并分支

    • 切換到目標分支:git checkout main
    • 合并分支:git merge <source-branch>
    • 解決沖突:手動編輯沖突文件,然后 git add <conflict-file>git commit -m "Resolve merge conflict in <file>"
9. 遠程倉庫
  • 連接遠程倉庫

    • 查看當前配置的遠程倉庫:git remote -v
    • 添加新的遠程倉庫:git remote add <remote-name> <remote-url>
    • 重命名遠程倉庫:git remote rename <old-name> <new-name>
    • 刪除遠程倉庫:git remote remove <remote-name>
  • 推送至及拉取自遠程倉庫

    • 推送更改到遠程倉庫:git push <remote-name> <branch-name>
    • 拉取遠程倉庫的更改:git pull <remote-name> <branch-name>
    • 克隆遠程倉庫:git clone <remote-url>
    • 查看遠程分支:git branch -r
    • 跟蹤遠程分支:git checkout -b <local-branch> <remote-branch>
  • 處理合并沖突

    • 識別沖突文件。
    • 打開沖突文件,解決沖突。
    • 將解決沖突后的文件添加到暫存區:git add <file>
    • 完成合并:git commit -m "Resolve merge conflict in <file>"

第二部分 高級技巧與最佳實踐

10. 交互式重置
  • 重新組織提交歷史

    • 啟動交互式 rebase:git rebase -i <commit-hash>
    • 編輯提交歷史:選擇 pick, reword, edit, squash, fixup, exec, drop
    • 保存并退出編輯器,完成 rebase。
  • 交互式地添加部分內容至暫存區

    • 查看當前狀態:git status
    • 交互式地添加部分內容至暫存區:git add -p
    • 選擇要添加的更改,完成添加,提交更改。
11. 變基操作
  • 什么是變基?何時使用它?

    • 變基將一個分支的更改應用到另一個分支上,使提交歷史更線性。
    • 適用場景:保持提交歷史線性、清理提交歷史、協作開發、簡化 Pull Request。
  • 基本用法

    • 普通變基:git rebase <target-branch>
    • 交互式變基:git rebase -i <target-commit>
  • 解決變基過程中的沖突

    • 開始變基:git rebase <target-branch>
    • 識別沖突。
    • 解決沖突。
    • 添加解決沖突后的文件到暫存區:git add <file>
    • 繼續變基:git rebase --continue
    • 放棄變基:git rebase --abort
12. 子模塊
  • 包含外部項目作為子模塊

    • 添加子模塊:git submodule add <repository-url> <path>
    • 初始化并更新子模塊:git submodule update --init --recursive
    • 查看子模塊狀態:git status
    • 提交子模塊更改:cd external-project && git add . && git commit -m "Update external project" && cd .. && git add external-project && git commit -m "Update external project submodule"
  • 更新和管理子模塊

    • 更新子模塊:git submodule update
    • 更新子模塊到最新遠程分支:git submodule update --remote
    • 更新所有子模塊:git submodule update --init --recursive
    • 刪除子模塊:刪除 .gitmodules.git/config 中的子模塊配置,從工作樹中刪除子模塊文件夾,移除子模塊的 Git 鏈接,提交更改。
    • 查看子模塊信息:git submodule status
    • 同步子模塊 URL:修改 .gitmodules 文件中的 URL,運行 git submodule sync
13. Git Hooks
  • 自動執行腳本

    • 客戶端鉤子pre-commit, post-commit, pre-rebase, post-merge, pre-push, prepare-commit-msg, commit-msg
    • 服務器端鉤子pre-receive, post-receive, update
  • 鉤子的應用場景介紹

    • 代碼格式檢查、靜態代碼分析、自動化測試、代碼審查、依賴項管理、部署自動化、權限控制、日志記錄、通知系統。
14. 安全性和身份驗證
  • 使用 SSH 密鑰進行身份驗證

    • 生成 SSH 密鑰:ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    • 添加 SSH 密鑰到 SSH 代理:eval "$(ssh-agent -s)" && ssh-add ~/.ssh/id_rsa
    • 將公鑰添加到 Git 托管服務。
    • 測試 SSH 連接:ssh -T git@github.com
    • 配置 Git 使用 SSH 協議:git clone git@github.com:username/repository.git
  • 設置 GPG 簽名以保證提交真實性

    • 生成 GPG 密鑰:gpg --full-generate-key
    • 列出 GPG 密鑰:gpg --list-secret-keys --keyid-format LONG
    • 配置 Git 使用 GPG 密鑰:git config --global user.signingkey <GPG_KEY_ID>
    • 啟用 GPG 簽名:git config --global commit.gpgsign true
    • 創建帶簽名的提交:git commit -S -m "Your commit message"
    • 驗證簽名:git log --show-signature

第三部分 特殊應用場景

15. 大型文件存儲——Git LFS 解決方案
  • 為什么要用 Git LFS?

    • 減少倉庫大小。
    • 提高性能。
    • 更好地管理二進制文件。
    • 節省磁盤空間。
  • Git LFS 的工作原理

    • 指針文件:存儲文件的元數據和校驗和。
    • 遠程存儲:實際的大文件存儲在 Git LFS 服務器上。
    • 下載文件:獲取指針文件后從 LFS 服務器下載實際大文件。
  • 安裝設置 Git LFS

    • 安裝 Git LFS。
    • 初始化 Git LFS:git lfs install
    • 配置 Git LFS 追蹤文件類型:git lfs track "*.psd"
    • 提交 .gitattributes 文件:git add .gitattributes && git commit -m "Enable Git LFS for large files"
  • 將大文件納入版本控制

    • 添加大文件到 Git LFS:git add path/to/large-file.psd
    • 提交更改:git commit -m "Add large file with Git LFS"
    • 推送更改:git push origin main
  • 推送到遠程倉庫時的注意事項

    • 確保遠程倉庫支持 Git LFS。
    • 檢查配額。
    • 初始推送可能耗時較長。
    • 備份和恢復。
    • 協作注意事項。
16. 協作開發流程
  • 特征分支模型

    • 工作流程
      • 創建特征分支:git checkout -b feature-branch main
      • 開發和提交:git add . && git commit -m "Add new feature"
      • 代碼審查:創建 Pull Request。
      • 合并特征分支:git checkout main && git merge feature-branch && git push origin main
      • 刪除特征分支:git branch -d feature-branch
    • 優點:簡單易懂,易于跟蹤開發歷史,便于代碼審查和協作。
    • 缺點:大型項目管理復雜,長期未合并可能導致沖突。
  • Git Flow 詳解

    • 分支類型main, develop, feature/*, release/*, hotfix/*, support/*
    • 工作流程
      • 開始新功能:git checkout -b feature/new-feature develop
      • 開發和提交:git add . && git commit -m "Add new feature"
      • 完成功能:git checkout develop && git merge --no-ff feature/new-feature && git push origin develop
      • 準備發布:git checkout -b release/v1.0 develop
      • 發布前的最后調整:git add . && git commit -m "Prepare for release v1.0"
      • 完成發布:git checkout main && git merge --no-ff release/v1.0 && git tag -a v1.0 && git push origin main && git push origin --tags && git checkout develop && git merge --no-ff release/v1.0 && git push origin develop
      • 熱修復:git checkout -b hotfix/v1.0.1 main
      • 修復問題:git add . && git commit -m "Fix critical bug in v1.0"
      • 完成熱修復:git checkout main && git merge --no-ff hotfix/v1.0.1 && git tag -a v1.0.1 && git push origin main && git push origin --tags && git checkout develop && git merge --no-ff hotfix/v1.0.1 && git push origin develop
    • 優點:嚴格的版本控制和發布管理,明確的分支角色和工作流程,適合大型項目和團隊。
    • 缺點:學習曲線陡峭,管理多個分支復雜。
  • GitHub/GitLab CI/CD 集成

    • GitHub Actions
      • 配置文件:在 .github/workflows 目錄下創建 YAML 文件(如 ci.yml)。
      • 觸發條件pushpull_request
      • 工作流:定義任務和步驟。
    • GitLab CI/CD
      • 配置文件:在根目錄下創建 .gitlab-ci.yml
      • 階段:定義不同的階段(如測試、構建、部署)。
      • 優點:自動化構建、測試和部署,減少人為錯誤,提高開發效率。
      • 缺點:初始配置需要時間,需要適當的資源來運行 CI/CD 任務。

進一步學習資源

  • Git 官方文檔:提供了全面的 Git 文檔和教程。
  • GitHub 文檔:涵蓋了 GitHub 的所有功能,包括 GitHub Actions。
  • GitLab 文檔:詳細介紹了 GitLab 的各項功能,包括 GitLab CI/CD。

常見問題解答

  1. 如何處理合并沖突?

    • 當出現合并沖突時,Git 會提示你哪些文件存在沖突。
    • 打開這些文件,手動解決沖突。沖突部分通常會被標記為 <<<<<<<=======>>>>>>>
    • 解決沖突后,使用 git add 標記文件為已解決,然后繼續合并或提交。
  2. 如何撤銷最近的提交?

    • 如果你想撤銷最近的一次提交但保留更改,可以使用 git reset --soft HEAD~1
    • 如果你想撤銷提交并丟棄更改,可以使用 git reset --hard HEAD~1
    • 如果已經推送到遠程倉庫,需要使用 git push --force 強制推送(需謹慎操作)。
  3. 如何查看某個文件的歷史記錄?

    • 使用 git log 查看文件的歷史記錄。

      git log -- <file>
      
    • 使用 git blame 查看文件每一行的最后修改者。

      git blame <file>
      
  4. 如何恢復刪除的分支?

    • 如果不小心刪除了一個分支,可以使用 git reflog 查找分支的 SHA-1 值。

    • 創建一個新的分支指向該 SHA-1 值。

      git branch <branch-name> <SHA-1>
      
  5. 如何查看未追蹤的文件?

    • 使用 git status 查看當前工作目錄的狀態,包括未追蹤的文件。
    • 使用 git ls-files --others --exclude-standard 列出所有未追蹤的文件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78266.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78266.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78266.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何用AI主動突出畫面主體!涂鴉新方案助剪輯、工業巡檢、醫療影像等領域,實現自動追蹤+智能放大

隨著智能 IPC 設備&#xff08;如安防攝像頭、寵物陪伴機器人、嬰兒監視器等&#xff09;日益普及&#xff0c;越來越多的生活場景被實時記錄。然而在實際使用中&#xff0c;由于設備安裝位置不當、廣角鏡頭視野過大等原因&#xff0c;經常會出現拍攝主體占比過小的問題&#x…

數據湖DataLake和傳統數據倉庫Datawarehouse的主要區別是什么?優缺點是什么?

數據湖和傳統數據倉庫的主要區別 以下是數據湖和傳統數據倉庫的主要區別&#xff0c;以表格形式展示&#xff1a; 特性數據湖傳統數據倉庫數據類型支持結構化、半結構化及非結構化數據主要處理結構化數據架構設計扁平化架構&#xff0c;所有數據存儲在一個大的“池”中多層架…

當智駕成標配,車企暗戰升級|2025上海車展

文&#xff5c;劉俊宏 編&#xff5c;王一粟 智能化無處不在的2025年上海車展&#xff0c;回歸了賣車的初衷。 光錐智能在展會暴走兩天&#xff0c;最大的感觸是今年的車展少了爭奇斗艷&#xff0c;多了些許務實。 回顧智能汽車時代的三場重要車展。2023年的上海車展充滿了…

如何在Spring Boot中禁用Actuator端點安全性

在 Spring Boot 應用中&#xff0c;Spring Boot Actuator 提供了一系列用于監控和管理應用的端點&#xff08;如 /actuator/health、/actuator/metrics&#xff09;&#xff0c;這些端點默認可能受到 Spring Security 的保護&#xff0c;要求身份驗證或授權。然而&#xff0c;在…

【mongodb】系統保留的數據庫名

目錄 1. admin2. config3. local4. test&#xff08;非嚴格保留&#xff0c;但常作為默認測試數據庫&#xff09;5. 注意事項6. 其他相關說明 1. admin 1.用途&#xff1a;用于存儲數據庫的權限和用戶管理相關數據。2.特點&#xff1a;該數據庫是 MongoDB 的超級用戶數據庫&am…

Redis是單線程的,如何提高多核CPU的利用率?

一句話回答&#xff1a; Redis 是單線程處理客戶端命令&#xff0c;但可以通過 多實例部署、I/O 多路復用、后臺線程 Redis 6 的 I/O Thread 支持&#xff0c;來充分利用多核 CPU。 一、Redis 單線程 ≠ 整個 Redis 都是單線程&#xff01; Redis 主要的 網絡事件 命令執行 …

關于mysql的事務和索引

1. 事務四大特性&#xff08;ACID&#xff09; 原子性&#xff1a;事務的操作要么全部成功&#xff0c;要么全部失敗回滾&#xff0c;不可分割。 一致性&#xff1a;事務執行前后&#xff0c;數據必須滿足業務規則&#xff08;如賬戶總額不變&#xff09;。 隔離性&#xff1…

【Python】保持Selenium穩定爬取的方法(防檢測策略)

selenium 防檢測策略的方法匯總&#xff1a; 合理設置延遲&#xff1a;請求間添加隨機延遲 (2-10秒) 限制爬取頻率&#xff1a;控制每小時/每天的請求量 輪換用戶代理&#xff1a;準備至少10個不同的User-Agent 使用住宅代理&#xff1a;優先選擇高質量的住宅代理IP 處理驗…

SpringSecurity源碼解讀AbstractAuthenticationProcessingFilter

一、介紹 AbstractAuthenticationProcessingFilter 是 Spring Security 框架里的一個抽象過濾器,它在處理基于表單的認證等認證流程時起著關鍵作用。它繼承自 GenericFilterBean,并實現了 javax.servlet.Filter 接口。此過濾器的主要功能是攔截客戶端發送的認證請求,對請求…

什么是DDD?為什么它正在取代傳統架構?

什么是DDD&#xff1f;為什么它正在取代傳統架構&#xff1f; 1. 傳統開發模式的痛點 在經典的MVC架構中&#xff0c;開發流程往往從數據庫表結構設計開始&#xff0c;業務邏輯散落在Service層&#xff0c;隨著需求迭代容易形成「大泥球」代碼&#xff1a; 實體類變成純粹的…

基于外部中中斷機制,實現以下功能: 1.按鍵1,按下和釋放后,點亮LED 2.按鍵2,按下和釋放后,熄滅LED 3.按鍵3,按下和釋放后,使得LED閃爍

題目&#xff1a; 參照外部中斷的原理和代碼示例,再結合之前已經實現的按鍵切換LED狀態的實驗&#xff0c;用外部中斷改進其實現。 請自行參考文檔《中斷》當中&#xff0c;有關按鍵切換LED狀態的內容, 自行連接電路圖&#xff0c;基于外部中斷機制&#xff0c;實現以下功能&am…

在SQL中,FROM子句中的子查詢必須指定別名,即使后續未引用該別名

FROM子句中的子查詢必須指定別名 示例錯誤示例及原因&#xff1a;總結&#xff1a; 在SQL中&#xff0c; FROM子句中的子查詢必須指定別名&#xff0c; 即使后續未引用該別名 示例 查詢館藏圖書最多的作者姓名及館藏數量 SELECT 作者, COUNT(圖書編號) AS 館藏數量 FROM 圖…

問道數碼獸 懷舊劇情回合手游源碼搭建教程(反查重優化版)

本文將對"問道數碼獸"這一經典卡通風格回合制手游的服務端部署與客戶端調整流程進行詳細拆解&#xff0c;適用于具備基礎 Windows 運維和手游源碼調試經驗的開發者參考使用。教程以實戰為導向&#xff0c;基于原始說明內容重構優化&#xff0c;具備較高的內容查重避重…

Shell腳本-for循環應用案例

在Shell腳本編程中&#xff0c;for循環是一種強大的工具&#xff0c;用于處理重復性任務。無論是批量處理文件、遍歷目錄內容還是簡單的計數任務&#xff0c;for循環都能提供簡潔而有效的解決方案。本文將通過幾個實際的應用案例來展示如何使用for循環解決具體的編程問題。 案…

Chrmo手動同步數據

地址欄輸入 chrome://sync-internals分別點擊這2個按鈕即可觸發手動同步

為什么圓形在GeoJSON中被表示為多邊形(Polygon)而不是圓形類型

GeoJSON規范中沒有"圓形"類型 GeoJSON是一種用于表示地理空間數據的標準格式,它的規范中只定義了以下幾種基本幾何類型: Point (點) LineString (線) Polygon (多邊形) MultiPoint (多點) MultiLineString (多線) MultiPolygon (多多邊形) GeometryCollection (幾…

大數據組件學習之--Kafka 安裝搭建

一、前置環境 在搭建kafka之前&#xff0c;請確認自己的hadoop、zookeeper是否搭建完成且可正常運行 二、下載并上傳安裝包&#xff08;鏈接為百度網盤&#xff09; kafka安裝包 tar -zxvf /opt/software/kafka_2.12-2.4.1.tgz -C /opt/module/ 進入解壓后的目錄更改文件名…

PyQt6基礎_pyqtgraph_折線圖with縮放調節

目錄 字符型橫坐標代碼 折線圖代碼 運行 創建新類&#xff0c;繼承pg.PlotWidget&#xff0c;在新類中實現業務內容&#xff0c;重寫pg.PlotWidget中的wheelEvent方法并使用業務數據實現比較理想的縮放狀態。 字符型橫坐標代碼 class StrAxisItem(pg.AxisItem):def __init…

聯邦元學習實現個性化物聯網的框架

隨著數據安全和隱私保護相關法律法規的出臺&#xff0c;需要直接在中央服務器上收集和處理數據的集中式解決方案&#xff0c;對于個性化物聯網而言&#xff0c;訓練各種特定領域場景的人工智能模型已變得不切實際。基于此&#xff0c;中山大學&#xff0c;南洋理工大學&#xf…

audio 核心服務AudioPolicyService 和AudioFlinger啟動流程

目錄 1、audioserver啟動 2、AudioPolicyService啟動 3、AudioFlinger啟動 audio的核心服務有兩個&#xff0c;AudioPolicyService 和AudioFlinger他們到在audioserver一個進程中 1、audioserver啟動 設備開機&#xff0c;系統啟動時將執行 /system/etc/init/audioserver.rc…