當前位置:首頁 » 安卓系統 » android底層開發實戰

android底層開發實戰

發布時間: 2022-01-22 02:52:19

『壹』 怎樣學習android底層開發

Android底層開發技術實戰詳解——內核、移植和驅動

Android與linux的關系
Linux Kernel的版權是GPL(General Public License),它要求對源代碼的任何修改都必須開源。
Android的Kernel採用的GPL,但Android採用ASL(Apache Software License),不必開源。
Google特意修改了Kernel,將某些功能轉移到上層HAL(Hardware Abstraction Layer)中。
因此,從2010年2月,即Linux2.6.33起,Android Kernel已經從Linux Kernel中刪除。
三種內核
1、Goldfish,它是由Google提供的一種虛擬的ARM處理器,在Android的模擬環境中使用。
2、MSM(Mobile Station Modem),它是由美國高通(Qualcomm)公司提供的ARM處理器晶元組。
3、OMAP(Open Multimedia Application Platform),它是由美國德州儀器(Texas Instruments,簡稱TI)公司提供。
三類驅動程序
1、字元設備
2、塊設備
3、網路設備
兩種驅動類型
1、專用驅動,非Linux標准,純軟體
2、設備驅動

『貳』 如何入手學習android 底層開發

android 底層開發學習:
一、基於Android的CPU+GPU的異構編程開發,目前主要有以下幾種平台:
1. OpenCL
在桌面系統和大規模並行計算領域被普遍使用的一種底層API。最近一段時間,主流的晶元廠商的旗艦或准旗艦晶元都開始支持OpenCL1.1或者1.2標准,包括高通,三星, 聯發科,Rockchip等廠商的晶元,都可以找到OpenCL的支持。
2. CUDA
目前只有NVIDIA自己出的基於Tegra K1晶元的設備(NVIDIA Shield)支持CUDA,所以支持的面比較窄。
3. RenderScript (RS)
Google力推的異構編程,宗旨是由平台幫你選擇運行的處理器,也就是說你是不知道你的程序跑在CPU還是GPU上的,這是由系統的驅動來決定的。想法是美好的,可現實是開發者並不買RS的帳, 大家覺得RS的性能不可控,靈活性太差,其文檔之缺乏也被人詬病;此外,晶元廠商對於RS的優化都還普遍處於比較低階的水平,這些都導致了RS在實際應用中很少被用到。

二、由於OpenCL的普及程度,以下部分只針對OpenCL展開。
目前支持OpenCL的設備和晶元
1. 支持OpenCL的GPU
高通幾乎全系的GPU, 包括但不限於以下GPU (Adreno 305, 320, 330, 405, 420, 430, 530 ...)
ARM Mali的6系和7系GPU, 比如T628, T760

2014年以來較新的Imagination PowerVR GPU,比如G6430
2. 支持OpenCL的晶元。以下是一個很粗略地列舉了主要的支持OpenCL的晶元。

高通8064, 8974(驍龍800,801), 8084(驍龍805), 8994(驍龍810)等
三星 Exynos獵戶座 5420, 5433 (內置ARM Mali GPU)
聯發科 MT6752 (內置ARM Mali T760 GPU)
瑞芯微 RK3288 (內置ARM Mali GPU)
3. 支持OpenCL的手機和平板。 這個就數不勝數了,下面只隨手給出幾個例子以供參考。(注意:Google Nexus系列的手機或平板,雖然硬體上支持OpenCL,但因為刪掉了OpenCL的驅動程序,所以基本都不支持OpenCL;值得注意的是,據國外blog上報道,可以將相應的OpenCL驅動推送回設備以重新開啟OpenCL的支持, 詳見maxlv.net 的頁面)

三星 Galaxy S4, S5, S6, Note 3, Note 4
LG G2, G3, G4
HTC One M7, M8, M9
小米使用高通晶元的手機和平板
魅族M1 Note
台積電P90HD
等等等等。。。。
如果不確定手頭的設備是否支持OpenCL, 可以使用OpenCL-Z Android進行檢測,這款軟體可以顯示詳細的OpenCL的設備信息,同時運行micro-benchmark檢測設備的計算能力。
三、需要掌握的知識:
1. 簡單的GPU基本知識
2. OpenCL並行程序設計
3. Android NDK知識
4. Android JNI介面的編寫
5. 簡單的Android程序開發知識

