導航:首頁 > 操作系統 > 老羅的android之旅

老羅的android之旅

發布時間:2022-03-01 22:45:00

⑴ 求助如何在基於安卓通過WiFi與Arino通信,實現對LED燈的控制。

不難,就是步驟有點多,可以看看「老羅的android之旅」,從底層驅動,HAL,framework,app,一層層自己加東西調用

⑵ Android上層應用是如何訪問底層Linux層的 越詳細越好。。。望大蝦相助!

去csdn看老羅的android之旅

⑶ Android系統源代碼情景分析的網友評論

強大的羅大師,感謝你的Android之旅,我已看完你的6篇教程,雖然我還不太懂,但是我相信你就是我打開它的那把鑰匙,再次感謝你的教程。
——mutex_js
老羅,寫的太精彩啦!不僅僅是在Android 按鍵機制方面令人受益匪淺,給我在學習其他模塊上也提供了一套很好的分析思路。非常感謝!
——yuleslie
看你的文章,收獲很多,分析得很透徹,思路清晰,前後呼應,成系統,對我幫助很大,非常感謝你的無私奉獻!
——kenen2006
你的博客給了我一種非常刺激的體驗,讓我更深層次地認識Android。非常感謝你的講解,太棒了!
——stevenhu_223
我真的想放棄這個行業,可我看到你的博客,讓我看到了希望,讓我充滿了信心和堅定!
——zhudeqing
看過幾本Andriod方面的書,但還真比不上這里的博客。羅老師的Linux內核知識及對軟體架構的知識積累用功很深,代碼閱讀能力也很強!膜拜!
——herodie
我是看你的博客開始學Android的,寫的真的太好了。每一個系列都自成一體,無需其他參考。從頂到下都能串到一起,這樣看起來最痛快了!
——hellowolrd
本人語言功底也不是很好,所以系統學習Android也經歷了不少困難。3個多月了,反反復復閱讀你的博文;每一次都有進步,每一次的進步也都有不同的方向。謝謝!技術的道路上真沒有捷徑,更不可以偷懶。我將不懈努力!謝謝博主,期待您能出書!
——tankai19880619
剛看到老羅的這篇新作,還挺熱乎的。忍不住分N口氣讀完,膜拜!讀完後,有些有意思的想法,從文章本身來看,很精彩。這篇文章老羅至少說明了一下問題:
1. 兩種最典型的使用場景及他們的區別(UI相關與否);
2. 引出來兩種線程消息處理模型;
3. 用實例解釋兩種模型是如何使用的;
4. 最後介紹兩種模型的是怎樣實現的。
該文章不但告訴我們what(該文的主旨)、how (怎樣使用),還有why(怎麼實現)。
偶的神,一篇文章里寫了這么多,還能寫的這么清楚。不容易啊!
——rambo2188
太牛了!我是一個剛從事Android開發的新人,你的文章真是入木三分,讀了很有啟發,你的這種分析Android方式很棒!為了造福更多的Android學習者,建議你出書!
——yang105
我覺得也許學習這些知識並不算難,可是要做到時刻有一個清晰的思路去學並且能夠把學過東西用通俗易懂的話語表達出來挺難的。必盡自身知識有限,有些東西可能一下子無法深刻理解。樓主是怎麼做到的呢?感覺樓主的每篇文章都講的精練透徹,主要是能把問題全講出來。我想樓主的知識面一定很廣!
——wantianpei
前言
雖然Android系統自2008年9月發布第一個版本1.0以來,2011年10月發布最新版本4.0,一共存在十多個版本,但是據官方統計,截至2012年3月5日,占據首位的是Android 2.3,市場佔有率達到66.5%;其次是Android 2.2,市場佔有率為25.3%;第三位是Android 2.1,市場佔有率為6.6%;而最新發布的Android 3.2和Android 4.0的市場佔有率只有3.3%和2%。因此,在本書中,我們選擇了Android 2.3的源代碼來分析Android系統的實現,一是因為它的基礎架構是最穩定的;二是因為它是使用最廣泛的。
本書內容
全書分為初識Android系統篇、Android專用驅動系統篇和Android應用程序框架篇三個部分。
初識Android系統篇包含三個章節的內容,主要介紹Android系統的基礎知識。第1章介紹與Android系統有關的參考書籍,以及Android源代碼工程環境的搭建方法;第2章介紹Android系統的硬體抽象層;第3章介紹Android系統的智能指針。讀者可能會覺得奇怪,為什麼一開始就介紹Android系統的硬體抽象層呢?因為涉及硬體,它似乎是一個深奧的知識點。其實不然,Android系統的硬體抽象層無論是從實現上,還是從使用上,它的層次都是非常清晰的,而且從下到上涵蓋了整個Android系統,包括Android系統在用戶空間和內核空間的實現。內核空間主要涉及硬體驅動程序的編寫方法,而用戶空間涉及運行時庫層、應用程序框架層及應用程序層。因此,盡早學習Android系統的硬體抽象層,有助於我們從整體上去認識Android系統,以便後面可以更好地分析它的源代碼。在分析Android系統源代碼的過程中,經常會碰到智能指針,第3章我們就重點分析Android系統智能指針的實
現原理,也是為了後面可以更好地分析Android系統源代碼。
Android專用驅動系統篇包含三個章節的內容。我們知道,Android系統是基於Linux內核來開發的,但是由於移動設備的CPU和內存配置都要比PC低,因此,Android系統並不是完全在Linux內核上開發的,而是在Linux內核裡面添加了一些專用的驅動模塊來使它更適合於移動設備。這些專用的驅動模塊同時也形成了Android系統的堅實基礎,尤其是Logger日誌驅動程序、Binder進程間通信驅動程序,以及Ashmem匿名共享內存驅動程序,它們在Android系統中被廣泛地使用。在此篇中,我們分別在第4章、第5章和第6章分析Logger日誌系統、Binder進程間通信系統和Ashmem共享內存系統的實現原理,為後面深入分析Android應用程序的框架打下良好的基礎。
Android應用程序框架篇包含十個章節的內容。我們知道,在移動平台中,Android系統、iOS系統和Windows Phone系統正在形成三足鼎立之勢,誰的應用程序更豐富、質量更高、用戶體驗更好,誰就能取得最終的勝利。因此,每個平台都在盡最大努力吸引第三方開發者來為其開發應用程序。這就要求平台必須提供良好的應用程序架構,以便第三方開發者可以將更多的精力集中在應用程序的業務邏輯上,從而開發出數量更多、質量更高和用戶體驗更好的應用程序。在此篇中,我們將從組件、進程、消息和安裝四個維度來分析Android應用程序的實現框架。第7章到第10章分析Android應用程序四大組件Activity、Service、Broadcast Receiver和Content Provider的實現原理;第11章和第12章分析Android應用程序進程的啟動過程;第13章到第15章分析Android應用程序的消息處理機制;第16章分析Android應用程序的安裝和顯示過程。學習了這些知識之後,我們就可以掌握Android系統的精髓了。
本書特點
本書從初學者的角度出發,結合具體的使用情景,在縱向和橫向上對Android系統的源代碼進行了全面、深入、細致的分析。在縱向上,採用從下到上的方式,分析的源代碼涉及了Android系統的內核層(Linux Kernel)、硬體抽象層(HAL)、運行時庫層(Runtime)、應用程序框架層(Application Framework)以及應用程序層(Application),這有利於讀者從整體上掌握Android系統的架構。在橫向上,從Android應用程序的組件、進程、消息以及安裝四個角度出發,全面地剖析了Android系統的應用程序框架層,這有利於讀者深入地理解Android應用程序的架構以及運行原理。

