国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

下載和閱讀Android源碼

這篇具有很好參考價(jià)值的文章主要介紹了下載和閱讀Android源碼。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、如何下載AOSP

源碼下載是我們分析源碼的開(kāi)始,Android源碼可以全量下載,也可以單個(gè)下載。

1.全量下載

官方文檔 https://source.android.com/source/downloading ,只要按照上面一步步做就可以了,但是由于需要翻墻,國(guó)內(nèi)無(wú)法直接訪問(wèn),而整個(gè)Android項(xiàng)目源碼巨大,即便是翻墻后下載也很慢,所以還是使用國(guó)內(nèi)鏡像比較好。

我推薦清華大學(xué)開(kāi)源鏡像,地址 https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ ,這上面也是有完整的教程,我就不復(fù)制粘貼了,但是有一點(diǎn)要注意,你一定要備一個(gè)比較大的磁盤,至少60個(gè)G吧,還不算后期編譯的。

我們分析源碼其實(shí)是不需要全部代碼的,因?yàn)锳OSP不僅包括系統(tǒng)源碼,還有些工具代碼,如aapt,adb等,這些我們根本不需要,而且即便是系統(tǒng)源碼,也不是所有我們都需要看,如果真的全部看,你這輩子都看不完,所以我還是推薦大家單個(gè)下載。

2.單個(gè)下載

官方地址 https://android.googlesource.com/ ,比如我們要下載platform/frameworks/base/目錄下的代碼,我們可以git clone https://android.googlesource.com/platform/frameworks/base ,不過(guò)這個(gè)還是會(huì)遇到翻墻的問(wèn)題,當(dāng)然我們也可以用鏡像。

鏡像地址 https://aosp.tuna.tsinghua.edu.cn/ ,比如我們要下載platform/frameworks/base/目錄,就用git clone https://aosp.tuna.tsinghua.edu.cn/platform/frameworks/base ,如果你帶寬夠的話,一般幾分鐘就可以下載好你想要的單個(gè)源碼了。

如果你想下載單個(gè)文件,或者搜索文件名及代碼,可以訪問(wèn) http://androidxref.com/ ,這里有部分Android的源碼

目錄結(jié)構(gòu)

先上一張圖,整個(gè)Android項(xiàng)目的架構(gòu)圖
下載和閱讀Android源碼

我們都知道Android系統(tǒng)從上到下大致分為這四層,所以我們以這四層為基礎(chǔ),講解下AOSP的目錄結(jié)構(gòu):

  • 第一層:應(yīng)用程序?qū)?applications)對(duì)應(yīng)根目錄下platform/packages/apps
  • 第二層:應(yīng)用程序框架層(application framework)對(duì)應(yīng)根目錄下的platform/frameworks
  • 第三層:運(yùn)行庫(kù)層包括運(yùn)行庫(kù)(libraries)和android運(yùn)行時(shí)環(huán)境(android runtime)
  • libraries對(duì)應(yīng)目錄很多,其中l(wèi)ibc庫(kù)對(duì)應(yīng)的是platform/bionic
  • android運(yùn)行時(shí)環(huán)境,Core Libraries 對(duì)應(yīng)根目錄下的platform/libcore,Dalvik Virtual Machine 對(duì)應(yīng)根目錄下的platform/dalvik ,不過(guò)現(xiàn)在已經(jīng)是ART了,所以目錄是platform/art
  • 第四層:Linux內(nèi)核層對(duì)應(yīng)根目錄下的kernel,每一個(gè)目錄對(duì)應(yīng)了一個(gè)kernel的版本,因?yàn)锳ndroid要兼容各種芯片,下面羅列一下:
  • goldfish 項(xiàng)目包含適用于所模擬的平臺(tái)的內(nèi)核源代碼。
  • msm 項(xiàng)目包含適用于 ADP1、ADP2、Nexus One、Nexus 4、Nexus 5、Nexus 6、Nexus 5X、Nexus 6P、Nexus 7 (2013)、Pixel 和 Pixel XL 的源代碼,可用作使用 Qualcomm MSM 芯片組的起點(diǎn)。
  • omap 項(xiàng)目用于 PandaBoard 和 Galaxy Nexus,可用作使用 TI OMAP 芯片組的起點(diǎn)。
  • samsung 項(xiàng)目用于 Nexus S,可用作使用 Samsung Hummingbird 芯片組的起點(diǎn)。
  • tegra 項(xiàng)目用于 Xoom、Nexus 7 (2012)、Nexus 9,可用作使用 NVIDIA Tegra 芯片組的起點(diǎn)。
  • exynos 項(xiàng)目包含適用于 Nexus 10 的內(nèi)核源代碼,可用作使用 Samsung Exynos 芯片組的起點(diǎn)。
  • x86_64 項(xiàng)目包含適用于 Nexus Player 的內(nèi)核源代碼,可用作使用 Intel x86_64 芯片組的起點(diǎn)。
  • hikey-linaro 項(xiàng)目用于 HiKey 參考板,可用作使用 HiSilicon 620 芯片組的起點(diǎn)。
  • 三、四層中間還有個(gè)硬件抽象層(HAL)對(duì)應(yīng)根目錄下的platform/hardware