四、開發的步驟(這里只是步驟的精簡版本,只闡述操作,不進行解釋):
1. 編寫OpenCL的C/C++程序實現GPU的核心計算代碼
2. 用Android NDK編譯之前寫的C/C++代碼。這一階段可以在純C/C++環境下工作,可以編寫main函數測試實現的功能,用NDK將代碼編譯為可執行的代碼(BUILD_EXECUTABLE), 然後用ADB將可執行程序推送到設備上運行。運行可執行程序要求設備具有root許可權,如果沒有root許可權,可以通過Native Program Launcher (AndroidNativeLauncher · GitHub,可能需要翻牆) 這一工具在設備上執行二進制代碼。
3. 上一階段測試結束,功能基本正常。開始編寫JNI介面。
4. 開始編寫Android應用程序,使用JNI封裝native函數。編譯C/C++代碼成動態鏈接庫。
5. 在Android程序里,以靜態方式載入上一步編譯的動態鏈接庫。
6. 在需要的地方(比如點擊按鈕事件),調用相應的native函數,即可實現相應的功能。

『叄』 一個Android偏底層開發人員,對發展很迷茫,我該怎麼發展

個人認為做BSP一般分成兩種:bring up和porting。一般做產品的基本上都沒有機會做bring up工作。做bring up一般都是方案商或者晶元廠商。

以下分析下做porting讓人迷茫的原因:
做porting的確會讓人迷茫,因為在這個過程中我們需要改動的代碼其實不多,面臨整個產品的BSP porting工作時,我們需要熟悉kernel / android HAL / android framework各個子系統,但子系統太多導致我們可能沒法精通所有的子系統。譬如 kernel中的usb 的枚舉過程、pcie設備的枚舉過程、ALSA中如何加入新的 audio codec驅動、V4L2中如何添加新的camera sensor的驅動等等。簡單說,android體系龐大,BSP部分涉及3種編程語言,多個子系統,全部精通對個人而言不太現實,所以總會感覺自己什麼都不會,但什麼又都知道一點。

想要破除這個魔咒,「普遍撒網,重點捉魚」的戰術會湊效。譬如我做過一年硬體,做了三年的kernel driver porting,做了一年android kernel/HAL/Framework開發維護,體系跨度不算大,但東西都比較繁雜,技術含量並不高。所以我得規劃是重點學習 audio/video部分,以後做多媒體部分的工作。

以上說的可能會比較亂,想到哪寫到哪,希望對你有所幫助。其實我也比較迷茫,人生不就是這樣么,迷茫著,然後一輩子就過去了^v^

『肆』 關於學習安卓底層,懂得進

我幹了3年Android sdk開發,覺得到了瓶勁沒法更進一步,於是花了一年多點時間,大概摸到點門徑。根據前輩的經驗,Android底層完全入門需要兩年。

先說下我的入門過程:
第零步,下載源碼,我下的4.2的,框架層源碼10G,內核2G多,ctags給框架層建的標簽文件都有600M,當時讓我有點震撼,用的vim+ctags+cscope來閱讀,還算不錯,架構挺清晰的。

第一步,我找到了一本好書《Android的設計與實現 第一卷》它講了Android框架層的啟動,初始化,服務框架初始化,Binder,消息循環,PackageManagerService,ActivityManagerService。據作者說後面會出講UI子系統的第二卷,拭目以待。其實這本書看了幾十頁我就發現需要第二步的知識,否則看不下去,於是跳去第二步。

第二步,學習Linux系統編程,在看《Android的設計與實現》的時候我發現,框架層的Native部分,全是Linux編程。為了掌握這部分知識,我花了4個月學習了《Linux系統編程手冊》(TLPI)這本1000多頁的書,我以前是搞WIndows文件系統這塊的,所以C語言還比較熟,TLPI的習題很有意思,量也比較大,堅持下來還是收獲很多。

第三步,花了4個月學習了一些Linux內核的知識,看了LKD,PLKA看了一半多。越學越沒底,覺得不懂得越來越多,不過這個也正常,只有靠慢慢磨,估計以後要不斷的磨這塊。