⑷ 老羅的android之旅 qq群為什麼加不進去

估計太火爆了,qq群的人數已經超過最大上限了,其實吧,還不如買它一本書來看,人多了,qq群里也問不到什麼,還是找個大牛直接問好了.

⑸ Android里用 C 語言編寫的應用程序怎麼通過 binder 節點通信

我不懂你的意思,什麼叫C程序?你要直接call binder driver么?如果只是想在native layer里通過servicemanager 注冊一個service,然後用client 去call,我過去用過這個github的project去測android binder的readwrite performance:
mcr/Android-HelloWorldService · GitHub
然後你要想辦法把service run 起來,我當時很hack,直接在zygote里改了代碼,強行讓helloworld在系統init的時候生成,但應該有命令行給你用的,你可以在看看。

而去直接去和binder driver做交互也沒問題,只要做幾個ioctl call,然後起兩個process,一個注冊一個節點,然後另一個去寫message,但我沒具體實現過,你玩玩應該就出來了,我感覺過程可能就像這個shmget的example差不多 IPC:Shared Memory。

此外,Binder這東西沒什麼獨特的,它就是把最基本的message passing:一次傳輸要向kernel paste兩次(一次sender 到kernel,一次kernel到receiver,每次都有context switch)和shared memory(kernel 和 userland share 一塊 內存,不用context switch)合並起來了,就是receiver和kernel共享一塊內存,而sender和kernel的交互必須要嚴格遵守message passing的原則,於是就取了一個折中,兩次 paste就變成了一次。
此外,service manager會在自己被生成的時候現將自己注冊成binder里一個最特殊的service,其他程序想要進行ipc,就必須通過binder向service manager注冊,在binder生成一個unique id,然後其他client向service manager查詢時候就會得到那個id,於是就能通過binder與service process建立通訊。