目前我下載的目錄如下:

git clone https://aosp.tuna.tsinghua.edu.cn/platform/packages/apps/Launcher2

git clone https://aosp.tuna.tsinghua.edu.cn/platform/frameworks/base

git clone https://aosp.tuna.tsinghua.edu.cn/platform/frameworks/native

git clone https://aosp.tuna.tsinghua.edu.cn/platform/system/core

git clone https://aosp.tuna.tsinghua.edu.cn/platform/bionic

git clone https://aosp.tuna.tsinghua.edu.cn/platform/libcore

git clone https://aosp.tuna.tsinghua.edu.cn/platform/art

git clone https://aosp.tuna.tsinghua.edu.cn/kernel/msm

二、如何閱讀AOSP

當(dāng)我們把源碼下載下來(lái)之后,會(huì)感到茫然無(wú)措,因?yàn)锳OSP的源碼實(shí)在是太多了,這里我們需要明確一些問(wèn)題:

  • 要閱讀哪些源碼
  • 閱讀源碼的順序和方式
  • 用什么工具來(lái)閱讀

下面我將從這三個(gè)問(wèn)題一一展開(kāi)

1.要閱讀哪些源碼

這個(gè)問(wèn)題是比較個(gè)性化的,因?yàn)椴煌娜藦氖轮煌墓ぷ?,有的人從事?yīng)用開(kāi)發(fā),可能對(duì)Java層?xùn)|西感興趣;有的人從事Framework開(kāi)發(fā),可能對(duì)Framework層感興趣;有的從事硬件開(kāi)發(fā),可能對(duì)底層實(shí)現(xiàn)感興趣。

這個(gè)都因人而異,但是有一點(diǎn),不能盲目地毫無(wú)目的地看源碼,因?yàn)檫@樣的話最終你會(huì)淹沒(méi)在AOSP的大海里,看了一年半截啥都看了,卻又感覺(jué)都沒(méi)看透,別人問(wèn)你源碼的東西,都能說(shuō)個(gè)一二,但是一往深了說(shuō),就不知所以了。

所以對(duì)于AOSP源碼,不在于多,而在于精,你不要試圖把所有的源碼都看懂,你只要對(duì)自己感興趣的那部分深入研究就可以,因?yàn)榧幢闶荊oogle工程師也不可能把AOSP全部讀完。

對(duì)于我而言,我是從事應(yīng)用層開(kāi)發(fā)的,我主要會(huì)了解以下幾個(gè)方面的源碼:

  • Android系統(tǒng)啟動(dòng)流程,應(yīng)用啟動(dòng)流程,四大組件啟動(dòng)流程,這將列入系統(tǒng)啟動(dòng)篇
  • 系統(tǒng)常用服務(wù)ActivityManagerService,WindowManagerService等,這將列入系統(tǒng)服務(wù)篇
  • 通信機(jī)制,主要是Binder和Handler,這將列入通信篇
  • 進(jìn)程和線程的創(chuàng)建,運(yùn)行,銷毀,這將列入進(jìn)程篇
  • View的繪制和顯示流程,事件分發(fā)機(jī)制,這將列入圖形繪制篇
  • Android虛擬機(jī)ART運(yùn)行機(jī)制,類加載機(jī)制,Java注解,Java反射,這將列入虛擬機(jī)篇
  • Android對(duì)于Java集合的優(yōu)化算法,這將列入Java基礎(chǔ)篇

