- Android開(kāi)發(fā)精要
- 范懷宇
- 621字
- 2018-12-31 16:21:48
1.1.4 核心類(lèi)庫(kù)
對(duì)于框架層而言,核心類(lèi)庫(kù)就是它的“賢內(nèi)助”。每一次Android系統(tǒng)升級(jí),能看到的都是框架層SDK的變遷,增加了新的功能,提供了新的接口。而在這些新功能的背后,核心類(lèi)庫(kù)都是居功至偉。
核心類(lèi)庫(kù)由一系列的二進(jìn)制動(dòng)態(tài)庫(kù)共同構(gòu)成,通常使用C/C++進(jìn)行開(kāi)發(fā)。與框架層的系統(tǒng)服務(wù)相比,核心類(lèi)庫(kù)不能夠獨(dú)立運(yùn)行于線程中,而需要被系統(tǒng)服務(wù)加載到其進(jìn)程空間里,通過(guò)類(lèi)庫(kù)提供的JNI接口進(jìn)行調(diào)用。
核心類(lèi)庫(kù)的來(lái)源主要有兩種,一種是系統(tǒng)原生類(lèi)庫(kù),Android為了提高框架層的執(zhí)行效率,使用C/C++來(lái)實(shí)現(xiàn)它的一些性能關(guān)鍵模塊,如:資源文件管理模塊、基礎(chǔ)算法庫(kù),等等。而另一種則是第三方類(lèi)庫(kù),大部分都是對(duì)優(yōu)秀開(kāi)源項(xiàng)目的移植,它們是Android能夠提供豐富功能的重要保障,如:Android的多媒體處理,依賴(lài)于開(kāi)源項(xiàng)目OpenCORE的支持;瀏覽器控件的核心實(shí)現(xiàn),是從Webkit
移植而來(lái);而數(shù)據(jù)庫(kù)功能,則是得益于Sqlite
。Android會(huì)為所有移植而來(lái)第三方類(lèi)庫(kù)封裝一層JNI接口,以供框架層調(diào)用。
為了幫助游戲和圖形圖像處理等領(lǐng)域的開(kāi)發(fā)者搭建更高效的應(yīng)用,Android將數(shù)學(xué)函數(shù)庫(kù)、OpenGL庫(kù)等核心類(lèi)庫(kù)以NDK的形式提供給開(kāi)發(fā)者,開(kāi)發(fā)者可以基于NDK更高效地構(gòu)建算法,進(jìn)行圖形圖像繪制。從實(shí)踐的角度看,只要能獲取到底層類(lèi)庫(kù)的頭文件信息,開(kāi)發(fā)者就可以逾越NDK的界限,用其他核心類(lèi)庫(kù)的接口進(jìn)行開(kāi)發(fā)。但這樣做的危險(xiǎn)之處在于兼容性差,Android在版本變遷時(shí),可能會(huì)替換或修改一些類(lèi)庫(kù)接口或?qū)崿F(xiàn),這就會(huì)導(dǎo)致依賴(lài)于這些類(lèi)庫(kù)的應(yīng)用無(wú)法運(yùn)行。而NDK提供的都是穩(wěn)定的類(lèi)庫(kù)實(shí)現(xiàn),不會(huì)再做修改,以保證使用NDK的應(yīng)用具有向上的兼容性。
- 少兒人工智能趣味入門(mén):Scratch 3.0動(dòng)畫(huà)與游戲編程
- C語(yǔ)言程序設(shè)計(jì)案例教程
- jQuery Mobile Web Development Essentials(Third Edition)
- 解構(gòu)產(chǎn)品經(jīng)理:互聯(lián)網(wǎng)產(chǎn)品策劃入門(mén)寶典
- C#編程入門(mén)指南(上下冊(cè))
- Python Network Programming Cookbook(Second Edition)
- Python 3破冰人工智能:從入門(mén)到實(shí)戰(zhàn)
- Learning Hunk
- Python Web數(shù)據(jù)分析可視化:基于Django框架的開(kāi)發(fā)實(shí)戰(zhàn)
- 精通MATLAB(第3版)
- Java程序設(shè)計(jì)入門(mén)
- Mastering Web Application Development with AngularJS
- Python項(xiàng)目實(shí)戰(zhàn)從入門(mén)到精通
- 實(shí)驗(yàn)編程:PsychoPy從入門(mén)到精通
- 軟硬件綜合系統(tǒng)軟件需求建模及可靠性綜合試驗(yàn)、分析、評(píng)價(jià)技術(shù)