我過去很喜歡玩這個,還很蛋疼的在minix上把binder原理實現了一遍,還有一個大神 老羅,他研究Android native非常透徹,你可以看他博客,能夠對整個Android從init到Dalvik跑起來全部了解,我現在只知道他一個,因為他把Android source code全都讀了一遍:老羅的Android之旅

⑹ 如何自學android 編程android 開發

一、 基礎篇 需要掌握的技能如下:
1、熟練掌握基本控制項以及容器控制項的使用 ;

常用的基本控制項有:Button 、TextView、EditText、ListView等

常用的容器控制項有:FrameLayout、LinearLayout、RelativeLayout等

2、熟練掌握相關監聽器的注冊和使用:

常用監聽器有: OnClickListener、OnLongClickListener、OnItemClickListener等

3、掌握Log的使用以及分析方法 ;

4、掌握Activity、Service的生命周期和使用方法 ;

5、掌握BroadcastReceiver(廣播)的接受和使用 ;

6、掌握Intent以及IntentFilter的使用 ;

7、基本掌握資料庫方面知識,包括SQLiteDatabase以及ContentProvider的使用方法
除此之外,我們必須得掌握adb shell 的使用方法,常用功能有:adb pull 、 adb push 、 adb remount 指令等
由於shell類同於Linux shell ,我們還得掌握基本的Linux指令等,例如cat、cd 等 。

知識獲取渠道主要為:

Android SDK以及網上大牛的博客。
附: 關於基礎知識的介紹,國內的一些書籍質量真是相當差勁,味同嚼蠟。強烈不建議在此階段買書籍。
這時,您已經小有所成了,能夠基本掌握Android開發了。這兒,我推薦一個手把手講解Android項目的視頻:
zhengping老師講解的,強烈推薦。 視頻下載地址:《Android視頻教程》(Android Video Course)畢業答辯結束,俺胡漢三又回來了。太多郵件沒有回復,抱歉。醞釀醞釀,繼續錄制視頻,敬請期待[DVDRip]

祝您一臂之力的當然還有Mars老師的視頻了。
實踐出真知。這個階段,你可以自己編寫一些小Demo了,幫助自己在更深層次發展了。

PS:我通過看了Mars老師視頻後,編寫了一個簡易的音樂播放器Demo, 感覺挺有成就感的。 通過前面的學習,我們可以成功進入第二個階段了。

二、 提高篇 需要掌握的技能如下:
1、掌握Canvas類的使用-- 如何繪圖

2、掌握消息通信機制---Handler相關類的使用以及原理

3、掌握Context類以及實現原理

4、掌握View樹的繪制流程 。 View繪制流程很重要,掌握它就基本上掌握了Android核心之一了。

4.1、掌握觸摸事件的分發流程--- onInterceptTouchEvent以及onTouchEvent方法流程

4.2、掌握相關監聽器的調用機制。例如OnClickListener監聽時怎麼調用的?

4.3、能夠編寫自定義View以及ViewGroup

5、理解Binder機制----Binder機制很重要,Android的進程間通信都是靠它完成的。掌握它,才能夠好的完成接下

來的學習。

6、基本掌握ActivityManagerService類的使用,主要掌握的知識點包括如下:

6.1、startActivity()流程,即啟動一個Activity的流程 ;

6.2、startService()流程,即啟動一個Service的流程 ;

7、基本掌握PackageManagerService類的使用,主要掌握的知識點包括如下:

7.1、開機時如何解析所有已安裝應用程序的Apk包的信息

7.2、Intent以及IntentFilter的匹配規則以及解析過程

8、基本掌握View添加至窗口的過程---即WindowManagerIml 、WindowManagerService類的用法

知識渠道:
必備書籍: <Android內核剖析> Android源代碼一份

PS: 您的個人電腦上一定得有份 Android源代碼,否則何以笑傲江湖 。
三、 進階篇