2.閱讀源碼的順序和方式

2.1 閱讀順序

讀源碼是一個(gè)日積月累的過(guò)程,不可能一蹴而就,當(dāng)我們列出自己感興趣的源碼后,我們需要制定一個(gè)閱讀計(jì)劃,先讀什么再讀什么。這個(gè)也是因人而異,根據(jù)自己的興趣來(lái)就是,你最想讀什么,那就排前面。

我一直在說(shuō)興趣,因?yàn)榕d趣是最好的老師,只有你對(duì)一樣?xùn)|西感興趣了,才會(huì)有動(dòng)力去學(xué),去研究,才會(huì)不覺(jué)得累,如果一開(kāi)始就去啃一些你不感興趣的東西,到頭來(lái)也是乏味不專注的,理解的程度也是不深,而且很有可能失去信心,最后放棄閱讀。

當(dāng)然,如果你對(duì)好幾樣?xùn)|西都感興趣,那就有一些原則了:

  • 事物都講究先后,就像樹(shù)木扎根大地一樣,先有大地,才有樹(shù)木,基礎(chǔ)的東西先看
  • 相互有關(guān)聯(lián)的東西一起看,不要一會(huì)兒看系統(tǒng)啟動(dòng),突然又去看事件分發(fā)什么的
2.2 閱讀方式

Android系統(tǒng)涵蓋的范圍很廣,從上層的應(yīng)用程序,到Framework,再到Libraries以至硬件,從Java層到C++,就像一座幾十層的大廈一樣,每層都有樓梯,也有電梯,我們需要做的就是在大廈里上下穿梭。

當(dāng)我們閱讀某一個(gè)知識(shí)點(diǎn)源碼的時(shí)候,不同的知識(shí)點(diǎn)有不同的閱讀方式,有些適合從下往上讀,比如系統(tǒng)啟動(dòng)流程,我是從事件開(kāi)始的地方開(kāi)始讀,從init.cpp開(kāi)始,然后到zygote進(jìn)程,到Java虛擬機(jī),最后到Luncher;

有些適合從上往下讀,比如Activity的啟動(dòng),我是從startActivity方法開(kāi)始讀,然后到ActivityThread,然后到ActivityManagerService;

有些適合兩頭從中間讀,比如Binder,我是從Java層看到C++層,但是看到驅(qū)動(dòng)那兒看不動(dòng)了,然后就從接收Binder的地方往回看,最后在兩端集中在驅(qū)動(dòng)的地方前后對(duì)比,才將Binder看通。

這里還是有個(gè)好的方式,就是從事件觸發(fā)的地方開(kāi)始看是比較合適的。

3.用什么工具來(lái)閱讀

Android 源碼閱讀神器當(dāng)然是Source Insight
下載和閱讀Android源碼

Source Insight的好處:

  • 支持方法跳轉(zhuǎn),類跳轉(zhuǎn),并且對(duì)C++支持很好
  • 支持文件搜索,java,c++,xml都支持,并且支持內(nèi)容搜索
  • 支持一鍵導(dǎo)入,隨時(shí)配置路徑
  • 而且最重要的,導(dǎo)入文件數(shù)多的時(shí)候不卡

下面我講講如何使用Source Insight

3.1 下載安裝Source Insight

自行百度,另外Source Insight還可配置跟Android Studio一樣的Darcula主題,需另外下載。

3.2 導(dǎo)入AOSP源碼

我目前還沒(méi)有下載完整的AOSP源碼,只是先下載了幾個(gè)重要的源碼。打開(kāi)Source Insight,選擇Project -> New Project,取個(gè)名字比如叫AOSP,點(diǎn)擊OK

下載和閱讀Android源碼

選擇你要查看的源碼目錄,點(diǎn)擊OK

下載和閱讀Android源碼

選擇需要將哪些目錄下的源碼導(dǎo)入,點(diǎn)擊Add Tree

下載和閱讀Android源碼

導(dǎo)入成功后會(huì)有很多文件列在下方,點(diǎn)擊Close

下載和閱讀Android源碼

3.3查看源碼

現(xiàn)在進(jìn)入項(xiàng)目還是一片空白,需要把工具欄打開(kāi),然后就可以看源碼了

下載和閱讀Android源碼

