揭秘!双非渣本Android四年磨一剑,学习路线+知识点梳理
第一次觀看我文章的朋友,可以關(guān)注、點(diǎn)贊、轉(zhuǎn)發(fā)一下,每天分享各種干貨技術(shù)和程序猿趣事
由于涉及到的面試題較多導(dǎo)致篇幅較長(zhǎng),我根據(jù)這些面試題所涉及到的常問范圍總結(jié)了并做出了一份學(xué)習(xí)進(jìn)階路線圖???????及面試題答案免費(fèi)分享給大家,文末有免費(fèi)領(lǐng)取方式!
JNI 簡(jiǎn)介
JNI (Java Native Interface英文縮寫),譯為Java本地接口。是Java眾多開發(fā)技術(shù)中的一門技術(shù),意在利用本地代碼,為Java程序提供更高效、更靈活的拓展。盡管Java一貫以其良好的跨平臺(tái)性而著稱,但真正的跨平臺(tái)非C/C++莫屬,因?yàn)楫?dāng)前世上90%的系統(tǒng)都是基于C/C++編寫的。同時(shí),Java的跨平臺(tái)是以犧牲效率換來(lái)對(duì)多種平臺(tái)的兼容性,因而JNI就是這種跨平臺(tái)的主流實(shí)現(xiàn)方式之一。
總之,JNI是一門技術(shù),是Java 與C/C++ 溝通的一門技術(shù)。首先,來(lái)回顧下Android的系統(tǒng)架構(gòu)圖。
我們來(lái)簡(jiǎn)單介紹下每一層的作用。
Linux層
Linux 內(nèi)核
由于Android 系統(tǒng)是基礎(chǔ)Linux 內(nèi)核構(gòu)建的,所以Linux是Android系統(tǒng)的基礎(chǔ)。事實(shí)上,Android 的硬件驅(qū)動(dòng)、進(jìn)程管理、內(nèi)存管理、網(wǎng)絡(luò)管理都是在這一層。
硬件抽象層
硬件抽象層(Hardware Abstraction Layer縮寫),硬件抽象層主要為上層提供標(biāo)準(zhǔn)顯示界面,并向更高級(jí)別的 Java API 框架提供顯示設(shè)備硬件功能。HAL 包含多個(gè)庫(kù)模塊,其中每個(gè)模塊都為特定類型的硬件組件實(shí)現(xiàn)一個(gè)界面,例如相機(jī)或藍(lán)牙模塊。當(dāng)框架 API 要求訪問設(shè)備硬件時(shí),Android 系統(tǒng)將為該硬件組件加載對(duì)應(yīng)的庫(kù)模塊。
系統(tǒng)運(yùn)行庫(kù)和運(yùn)行環(huán)境層
Android Runtime
Android 5.0(API 21)之前,使用的是Dalvik虛擬機(jī),之后被ART所取代。ART是Android操作系統(tǒng)的運(yùn)行環(huán)境,通過(guò)運(yùn)行虛擬機(jī)來(lái)執(zhí)行dex文件。其中,dex文件是專為安卓設(shè)計(jì)的的字節(jié)碼格式,Android打包和運(yùn)行的就是dex文件,而Android toolchain(一種編譯工具)可以將Java代碼編譯為dex字節(jié)碼格式,轉(zhuǎn)化過(guò)程如下圖。
如上所示,Jack就是一種編譯工具鏈,可以將Java 源代碼編譯為 DEX 字節(jié)碼,使其可在 Android 平臺(tái)上運(yùn)行。
原生C/C++ 庫(kù)
很多核心 Android 系統(tǒng)組件和服務(wù)都是使用C 和 C++ 編寫的,為了方便開發(fā)者調(diào)用這些原生庫(kù)功能,Android的Framework提供了調(diào)用相應(yīng)的API。例如,您可以通過(guò) Android 框架的 Java OpenGL API 訪問 OpenGL ES,以支持在應(yīng)用中繪制和操作 2D 和 3D 圖形。
應(yīng)用程序框架層
Android平臺(tái)最常用的組件和服務(wù)都在這一層,是每個(gè)Android開發(fā)者必須熟悉和掌握的一層,是應(yīng)用開發(fā)的基礎(chǔ)。
Application層
Android系統(tǒng)App,如電子郵件、短信、日歷、互聯(lián)網(wǎng)瀏覽和聯(lián)系人等系統(tǒng)應(yīng)用。我們可以像調(diào)用Java API Framework層一樣直接調(diào)用系統(tǒng)的App。
最后
文章不易,如果大家喜歡這篇文章,或者對(duì)你有幫助希望大家多多點(diǎn)贊轉(zhuǎn)發(fā)關(guān)注哦。文章會(huì)持續(xù)更新的。絕對(duì)干貨!!!
由于文章篇幅問題 查看詳細(xì)文章以及獲取學(xué)習(xí)筆記鏈接:前往我的騰訊文檔領(lǐng)取
- Android進(jìn)階學(xué)習(xí)全套手冊(cè)
關(guān)于實(shí)戰(zhàn),我想每一個(gè)做開發(fā)的都有話要說(shuō),對(duì)于小白而言,缺乏實(shí)戰(zhàn)經(jīng)驗(yàn)是通病,那么除了在實(shí)際工作過(guò)程當(dāng)中,我們?nèi)绾稳ジ私鈱?shí)戰(zhàn)方面的內(nèi)容呢?實(shí)際上,我們很有必要去看一些實(shí)戰(zhàn)相關(guān)的電子書。目前,我手頭上整理到的電子書還算比較全面,HTTP、自定義view、c++、MVP、Android源碼設(shè)計(jì)模式、Android開發(fā)藝術(shù)探索、Java并發(fā)編程的藝術(shù)、Android基于Glide的二次封裝、Android內(nèi)存優(yōu)化——常見內(nèi)存泄露及優(yōu)化方案、.Java編程思想 (第4版)等高級(jí)技術(shù)都囊括其中。
-
Android高級(jí)架構(gòu)師進(jìn)階知識(shí)體系圖
關(guān)于視頻這塊,我也是自己搜集了一些,都按照Android學(xué)習(xí)路線做了一個(gè)分類。按照Android學(xué)習(xí)路線一共有八個(gè)模塊,其中視頻都有對(duì)應(yīng),就是為了幫助大家系統(tǒng)的學(xué)習(xí)。接下來(lái)看一下導(dǎo)圖和對(duì)應(yīng)系統(tǒng)視頻吧!!!
-
Android對(duì)標(biāo)阿里P7學(xué)習(xí)視頻
- BATJ大廠Android高頻面試題
這個(gè)題庫(kù)內(nèi)容是比較多的,除了一些流行的熱門技術(shù)面試題,如Kotlin,數(shù)據(jù)庫(kù),Java虛擬機(jī)面試題,數(shù)組,Framework ,混合跨平臺(tái)開發(fā),等
的,除了一些流行的熱門技術(shù)面試題,如Kotlin,數(shù)據(jù)庫(kù),Java虛擬機(jī)面試題,數(shù)組,Framework ,混合跨平臺(tái)開發(fā),等
總結(jié)
以上是生活随笔為你收集整理的揭秘!双非渣本Android四年磨一剑,学习路线+知识点梳理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成都欢乐谷鞋套多少钱
- 下一篇: 搞懂开源框架设计思想真的这么重要吗?终获