1、基本理解SystemServer類載入流程以及WatchDog的功能

2、more......
我也還是個小菜鳥,更多的就不知道咯。希望以後能夠完善起來。和大家共同成長。
最後,我總結的一些學習知識點只是一個提綱挈領,幫助大家學習成長的點或者線。例如:我負責通訊錄模塊,當然得把資料庫方面知識弄得一清二楚啊。不然,公司要我何用。因此大家在學習的時候,找出更適合自己的點。
有些人可能會想,工作中我用不到,學它幹嘛?再次也規勸大家在工作之餘,給自己充充電,多學點知識只有好的沒有壞的。
希望大家每天能進步一點,成長一點,接近心目中的那個天空更近一點。
前面說的博客,在此推薦兩個我常去的吧:
1、 應用方面,主要是魏祝林的csdn博客 :Android_Tutor的專欄 。 但他的博客主要是以代碼為主,需要自己結合源代碼揣摩 。

2、 框架方面,主要是老羅的csdn博客 : 老羅的Android之旅 。 但他的博客主要是以流程分析為主, 而對 流程 需要的前期准備知識介紹不足,初步看起來比較難以理解,因此,買本《Android內核剖析》是必須的,可以參考源代碼仔細領悟, 強烈推薦該書籍。
由於網路上Android源碼不太好找,特此共享下Android部分源碼,主要包括框架層、中間層、以及一些App等,對上層開發
和中間層開發還是很有益處的:

⑺ android視頻誰講的比較好

看android視頻可以看Mars系列的android視頻教程,一般學員認為比較好的視頻教程,非常有名的。
Mars論壇上找的視頻教程,都是關於Mars老師的,還有網盤里也有android游戲開發相關視頻教程。
即使毫無編程基礎的學員也能輕松的掌握。視頻當中包含了java基礎語法、面相對象語法、面相對象編程思想、IO流和多線程等等內容,涵蓋了從基礎到高級的所有Java特性。完整的學員本套視頻之後,就可以開始Android開發之旅了。

⑻ 俄羅岡之旅破解版游戲

俄勒岡之旅開拓者破解版Android-data按音量上鍵加金幣,按音量下鍵加鈔票俄勒岡之旅:開拓者(口袋版)內購破解版10m

⑼ 大牛們是怎麼閱讀 Android 系統源碼的

如果只是想看看一些常用類的實現, 在Android包管理器里把源碼下載下來, 隨便一個IDE配好Source Code的path看就行.
但如果想深入的了解Android系統, 那麼可以看下我的一些簡單的總結.

知識

Java
Java是AOSP的主要語言之一. 沒得說, 必需熟練掌握.
熟練的Android App開發
Linux
Android基於Linux的, 並且AOSP的推薦編譯環境是Ubuntu 12.04. 所以熟練的使用並了解Linux這個系統是必不可少的. 如果你想了解偏底層的代碼, 那麼必需了解基本的Linux環境下的程序開發. 如果再深入到驅動層, 那麼Kernel相關的知識也要具備.
Make
AOSP使用Make系統進行編譯. 了解基本的Makefile編寫會讓你更清晰了解AOSP這個龐大的項目是如何構建起來的.
Git
AOSP使用git+repo進行源碼管理. 這應該是程序員必備技能吧.
C++
Android系統的一些性能敏感模塊及第三方庫是用C++實現的, 比如: Input系統, Chromium項目(WebView的底層實現).

硬體

流暢的國際網路
AOSP代碼下載需要你擁有一個流暢的國際網路. 如果在下載代碼這一步就失去耐心的話, 那你肯定沒有耐心去看那亂糟糟的AOSP代碼. 另外, 好程序員應該都會需要一個流暢的Google.
一台運行Ubuntu 12.04的PC.
如果只是閱讀源碼而不做太多修改的話, 其實不需要太高的配置.
一台Nexus設備
AOSP項目默認只支持Nexus系列設備. 沒有也沒關系, 你依然可以讀代碼. 但如果你想在大牛之路走的更遠, 還是改改代碼, 然後刷機調試看看吧.
高品質USB線
要刷機時線壞了, 沒有更窩心的事兒了.
軟體

Ubuntu 12.04
官方推薦, 沒得選.
Oracle Java 1.6
注意不要用OpenJDK. 這是個坑, 官方文檔雖然有寫, 但還是單獨提一下.
安裝:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
sudo apt-get install oracle-java6-set-default