左邊是方法和成員變量搜索,右邊Project File是搜索類名,Project Symbol是內(nèi)容搜索

下載和閱讀Android源碼

還有一些快捷鍵,比如Ctrl+左鍵可以方法跳轉(zhuǎn),Alt+,是后退,Alt+.是前進(jìn),Ctrl+G 是跳轉(zhuǎn)到指定行,Ctrl+F 搜索內(nèi)容,有時(shí)我們會(huì)遇到方法無(wú)法跳轉(zhuǎn),這時(shí)我們需要點(diǎn)擊Project,選擇Synchronize Files,全局關(guān)聯(lián)一下,如圖

下載和閱讀Android源碼

這里要注意導(dǎo)入的文件不要太多,太多會(huì)導(dǎo)致Synchronize失敗,我們可以選擇性地導(dǎo)入一些目錄

我們?cè)趯?dǎo)入源碼的時(shí)候,有時(shí)一些匯編的源碼(以.s或.S結(jié)尾)無(wú)法導(dǎo)入,這時(shí)我們需要點(diǎn)擊Options,選擇File Type Options,在C/C++里添加.s和.S的支持,然后Close,如圖

下載和閱讀Android源碼

然后我們重新追加一些目錄,點(diǎn)擊Project,選擇Add and Remove Projec Files,選擇對(duì)應(yīng)目錄Add Tree即可,同時(shí)我們也可以選擇Remove Tree刪除對(duì)應(yīng)目錄源碼,操作如下

下載和閱讀Android源碼

三、其他

在真正開(kāi)始閱讀Android源碼之前,最好是去了解一些C/C++的語(yǔ)法知識(shí),因?yàn)樵创a核心的部分都是用C/C++寫的,如果你對(duì)一些基礎(chǔ)語(yǔ)法不太了解,會(huì)看得云里霧里的,這里我給大家推薦兩本書《C標(biāo)準(zhǔn)庫(kù) 中文版》和《C++標(biāo)準(zhǔn)庫(kù) 中文第2版》,另外一些學(xué)習(xí)網(wǎng)站也不錯(cuò):

  • 微軟官方
  • 菜鳥教程
  • W3Cschool

補(bǔ)充
Android studio也可以用來(lái)閱讀源碼,對(duì)于大部分人來(lái)說(shuō)更加友好,具體流程參考這篇文章:https://juejin.cn/post/7249987493939445818文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-405091.html

