深入剖析android
❶ Android內核剖析和深入理解Android哪個更好
內核剖析不錯!強烈建議!
深入理解,不如內核剖析與源碼結合的緊密。
❷ 安卓開發的入門書籍大家推薦幾本
1、《GoogleAndroidSDK開發範例大全》
《GoogleAndroidSDK開發範例大全》是2010年人民郵電出版社出版的圖書。全書共分10章,主要以範例集的方式來講述Android的知識點,詳細介紹了開發Android的人機交互界面、Android常用的開發控制項、使用Android手機收發簡訊等通信服務。
2、《Android軟體安全權威指南》
本書主要介紹Android平台上的軟體安全技術。從平台搭建和語言基礎開始,循序漸進地講解了Android平台上的軟體攻防技術。本書共12章,系統地講解了與Android軟體安全相關的環境搭建、文件格式、靜態分析、動態調試、Hook與注入、軟體保護技術、軟體殼等多個主題。
3、《Android開發精要》
《Android開發精要》是2012年機械工業出版社出版的圖書,作者是范懷宇。該書講述的是如何才能寫出貼近Android設計理念、能夠更加高效和可靠運行的Android應用,通過Android的源代碼去了解其底層實現細節是最重要的方法之一。
4、《Android應用性能優化》
《Android應用性能優化》是2012年人民郵電出版社出版的圖書,作者是[法] Hervé Guihot。本書主要介紹如何快速高效地優化應用,讓應用變得穩定高效。
5、《Android應用UI設計模式》
《Android應用UI設計模式》面向Android 4.0+操作系統,是市面上第一本深入解析Android界面設計的佳作。《Android應用UI設計模式》從適用於移動設備和平板的通用模式以及Android UI設計指南出發。
參考資料來源:
網路—《GoogleAndroidSDK開發範例大全》
網路—《Android軟體安全權威指南》
網路—《Android開發精要》
網路—《Android應用性能優化》
網路—《Android應用UI設計模式》
❸ 深入理解Android的媒體推薦
作者是Thundersoft多媒體組的牛人,技術精深,樂於分享,對Android系統有真正的理解。《深入理解Android:卷1》內容給力,語言生動,全書沒有一句廢話,各章中的「拓展思考」尤為精彩,體現了作者對Android實現原理的深入理解和批判性思考。為什麼Android的簡訊群發很慢?為什麼拔出SD卡時有的程序會退出?讀者都能從本書中找到諸如此類的各種實際問題的答案。更重要的是,讀者能夠對Android的整個體系有一個全新的理解。如果你通讀了這本書,請一定投一份簡歷給我們。
——Thundersoft(中科創達軟體科技(北京)有限公司)
對於Android開發工程師而言,本書不可多得,分析透徹深入,針對性極強。Android系統本身極為龐大,如果要對整個系統進行面面俱到且細致入微地分析,恐怕不是一兩本書能完成的。本書從開發者的實際需求出發,有針對性地對Android系統中的重要知識點和功能模塊的源代碼實現進行了剖析,這樣既能幫助開發者解決實際問題,又能使分析深入透徹,而不是停留於表面。強烈推薦!
——機鋒網
這本書非常實用,絕不是枯燥的源代碼分析,是深入理解Android工作機制和實現原理的一本好書。為什麼說它實用呢?因為它的最終目的並不是停留著源代碼分析上,而是要幫助開發者解決實際問題,於是所有知識點的分析和講解都是從開發者的實際需求出發的。與一般的源代碼分析的書相比較而言,本書在語言上多了幾分幽默,更加生動易懂。更重要的是,本書的分析十分深入,探討了Android相關功能模塊的本質。
——51CTO移動開發頻道
隨著Android 系統越來越流行,Android應用的需求也在不斷變化,對於開發者而言,深入理解Android系統原理顯得越來越重要。目前市面上Android 開發相關的圖書已經很多,但真正能夠系統、深入地講解Android系統原理的書還乏善可陳。這本書的出版恰逢其時,該書同時兼備深度和廣度,以循序漸進的方式,優雅的語言,深入分析到各個模塊的源碼與原理。另外,它啟發性的講解方式,更有助於讀者的學習和思考。
——開源中國社區
❹ 深入理解android telephony原理剖析與最佳實踐 是android 什麼版本de
卷1主要講的一些Android世界的由來和一些學習底層庫所需掌握的知識,然後講了音頻Audiolinger和圖像Surfacelinger,和一些其他的服務,對應用層和框架層開發意義不大。卷2主要講的是框架層Framework的知識,對系統開發有幫助。卷3主要講和UI相關的,對應用幫助最大就是這本書了,裡面也講了很多系統開發相關的知識。
❺ 怎樣評價羅升陽的android系統源代碼分析
我幹了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的作品目錄
第1章 閱讀前的准備工作 / 1
1.1 系統架構 / 2
1.1.1 Android系統架構 / 2
1.1.2 本書的架構 / 3
1.2 搭建開發環境 / 4
1.2.1 下載源碼 / 4
1.2.2 編譯源碼 / 6
1.3 工具介紹 / 8
1.3.1 Source Insight介紹 / 8
1.3.3 Busybox的使用 / 11
1.4 本章小結 / 12
第2章 深入理解JNI / 13
2.1 JNI概述 / 14
2.2 學習JNI的實例:MediaScanner / 15
2.3 Java層的MediaScanner分析 / 16
2.3.1 載入JNI庫 / 16
2.3.2 Java的native函數和總結 / 17
2.4 JNI層MediaScanner的分析 / 17
2.4.1 注冊JNI函數 / 18
2.4.2 數據類型轉換 / 22
2.4.3 JNIEnv介紹 / 24
2.4.4 通過JNIEnv操作jobject / 25
2.4.5 jstring介紹 / 27
2.4.6 JNI類型簽名介紹 / 28
2.4.7 垃圾回收 / 29
2.4.8 JNI中的異常處理 / 32
2.5 本章小結 / 32
第3章 深入理解init / 33
3.1 概述 / 34
3.2 init分析 / 34
3.2.1 解析配置文件 / 38
3.2.2 解析service / 42
3.2.3 init控制service / 48
3.2.4 屬性服務 / 52
3.3 本章小結 / 60
第4章 深入理解zygote / 61
4.1 概述 / 62
4.2 zygote分析 / 62
4.2.1 AppRuntime分析 / 63
4.2.2 Welcome to Java World / 68
4.2.3 關於zygote的總結 / 74
4.3 SystemServer分析 / 74
4.3.1 SystemServer的誕生 / 74
4.3.2 SystemServer的重要使命 / 77
4.3.3 關於 SystemServer的總結 / 83
4.4 zygote的分裂 / 84
4.4.1 ActivityManagerService發送請求 / 84
4.4.2 有求必應之響應請求 / 86
4.4.3 關於zygote分裂的總結 / 88
4.5 拓展思考 / 88
4.5.1 虛擬機heapsize的限制 / 88
4.5.2 開機速度優化 / 89
4.5.3 Watchdog分析 / 90
4.6 本章小結 / 93
第5章 深入理解常見類 / 95
5.1 概述 / 96
5.2 以「三板斧」揭秘RefBase、sp和wp / 96
5.2.1 第一板斧——初識影子對象 / 96
5.2.2 第二板斧——由弱生強 / 103
5.2.3 第三板斧——破解生死魔咒 / 106
5.2.4 輕量級的引用計數控制類LightRefBase / 108
5.2.5 題外話—三板斧的來歷 / 109
5.3 Thread類及常用同步類分析 / 109
5.3.1 一個變數引發的思考 / 109
5.3.2 常用同步類 / 114
5.4 Looper和Handler類分析 / 121
5.4.1 Looper類分析 / 122
5.4.2 Handler分析 / 124
5.4.3 Looper和Handler的同步關系 / 127
5.4.4 HandlerThread介紹 / 129
5.5 本章小結 / 129
第6章 深入理解Binder / 130
6.1 概述 / 131
6.2 庖丁解MediaServer / 132
6.2.1 MediaServer的入口函數 / 132
6.2.2 獨一無二的ProcessState / 133
6.2.3 時空穿越魔術—defaultServiceManager / 134
6.2.4 注冊MediaPlayerService / 142
6.2.5 秋風掃落葉—StartThread Pool和join Thread Pool分析 / 149
6.2.6 你徹底明白了嗎 / 152
6.3 服務總管ServiceManager / 152
6.3.1 ServiceManager的原理 / 152
6.3.2 服務的注冊 / 155
6.3.3 ServiceManager存在的意義 / 158
6.4 MediaPlayerService和它的Client / 158
6.4.1 查詢ServiceManager / 158
6.4.2 子承父業 / 159
6.5 拓展思考 / 162
6.5.1 Binder和線程的關系 / 162
6.5.2 有人情味的訃告 / 163
6.5.3 匿名Service / 165
6.6 學以致用 / 166
6.6.1 純Native的Service / 166
6.6.2 扶得起的「阿斗」(aidl) / 169
6.7 本章小結 / 172
第7章 深入理解Audio系統 / 173
7.1 概述 / 174
7.2 AudioTrack的破解 / 174
7.2.1 用例介紹 / 174
7.2.2 AudioTrack(Java空間)分析 / 179
7.2.3 AudioTrack(Native空間)分析 / 188
7.2.4 關於AudioTrack的總結 / 200
7.3 AudioFlinger的破解 / 200
7.3.1 AudioFlinger的誕生 / 200
7.3.2 通過流程分析AudioFlinger / 204
7.3.3 audio_track_cblk_t分析 / 230
7.3.4 關於AudioFlinger的總結 / 234
7.4 AudioPolicyService的破解 / 234
7.4.1 AudioPolicyService的創建 / 235
7.4.2 重回AudioTrack / 245
7.4.3 聲音路由切換實例分析 / 251
7.4.4 關於AudioPolicy的總結 / 262
7.5 拓展思考 / 262
7.5.1 DuplicatingThread破解 / 262
7.5.2 題外話 / 270
7.6 本章小結 / 272
第8章 深入理解Surface系統 / 273
8.1 概述 / 275
8.2 一個Activity的顯示 / 275
8.2.1 Activity的創建 / 275
8.2.2 Activity的UI繪制 / 294
8.2.3 關於Activity的總結 / 296
8.3 初識Surface / 297
8.3.1 和Surface有關的流程總結 / 297
8.3.2 Surface之乾坤大挪移 / 298
8.3.3 乾坤大挪移的JNI層分析 / 303
8.3.4 Surface和畫圖 / 307
8.3.5 初識Surface小結 / 309
8.4 深入分析Surface / 310
8.4.1 與Surface相關的基礎知識介紹 / 310
8.4.2 SurfaceComposerClient分析 / 315
8.4.3 SurfaceControl分析 / 320
8.4.4 writeToParcel和Surface對象的創建 / 331
8.4.5 lockCanvas和unlockCanvasAndPost分析 / 335
8.4.6 GraphicBuffer介紹 / 344
8.4.7 深入分析Surface的總結 / 353
8.5 SurfaceFlinger分析 / 353
8.5.1 SurfaceFlinger的誕生 / 354
8.5.2 SF工作線程分析 / 359
8.5.3 Transaction分析 / 368
8.5.4 關於SurfaceFlinger的總結 / 376
8.6 拓展思考 / 377
8.6.1 Surface系統的CB對象分析 / 377
8.6.2 ViewRoot的你問我答 / 384
8.6.3 LayerBuffer分析 / 385
8.7 本章小結 / 394
第9章 深入理解Vold和Rild / 395
9.1 概述 / 396
9.2 Vold的原理與機制分析 / 396
9.2.1 Netlink和Uevent介紹 / 397
9.2.2 初識Vold / 399
9.2.3 NetlinkManager模塊分析 / 400
9.2.4 VolumeManager模塊分析 / 408
9.2.5 CommandListener模塊分析 / 414
9.2.6 Vold實例分析 / 417
9.2.7 關於Vold的總結 / 428
9.3 Rild的原理與機制分析 / 428
9.3.1 初識Rild / 430
9.3.2 RIL_startEventLoop分析 / 432
9.3.3 RIL_Init分析 / 437
9.3.4 RIL_register分析 / 444
9.3.5 關於Rild main函數的總結 / 447
9.3.6 Rild實例分析 / 447
9.3.7 關於Rild的總結 / 459
9.4 拓展思考 / 459
9.4.1 嵌入式系統的存儲知識介紹 / 459
9.4.2 Rild和Phone的改進探討 / 462
9.5 本章小結 / 463
第10章 深入理解MediaScanner / 464
10.1 概述 / 465
10.2 android.process.media分析 / 465
10.2.1 MSR模塊分析 / 466
10.2.2 MSS模塊分析 / 467
10.2.3 android.process.media媒體掃描工作的流程總結 / 471
10.3 MediaScanner分析 / 472
10.3.1 Java層分析 / 472
10.3.2 JNI層分析 / 476
10.3.3 PVMediaScanner分析 / 479
10.3.4 關於MediaScanner的總結 / 485
10.4 拓展思考 / 486
10.4.1 MediaScannerConnection介紹 / 486
10.4.2 我問你答 / 487
10.5 本章小結 / 488
❼ 如何分析 iOS,Android 和 Windows Phone 的 UI 設計
iPhone、Galaxy S3 以及 Lumia 920是市場上如今最引人注目的三款智能手機,正好對應iOS、Android及Windows
Phone三大平台,盡管三大操作系統在市場份額、出貨量以及用戶認可方面都有著不小的差異。
但更能我們興趣,更有討論價值的其實是這三大平台在設計方面的差異,這不僅最終決定著用戶的體驗,也決定了開發者的參與熱情。
這篇文章從包括變局、導航邏輯、設計風格等六大方面的差異對三大平台的交互設計進行了較為深入的分析和討論,極具參考價值。
一,布局形式的差異
1)iOS 經典的「tab bar」
在 iOS 應用內如果要切換不同的模塊,或者頁面內要切換不同的欄目,往往都會用到「tab bar」這一形式的控制項。這個經典設計從 iOS
早期沿用至今,大部分 iOS 應用都是這樣設計的。當然,iOS 本身是很包容的,最近也很流行抽屜式導航。但是 tab bar
一直是最受歡迎也最好被用戶認知的方式:
2)Android 提供了 2 種視圖控制方式
在 Android 4.0 規范出來之後,Android 提出了 2
種視圖控制方式,一種是直接在導航欄的標題下加入一個觸控按鈕,點擊後會彈出切換欄目的菜單(圖中 2 標注的位置)
比如日歷應用點擊後可以切換不同的視圖,另外一種是直接在導航欄的下面加入了一個視圖控制欄(下右圖中 2 標注位置),和 iOS 的 tab bar
很像,不過是僅放在了上面,而且提倡支持手勢滑動切換:
3) Windows Phone 的創新
Windows Phone 與上面兩個平台就差距很大了,因為 Windows Phone 獨特的 Metro UI
提倡回歸傳統的閱讀體驗,像瀏覽報紙和雜志一樣瀏覽手機上的內容,更關注與內容而不是修飾,所以 Windows Phone
整體都給人一種像在看雜志的感覺。Windows Phone 的視圖控制通過一種叫做「全景視圖」的方式展開(下圖)。
實際上,4 個視圖的內容是在一個頁面上的,而且是一個頁面同時載入的。用戶的手機默認只顯示第一屏的內容,通過滑動把後面的內容拉出來。
這種視圖方式很創新,而且方便閱讀,不得不說瀏覽的體驗好了很多。但是需要注意的是:
•因為其實這3個欄目是同一頁面視圖,所以不要將內容放的過多,否則載入會很慢影響效率;
•對交互設計過程中的排版和視覺提出了很高的要求;
另外,Windows Phone 還提供了一種叫做樞軸的方式,樞軸和 iOS 的 tab bar
相差不是很大,只不過完全是通過滑動來切換欄目的:
(樞軸布局)
二,導航邏輯的差異
大家都知道 iOS 是沒有實體返回按鍵的,所有返回都是通過導航欄的 back 按鈕來完成。
在iOS的導航邏輯中,我們可以明顯的看出來,整個程序是一頁一頁的切換,就像一個幻燈片。而返回按鈕也就是切換到上一頁。所以,iOS
的返回控制的是頁面。
但是 Android 和 Windows Phone 就不是這樣了,Android 和 Windows Phone
是有物理返回按鈕的,點擊物理返回按鈕,控制的不光是一個頁面,而且包括了上一步的操作,比如說:
進入頁面 A,點擊文本框彈出鍵盤。那麼點擊返回按鍵就是收起鍵盤。
所以 Android 和 Windows Phone 的返回邏輯是按照時間流來判斷的,而不僅僅是頁面,返回按鈕控制的是動作。
需要特意提一下的是:Windows Phone 的返回邏輯不單限於應用內,還影響到應用之間。也就是說你當前正在桌面,再點擊一次
back,就會進入你上一次打開的應用。
另外在 Android 4.0 開始,提出了一個向上的概念,就是導航欄標題前面的一個小箭頭,點擊這個箭頭,是回到該頁面的上一個層級:
三,應用之間聯系的差異
眾所周知,iOS 是一個封閉的系統,而 Android 是一個開放的系統。
我們可以比喻 iOS 每一個應用都是一個小房間,每個應用都在自己的房間里做自己的事情,互相之間不進行任何來往。而 Android
則是一個大大的辦公區,每個應用雖然也有自己的工位,但是可以互相串門或者借用東西,而 Windows Phone 則遵循著和 iOS 差不多的方式。到了 iOS
6 的時候可以支持應用直接互相跳轉了,但那也僅限於你跳出去了,就不再回來了,也就是說到了那個房間你就是那個房間的人了,與之前的房間沒有關聯了。
這樣的差異意味著,iOS 和 Windows Phone
應用的許可權變得很低,身為應用的你既不能修改系統的一些屬性(除非越獄了),也不能修改其他應用的內容。而 Android
的一款應用不但可以控制系統的一些操作,還可以控制其他應用執行某些特定的操作。
這種差異會讓 Android
上的應用設計有了更多的可能,身為設計師的你可以根據這一特性設計很多不錯的功能,比如系統美化或者系統優化,殺毒,攔截電話等功能,而 iOS 和 Windows
Phone 就不能。但是這也讓 Android 系統面臨了很嚴峻的安全問題,所以Android上各種優化和殺毒軟體很流行。
四,多任務的差異
多任務的差異用一句話來形容就是:iOS 和 Windows Phone 都是假的多任務,而 Android 是真的多任務。
如果你設計的應用有下載,那麼 iOS 和 Windows Phone 切換到後台下載就被暫停了,而
Android 不但不會暫停,你還可以設計一些偷偷在後台運行的功能!
五,解析度的差異
親,你知道Android現在有多少種解析度嗎?
(TECH2IPO 註:此數據圖顯示的是 2011 年 Android 手機狀況,現在,相關問題已經有所緩解和減輕。)
適配一直是 Android
很頭痛的問題,身為前端往往要為不同的解析度調效果而保證界面不會變形和模糊。而解析度問題不僅僅影響視覺這一塊,對交互設計也有很大的影響。因為這些手機往往屏幕比例也是不同的,你需要考慮不同的長寬比下,你的界面布局應該是怎樣的。所以在設計
Android 的時候,你不能要求把界面布局寫死,應該盡量保證每個控制項都是浮動的,而且自己能評估出各種古怪的布局下的效果。
iOS 和 Windows Phone 就會好很多。iOS 解析度分為 320x480,640x960,640x1136,Windows Phone
解析度分為
480x800,800x1280,800x1136。雖然看起來也蠻多的,但是界面的比例基本上沒有什麼變化。所以對於交互上的布局影響並不是很大,視覺設計師也可以通過腳本縮小裁圖簡單的解決問題。
六,設計風格的差異
設計風格是這 3
個客戶端自己獨特的個性,設計風格不單影響的是視覺設計的層面,對交互設計也非常的重要。尤其是在考慮動效,擬物化交互的時候需要重視。iOS
的設計風格偏向擬物化風格,這個擬物化不光是視覺上做出很多擬物的小按鈕小控制項的,為了配合視覺,你往往在交互上也可以加一些生動有趣的內容。
比如說像最新的
Path,進入商店時遮陽板會有一個收起的效果,小卡片也會根據重力感應而搖擺。如果交互上就能體現出平台的設計風格的話,無疑會非常討好用戶,增加產品細節上的亮點。
Android 平台就簡單一些了,在整體的布局和交互形式和 iOS 差不多的情況下,盡量的簡潔,呈現一種科幻的風格即可以了。Android
平台盡量少用擬物化的動效,因為 Android 系統對於動畫效果的渲染比較差,如果太復雜的話可能會讓界面非常的卡。
Windows Phone 平台則有著很大的不同,Metro UI
的理念要求設計者更多的考慮如何展現內容,使用平滑的過渡動畫。而且還對設計者的排版和平面設計提出了一些考驗。所以建議交互設計的人好好讀讀WindowsPhone界面設計准則,並且平時就積累一些Windows
Phone界面的視覺界面感覺,不然視覺設計師很可能會埋怨你哦!
❽ 有研究android系統源碼的博客嗎
我幹了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的內容簡介
《深入理解Android(卷1)》共10章,第1章介紹了閱讀本書所需要做的准備工作,主要包括對Android系統架構和源碼閱讀方法的介紹;第2章通過對Android系統中的MediaScanner進行分析,詳細講解了Android中十分重要的JNI技術;第3章分析了init進程,揭示了通過解析init.rc來啟動Zygote以及屬性服務的工作原理;第4章分析了Zygote、SystemServer等進程的工作機制,同時還討論了Android的啟動速度、虛擬機HeapSize的大小調整、Watchdog工作原理等問題;第5章講解了Android系統中常用的類,包括sp、wp、RefBase、Thread等類,同步類,以及Java中的Handler類和Looper類,掌握這些類的知識後方能在後續的代碼分析中做到游刃有餘;第6章以MediaServer為切入點,對Android中極為重要的Binder進行了較為全面的分析,深刻揭示了其本質。第7章對Audio系統進行了深入的分析,尤其是AudioTrack、AudioFlinger和AudioPolicyService等的工作原理。第8章深入講解了Surface系統的實現原理,分析了Surface與Activity之間以及Surface與SurfaceFlinger之間的關系、SurfaceFlinger的工作原理、Surface系統中的幀數據傳輸以及LayerBuffer的工作流程。第9章對Vold和Rild的原理和機制進行了深入的分析,同時還探討了Phone設計優化的問題;第10章分析了多媒體系統中MediaScanner的工作原理。
《深入理解Android(卷1)》適合有一定基礎的Android應用開發工程師和系統工程師閱讀。通過對本書的學習,大家將能更深刻地理解Android系統,從而自如應對實際開發中遇到的難題。
❿ 安卓開發需要學習什麼
學習分三個階段:
1,Android基礎階段:平台架構特性(JAVA/C) Market/應用程序組件 環境搭建與部署/打包與發布 AVD/DDMS/AAPT 調試與測試 相關資源訪問/資源製作 Activity/Service/Broadcast Receiver/Content Provider/原理(生命周期)及深層實現
2,Android進階初級:組件Widget/ 菜單Menu/ 布局Layout 詳解 Xml解析(Pull/Dom/Sax)/JNI 解析SQL資料庫原理,。
SQLite /SharedPreferences/File詳解 多媒體Audio/Video/Camera 詳解
3,Android進階高級:藍牙/WIFI SMS/MMS 應用實現 深層次解析GPS原理。
實現LocationManager/LocationProvider 進行定位/跟蹤/查找/趨近警告以及Geocoder正逆向編解碼等技術細節 2D圖形庫(Graphics/View)詳解 SDCARD/感測器/手勢 應用實現
(10)深入剖析android擴展閱讀:
知識體系
1、Unix/Linux平台技術:基本命令,Linux下的開發環境
2、企業級資料庫技術:SQL語言、SQL語句調優、Oracle資料庫技術
3、Java 語言核心技術:Java語言基礎、Java面向對象編程、JDK核心API、Java集合框架、Java網路編 程、JavaI/O編程、Java多線程編程、Java異常機制、Java安全、JDBC、XML
4、軟體工程和設計模式:軟體工程概述、配置管理及SVN、UML、基本設計模式
5、Android應用開發基礎:Android開發平台、Eclipse+ADT開發環境、AVD及感測模擬器調試、Android核心組件、Android常用組件、Android高級組件、文件及網路訪問、SQLite資料庫編程、後台服務編程
6、互聯網核心技術: HTML、CSS、JavaScript、JQuery、Ajax應用
7、Android高級應用開發:音頻視頻攝像頭、互聯網應用、GPS和位置服務、Google Map、2D3D繪制、感測器開發、游戲開發、電話及SMS服務、網路BluetoothWi-Fi等。
8、Android系統級開發:移植、驅動、NDK(C方向)。
9、JavaEE核心技術:Servlet核心技術、JSP核心技術、Struts、Spring、Hibernate框架。