第四步,回頭看Android源碼,這次一口氣看完了《Android的設計與實現 第一卷》,終於對框架層有了譜。同時真的數次把我看暈,前面看Linux內核源碼都沒這么暈,不斷在java層和Native層之間跳有點磨腦漿。其中我又覺得Java的基礎沒有打太牢,回去補了一個月的《Core Java》第八版。但是這書沒有涉及UI子系統,於是又看了《Android內核剖析》

第五步,《Android內核剖析》(這本書實際上是講框架層的,作者也是個搞嵌入式的,所以他在寫框架層的時候文筆不太好,很羅嗦,不過還是有很多看點,到他後來寫做ROM,玩開發板時估計是說到了他的本行,一下子遛起來了看得出還是挺有水平的,這本書知識有點舊畢竟講的是2.3很多代碼已經過時,但是作者很多點子很有參考價值)這本書講UI子系統和按鍵/觸摸消息處理系統還是很有分量的,尤其13章View繪制那裡,結合源碼研究很有收獲。而後面他講編譯框架和ROM相關的東西都是挺寶貴的資料。

第六步,為了再補一下其他諸如電源管理模塊等子系統的知識看了,《深入理解android》系列,個人認為這個系列看起來有點不太舒服,不過作為補充印證還是比較有價值。

第七步,《Android系統源代碼情景分析》,羅升陽的源碼分析大作,比《Android的設計與實現》分析得更細致,但缺點是涉及到模塊比較少,選用的源碼也比《Android的設計與實現》更舊一點。看完書後需要去研究作者的博客,東西挺多的,一定讓你滿意。

第八步,買塊開發板自己玩。這步我還沒走到,原因是我覺得我還差點准備知識。可能要再幾個月,到時准備入塊6410或者樹莓派。

最後,由於我11年以前都是搞Windows這塊的,所以對Linux知識不是很了解,不得已看了這么些書,如果是一直做Linux的人,很多步驟估計可以省掉了。直接上源碼才是正道。

我本身做著移動GIS開發的工作,學框架層全是因為興趣,但招聘平台Android框架層開發人員還是蠻有競爭力的有不少定製ROM,智能電視的工作都處於人才難求狀態,畢竟有一定的門檻,現在各種ios培訓,讓奔著錢干開發的人紛紛湧入,而ios只能幹sdk開發的缺點就暴露出來了,一堆新手老手,菜鳥大牛全擠在SDK開發這塊,我覺得不太妙。 反觀Android這邊,雖然入門菜鳥沒有搞ios來錢,但是可持續性很好,從sdk-》框架》驅動》內核這樣幹下去。干著干著發現自己漸漸變成了Linux開發者/嵌入式開發者的人也不少,新人,老手,菜鳥大牛各居其位,層次性很好。

『伍』 《Android系統級深入開發》pdf下載在線閱讀,求百度網盤雲資源

