Android-0.Android源碼相關簡介
Android Studio下查看源碼
下載源碼
點擊Settings
–>Android SDK
–>勾選Show Package Details
,這時就可以看到Sources for Android XX
,勾選下載即可。
下載的源碼位于Sdk\sources\android-27
下。
關聯源碼
找到C:\Users\{USER_NAME}\.AndroidStudio{version}\config\options\jdk.table.xml
,比如我這里是:
C:\Users\Administrator\.AndroidStudio3.3\config\options\jdk.table.xml
, 打開搜索Android API 27 Platform
,在<sourcePath>
配置路徑:
<sourcePath>
<root type="composite">
<root url="file://$USER_HOME$/AppData/Local/Android/Sdk/sources/android-27" type="simple" />
</root>
</sourcePath>
重啟一下Android Studio即可。
如果在系統函數中跳轉遇到紅色的顯示類,可以嘗試點擊
File
菜單下面的Invalidate Caches/Restart
,選擇Invalidate and Restart
即可。
這種方式下載的源碼,只適用于google這種未修改rom的手機,可以直接下斷點,如果像小米這種深度rom的手機,很多斷點是無效的。
AOSP源碼
很多時候,會遇到
throw new RuntimeException("Stub!");
表示實際運行時的邏輯會由Android ROM里面相同的類代替執行。
當你需要的源碼在Android SDK Source
中找不到的時候,就有必要去AOSP(Android Open Source Project)
項目里面找了。
chrome有個擴展叫:Android SDK Search
安裝后,到 Android開發者官網 查看API時,這個擴展可以在API類名旁邊顯示一個跳轉鏈接,用于跳轉到AOSP
中對應的類的源碼,方便查看源碼。
另外在瀏覽器輸入框輸入 ad + tab
,注意是ad字母后輸入tab鍵,之后輸入要查詢的API, 就會進入Android SDK搜索功能:
這時,你在AOSP查看代碼時,還可以返回上一級看到同目錄的其他源碼
另外還有個網站 http://androidxref.com 可以快速在線查詢,跳轉,非常方便
Android目錄分類
AOSP源碼很多,所以 最好分類查看:
https://developer.android.com/guide/platform?hl=zh-cn 上有平臺構架圖:
對應AOSP的目錄結構:
第一層:應用程序層(applications
)對應根目錄下platform/packages/apps
第二層:應用程序框架層(application framework
)對應根目錄下的platform/frameworks
第三層:運行庫層包括運行庫(libraries
)和android運行時環境(android runtime
)
運行庫(libraries
)對應目錄很多,其中libc
庫對應的是platform/bionic
android運行時環境(android runtime
),Core Libraries
對應根目錄下的platform/libcore
,Dalvik Virtual Machine
對應根目錄下的platform/dalvik
,不過現在已經是ART
了,所以目錄是platform/art
第四層:Linux內核層對應根目錄下的kernel
,每一個目錄對應了一個kernel
的版本
三、四層中間還有個硬件抽象層(HAL
)對應根目錄下的platform/hardware
packages 目錄
|——apps//應用程序庫
|——|——BasicSmsReceiver//基礎短信接收
|——|——Bluetooth//藍牙
|——|——Browser//瀏覽器
|——|——Calculator//計算器
|——|——Calendar//日歷
|——|——Camera//照相機
|——|——CellBroadcastReceiver//單元廣播接收
|——|——CertInstaller//被調用的包,在Android中安裝數字簽名
|——|——Contacts//聯系人
|——|——DeskClock//桌面時鐘
|——|——Email//電子郵件
|——|——Gallery//圖庫
|——|——Gallery2//圖庫2
|——|——HTMLViewer//HTML查看器
|——|——KeyChain//密碼管理
|——|——Launcher2//啟動器
|——|——Launcher3//啟動器
|——|——Music//音樂
|——|——MusicFX//音頻增強
|——|——PackageInstaller//包安裝器
|——|——Phone//電話
|——|——Protips//主屏幕提示
|——|——Provision//引導設置
|——|——QuickSearchBox//快速搜索框
|——|——Settings//設置
|——|——SoundRecorder//錄音機
|——|——SpareParts//系統設置
|——|——Tag//標簽
|——|——WallpaperPicker
|——experimental//非官方的應用程序
|——|——BugReportSender//Bug的報告程序
|——|——Bummer
|——|——CameraPreviewTest//照相機預覽測試程序
|——|——DreaamTheater
|——|——ExampleImsFramework
|——|——LoaderApp
|——|——NotificationLog
|——|——NotificationShowcase
|——|——procstatlog
|——|——RpcPerformance
|——|——StrictModeTest
|——inputmethods//輸入法
|——|——LatinIME//拉丁文輸入法
|——|——OpenWnn//OpenWnn輸入法
|——|——PinyinIME//拼音輸入法
|——providers//提供器
|——|——ApplicationsProvider//應用程序提供器,提供應用程序所需的界面
|——|——CalendarProvider//日歷提供器
|——|——ContactsProvider//聯系人提供器
|——|——DownloadProvider//下載管理提供器
|——|——MediaProvider//媒體提供器
|——|——TelephonyProvider//彩信提供器
|——|——UserDictionaryProvider//用戶字典提供器
|——screensavers//屏幕保護
|——|——Basic//基本屏幕保護
|——|——PhotoTable//照片方格
|——|——WebView//網頁
|——wallpapers//墻紙
|——|——Basic//系統內置墻紙
|——|——Galaxy4//S4內置墻紙
|——|——HoloSpiral//手槍皮套墻紙
|——|——LivePicker// 選擇動態壁紙
|——|——MagicSmoke// 壁紙特殊效果
|——|——MusicVisualization// 音樂可視化,圖形隨音樂而變化
|——|——NoiseField
|——|——PhaseBeam
frameworks/base目錄
|——api
|——cmds //Android中的重要命令(am,app_proce等)
|——core //核心庫
|——data //聲音字體等數據文件
|——docs //文檔
|——drm //數字版權管理
|——graphics //圖形圖像
|——keystore //數字簽名證書相關
|——libs //庫
|——location //地理位置
|——media //多媒體
|——native //本地庫
|——nfc-extras //NFC相關
|——obex //藍牙傳輸
|——opengl //OpenGL相關
|——packages //設置,TTS,VPN程序
|——sax //XML解析器
|——services //Android服務
|——telephony //電話相關
|——test-runner //測試相關
|——tests //測試相關
|——tools //工具
|——wifi //無線網絡
智能推薦
Android Activity簡介
1. Activity生命周期 Activity從onCreate()開始,到onDestroy()結束。 首次打開Activity,依次調用onCraete()、onStart()和onResume()。 選擇Home鍵,依次調用onPause()和onStop()。 再次打開Activity,依次調用onRestart()、onStart()和onResume()。 按返回鍵,依次調用onPa...
Android Fragment簡介
1. 前言 Fragment是Android3.0后引入的一個新的API,為了適應大屏幕的平板電腦。使用Fragment可以把屏幕劃分成幾塊,然后進行分組,進行一個模塊化的管理。 2.Fragment的生命周期 Fragment相對于Activity多了onAttach()和onDetach(),用于加載和釋放資源。 3. Framgment加載方式 靜態加載 在布局文件中直接加載自定義fragm...
Android網絡編程簡介
一、Android網絡編程簡介 我們在平時的開發中,不可避免的會使用到網絡編程方面的知識;在我的理解中,App好比是一個殼,它的作用是將用戶和服務器聯系起來,用戶通過操作App向服務器發送或者接收數據,并且以友好的方式反饋給用戶,而App要和服務器交互數據,就會設計到網絡編程。在Android App的開發中,用到最多的通信方式是基于Http協...
Android Hook簡介
Hook:Hook翻譯過來是鉤子的意思,無論是手機還是電腦運行的時候都依賴系統各種各樣的api,當某些api不能滿足我們的要求時,我們就得去需改某些api,使之滿足我們的要求。這樣api hook就自然而然的出現了。我們可以通過api hook,改變一個系統api的原有功能。基本的方法就是通過hook“接觸”到需要修改的api函數入口點,改變它的地址指向新的自定義的函數。當...
Android Hook 簡介
1、Hook基本概述 Hook翻譯過來是鉤子的意思,我們都知道無論是手機還是電腦運行的時候都依賴系統各種各樣的API,當某些API不能滿足我們的要求時,我們就得去修改某些api,使之能滿足我們的要求。這樣api hook就自然而然的出現了。我們可以通過api hook,改變一個系統api的原有功能。基本的方法就是通過hook“接觸”到需要修改的api函數入口點,改變它的地址...
猜你喜歡
Android WebRTC簡介
Android WebRTC簡介 WebRTC簡介 WebRTC WebRTC名稱源自網頁實時通信(Web Real-Time Communication)的縮寫,是一個支持網頁瀏覽器進行實時語音對話或視頻對話的技術,是谷歌2010年以6820萬美元收購Global IP Solutions公司而獲得的一項技術。Google于2011年6月3日開源的即時通訊項目,旨在使其成為客戶端視頻通話的標準。...
Android JNI基礎簡介
簡介: JNI的全稱就是Java Native Interface,Java本地接口。 作用:使得Java 與 本地其他類型語言(如C、C++)交互 注意:JNI開發前提是要引入jni.h頭文件,這個文件Android...
Android ANR簡介
1、ANR是什么 Application Not Responding即應用無響應。 當操作在一段時間內,系統無法處理是,就會發生ANR。彈出對應的無響應的對話框。 2、ANR的類型 發生ANR的主要是三種類型: A)KeyDispatchTimeout 這個Key事件分發超時的時間,Android默認是5秒,主要是定義在ActivityManagerService.java B)Broadcas...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...