到了這里,關(guān)于下載和閱讀Android源碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Window下載Android源碼

    Window下載Android源碼

    想要研究Android 源碼的同學(xué)可以用此方法進(jìn)行下載。源碼從清華大學(xué)開(kāi)源軟件鏡像站(https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/)下載。 使用Linux的同學(xué)直接參照清華鏡像站提供的使用幫助(https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/)即可,本文主要介紹在window平臺(tái)下進(jìn)行源碼下載。 環(huán)境

    2024年02月13日
    瀏覽(20)
  • Android源碼的下載,編譯,刷機(jī)

    Android源碼的下載,編譯,刷機(jī)

    上篇說(shuō)到《framework開(kāi)發(fā)環(huán)境搭建》,本篇繼續(xù)介紹Android源碼的下載、編譯、刷機(jī) 先貼上Android源碼官網(wǎng)地址:https://source.android.com/docs/setup/start/,俗稱AOSP,Android開(kāi)源項(xiàng)目,這里我總結(jié)一下具體該怎么操作。 1、安裝repo Android源碼同時(shí)使用git和repo進(jìn)行管理,repo是基于git的代碼

    2024年02月02日
    瀏覽(25)
  • Android13源碼下載和編譯過(guò)程詳解

    作為Android開(kāi)發(fā)者人人都應(yīng)該有一份自己Android源碼,這樣我們就可以隨時(shí)對(duì)自己有疑惑的地方通過(guò)親手調(diào)試來(lái)加強(qiáng)理解 官方推薦配置請(qǐng)參考:AOSP使用入門文檔,重點(diǎn)有如下幾項(xiàng): 1.1.1 硬件配置要求 至少需要 250 GB 可用磁盤空間;如果要進(jìn)行構(gòu)建,則還需要 150 GB。如果要進(jìn)行多

    2024年02月14日
    瀏覽(64)
  • Android Framework | AOSP源碼下載及編譯指南(基于Android13)

    Android Framework | AOSP源碼下載及編譯指南(基于Android13)

    AOSP(Android Open Source Project)是Android操作系統(tǒng)的開(kāi)源項(xiàng)目,通過(guò)下載和編譯AOSP源碼,您可以獲得原始的Android系統(tǒng),并進(jìn)行定制和開(kāi)發(fā)。本教程將向您介紹如何下載AOSP源碼并進(jìn)行編譯的步驟。 如何只是瀏覽查看AOSP源碼,則沒(méi)必要下載源碼,可以使用google提供的Code Search工具進(jìn)

    2024年01月16日
    瀏覽(39)
  • 國(guó)內(nèi)鏡像下載Android10源碼并編譯(實(shí)測(cè))

    國(guó)內(nèi)鏡像下載Android10源碼并編譯(實(shí)測(cè))

    1.安裝ubuntu,不會(huì)的百度,一大把。 2.安裝編譯環(huán)境必要軟件 3.python安裝可能失敗,建議單獨(dú)安裝 4.下載repo工具,打開(kāi)Terminal輸入命令 5.修改~/bin/repo下的REPO_URL字段為國(guó)內(nèi)鏡像 6.初始化git倉(cāng)庫(kù)設(shè)置用戶名和郵箱 7.創(chuàng)建存放源碼的目錄,并同步代碼 8.拖執(zhí)行報(bào)python錯(cuò) “/usr/bin/

    2024年02月14日
    瀏覽(26)
  • Android AOSP源碼編譯——AOSP下載(一)

    Android AOSP源碼編譯——AOSP下載(一)

    一、電腦配置 Ubuntu16.04 + 16G,硬盤的大小最好大于300G (我這邊是找了個(gè)win電腦裝了雙系統(tǒng) 沒(méi)有使用虛擬機(jī)的方式) 二、基礎(chǔ)環(huán)境配置 1、安裝git 配置git email和name 2、安裝依賴工具(需要確認(rèn)的就一直y就好) 3、安裝python 執(zhí)行 python --version 可以看到ubuntu自帶的python版本是Python 2.

    2024年02月13日
    瀏覽(26)
  • Android12 源碼下載、編譯、刷機(jī)、單編調(diào)試Framework

    Android12 源碼下載、編譯、刷機(jī)、單編調(diào)試Framework

    深入學(xué)習(xí)Android系統(tǒng)框架開(kāi)發(fā)前,首先要搭建Android工程的開(kāi)發(fā)環(huán)境(建房子前先搞地基),詳細(xì)的配置要求和操作步驟見(jiàn)官網(wǎng)說(shuō)明 Establishing a build environment,本文也匯總了Android 12工程源碼的下載、編譯和刷機(jī)的實(shí)操過(guò)程。 在開(kāi)始代碼下載之前,先強(qiáng)調(diào)下源碼編譯對(duì)硬件/軟件

    2024年02月03日
    瀏覽(37)
  • Rockchip平臺(tái)rk3588源碼下載編譯(基于Android13)

    Rockchip平臺(tái)rk3588源碼下載編譯(基于Android13)

    下載地址 服務(wù)器鏡像下載 需要向RK申請(qǐng)SDK使用權(quán)限。 由于AOSP使用的repo管理源碼倉(cāng)庫(kù),所以為了方便開(kāi)發(fā)者獲取repo工具,RK也提供了repo工具的下載 本文介紹了如何使用Markdown撰寫一篇關(guān)于搭建自己的repo代碼服務(wù)器的文章。以下是詳細(xì)的步驟和指導(dǎo)。 環(huán)境準(zhǔn)備 在開(kāi)始之前,

    2024年02月03日
    瀏覽(88)
  • 如何在github下載源碼

    如何在github下載源碼

    1、在windows下載git https://git-scm.com/downloads 2.下載完之后,創(chuàng)建一個(gè)文件夾,存儲(chǔ)要下載的源碼。并且鼠標(biāo)右鍵 3、鼠標(biāo)右鍵之后,點(diǎn)擊Git Bash Here 會(huì)出現(xiàn)如下界面 4、點(diǎn)擊如下 5、可以直接點(diǎn)擊DownLoad Zip下載安裝包,我們選擇的是復(fù)制地址。 https://github.com/bystc/MovieRecommender.git

    2024年02月11日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包