《Android系統級深入開發》(韓超//梁泉)電子書網盤下載免費在線閱讀

資源鏈接:

鏈接:

提取碼: nx1v

書名:Android系統級深入開發

作者:韓超//梁泉

豆瓣評分:6.2

出版社:電子工業出版社

出版年份:2011-2

頁數:372

內容簡介:《Android系統級深入開發:移植與調試》是一本全面介紹Android系統級開發的作品,全書以移植和調試為重點。Android具有一個龐大的軟體系統,任何開發者都難以掌握系統的每一個細節。因此,如何高效地理解和開發系統,就成了Android系統級別工程師面對的主要問題。《Android系統級深入開發:移植與調試》作者以實際的開發經驗為基礎,以軟體工程思想為指導,完成了《Android系統級深入開發:移植與調試》。《Android系統級深入開發:移植與調試》介紹了從Android開源工程到一個基於實際硬體產品中的主要工作,一方面讓讀者清晰把握各個子系統的架構,另一方面讓讀者把握移植這個開發核心環節的要點。

讀者對象:Linux開發人員、移動設備開發人員、Android系統框架層和底層開發人員、有意圖深入學習Android的人員、手機研發的公司。

作者簡介:移動系統開發資深工程師,在Android領域具有完備的知識和前沿的技術,長期從事一線開發工作。韓超是中國大陸地區較早參與Android系統開發的人員之一,也是中國大陸的Androidin(機鋒網)開發社區的核心成員和重要組織者之一;也曾經引領大陸各種相關技術人員進入Android領域,並組織參與國內外的相關枝術交流。

『陸』 Android底層開發技術實戰詳解 第2版 怎麼樣

Android底層開發技術實戰詳解 第2版不建議買
Android系統移植和驅動開發強些

『柒』 安卓底層開發能做什麼

android底層?
你是指的是android平台代碼開發還是希望對android的腳本,版本控制方面的開發?
如果是android平台代碼的開發:
到google網站下載source code,一點點開始研究底層的代碼 Java基礎就可以
如果想腳本,版本控制或者android底層的C代碼的開發:
那就需要你對C很精通對android的源碼結構非常了解,而且JNI等等技術你都要明白

『捌』 Android應用開發和底層開發哪個更有前途

不是很清楚你說的前途是什麼?多賺錢 or 技術達人 or 兩個平台的發展前景? 1、很大程度,吸金看產品不看平台,多數產品會每個平台都做,好產品才能賺錢。 2、技術上講, iOS基於unix, android基於linux, 都是基於POSIX標準的系統,很多底層功能都是類似的。但iOS封閉,限制了很多功能,android是開放的,自由發揮程度很大。應用開發上, iOS的SDK封裝得不錯,用objective-c開發還是蠻方便的,android用java開發難度也不大,但設備多、系統版本多、商城多,經常一個軟體得放出n多版本的安裝包。應該說做android可以玩得更深。 3、哪個平台以後會更大眾、更流行: 我覺得android 。 現在iphone系統的性能、用戶體驗都比android好很多,但隨著設備發展,android的這些問題會好起來,而且android系統開源、做的廠家多,以後android手機的市場會更大,android的軟體也就更賺錢了。

『玖』 android底層開發Or Ios開發

Android和iOS還是有很大差別。
的iOS蘋果的OSX,UNIX系統,OSX已有近10年的歷史,從內核底層軟體架構逐步發展。 iOS的ObjectivC這種古老的語言做開發。 Android是基於Linux操作系統,谷歌參與在嚴格的意義上說,Android是一個Linux系統,它不會有Linux XWIN,glibc中,缺乏一套完整的標準的Linux程序。大部分Android應用程序是用Java開發,運行在Dalvik虛擬機(一小部分的NDK)。谷歌在底層了很多東西。的Andr??oid視為一個新的操作系統。
? Android的Java,容易上手了很多良好的JAVA開發效率會更高
Lib的祝福嗎? IOS虛擬機,性能當然更好,與谷歌的改善越來越小
的區別嗎? iOS開發框架基本上和MAC上GM,相同的知識,手機的發展,可以同時開發Mac應用程序,Android有沒有這樣的優勢
iOS設備緊密地集成在一起。的硬體和軟體公司所有。但是Android不這樣做,通常情況下:谷歌發布的源代碼。晶元製造商需要1-3個月的時間做自己的晶元解決方案,手機製造商購買的晶元製造商進行自己的集成,定製工作,有時還需要為運營商定製的程序和代碼。

『拾』 有android嵌入式底層開發課程么 我不希望局限在上層,希望做驅動,做系統移植的工程師。

網路搜張凌華android課程,包括了android深入淺出,android嵌入式,android高級應用,應對不不同的水平學習。

熱點內容
游戲本緩存 發布:2024-11-14 12:55:28 瀏覽:649
微軟提供的編譯軟體 發布:2024-11-14 12:55:16 瀏覽:17
長沙java培訓機構哪家好 發布:2024-11-14 12:40:53 瀏覽:228
外存儲器硬碟能存儲的高清電影數 發布:2024-11-14 12:33:23 瀏覽:265
python分號作用 發布:2024-11-14 12:31:50 瀏覽:223
方舟編譯器下載要錢嗎 發布:2024-11-14 12:29:20 瀏覽:62
jspoa源碼 發布:2024-11-14 12:21:31 瀏覽:420
不記得了密碼怎麼辦 發布:2024-11-14 12:18:58 瀏覽:442
python字元串的大小 發布:2024-11-14 12:17:24 瀏覽:222
源碼編輯軟體 發布:2024-11-14 12:15:00 瀏覽:386