Eclipse
估計會有不少人吐槽, 為什麼要用這個老古董. 其實原因很簡單, 合適. 剛開始搞AOSP時, 為了找到效率最優的工具, 我嘗試過Eclipse, IntelliJ IDEA, Vim+Ctags, Sublime Text+Ctags. 最終結果還是Eclipse. 主要優點有:
有語法分析 (快速准確的類, 方法跳轉).
支持C++ (IntelliJ的C++支持做的太慢了).
嵌入了DDMS, View Hierarchy等調試工具.
為了提高效率, 花5分鍾背下常用快捷鍵非常非常值得.
調整好你的classpath, 不要導入無用的代碼. 因為AOSP項目代碼實在是太多了. 當你還不需要看C++代碼時, 不要為項目添加C++支持, 建索引過程會讓你崩潰.
Intellij IDEA
開發App必備. 當你要調試系統的某個功能是, 常常需要迅速寫出一個調試用App, 這個時候老舊的Eclipse就不好用了. Itellij IDEA的xml自動補全非常給力.
巨人的肩膀

AOSP項目官方: https://source.android.com/source/index.html
這個一定要先讀. 項目介紹, 代碼下載, 環境搭建, 刷機方法, Eclipse配置都在這里. 這是一切的基礎.
Android官方Training: https://developer.android.com/training/index.html
這個其實是給App開發者看的. 但是裡面也有不少關於系統機制的介紹, 值得細讀.
老羅的Android之旅: http://blog.csdn.net/luoshengyang
此老羅非彼老羅. 羅升陽老師的博客非常有營養, 基本可以作為指引你開始閱讀AOSP源碼的教程. 你可以按照博客的時間順序一篇篇挑需要的看.但這個系列的博客有些問題:
早期的博客是基於舊版本的Android;
大量的代碼流程追蹤. 讀文章時你一定要清楚你在看的東西在整個系統處於什麼樣的位置.
Innost的專欄: http://blog.csdn.net/innost
鄧凡平老師也是為Android大牛, 博客同樣很有營養. 但是不像羅升陽老師的那麼系統. 更多的是一些技術點的深入探討.
Android Issues: http://code.google.com/p/android/issues/list
Android官方Issue列表. 我在開發過程中發現過一些奇怪的bug, 最後發現這里基本都有記錄. 當然你可以提一些新的, 有沒有人改就是另外一回事了.
Google: https://www.google.com
一定要能流暢的使用這個工具. 大量的相關知識是沒有人系統的總結的, 你需要自己搞定.
其它

代碼組織
AOSP的編譯單元不是和git項目一一對應的, 而是和Android.mk文件一一對應的. 善用mmm命令進行模塊編譯將節省你大量的時間.
Binder
這是Android最基礎的進程間通訊. 在Application和System services之間大量使用. 你不僅要知道AIDL如何使用, 也要知道如何手寫Binder介面. 這對你理解Android的Application和System services如何交互有非常重要的作用. Binder如何實現的倒不必著急看.
HAL
除非你對硬體特別感興趣或者想去方案公司上班, 否則別花太多時間在這一層.
CyanogenMod
這是一個基於AOSP的第三方Rom. 從這個項目的wiki里你能學到很多AOSP官方沒有告訴你的東西. 比如如何支持Nexus以外的設備.
DIA
這是一個Linux下畫UML的工具, 能夠幫你梳理看過的代碼.
XDA
http://www.xda-developers.com/
這里有最新資訊和最有趣的論壇.

閱讀全文

與老羅的android之旅相關的資料

熱點內容
並行編譯技術的發展 瀏覽:538
阿里雲伺服器安裝管理 瀏覽:548
java手機開發教程 瀏覽:672
我的世界怎麼刪除伺服器數據 瀏覽:669
linux內存子系統 瀏覽:970
加密思維幣 瀏覽:689
魅族訪客文件夾 瀏覽:50
添加的文件夾怎麼找 瀏覽:616
程序員涉黃 瀏覽:699
maven編譯resources下的js 瀏覽:520
ubuntu文件移動命令 瀏覽:228
安卓i怎麼查找蘋果手機 瀏覽:950
雲伺服器宕機概率 瀏覽:232
在線買葯用什麼app知乎 瀏覽:815
ubuntu解壓xz文件 瀏覽:676
宏傑加密時電腦關機 瀏覽:390
自己寫單片機編譯器 瀏覽:600
單片機按鍵閃爍 瀏覽:382
為什麼icloud總是顯連接伺服器失敗 瀏覽:890
如何設置域控伺服器 瀏覽:740