1、通過 ubuntu 軟體中心安裝 wine;
2、通過 ubuntu 軟體中心安裝 winetricks;
3、通過 winetricks 在 shell中輸入: winetricks mfc42
1、通過 wine windows 的方式啟動代理伺服器
2、設置瀏覽器代理伺服器
3、設置shell代理伺服器:
在shell中輸入 sudo gedit /etc/bash.bashrc
在文件 /etc/bash.bashrc 中添加
通過shell安裝如下的組件:
1、sudo apt-get install bison g++-multilib git gperf libxml2-utils
2、新建一個存放源碼的目錄,如:mkdir ~/andorid/source
3、在源碼目錄中輸入命令:repo init -u -b android-4.0.1_r1
其中: android-4.0.1_r1是android源碼的版本,更多的版本可以通過下面的方式查詢:
4、修改source/.repo/manifest/default.xml 文件中的 fetch 的值為:
git://Android.git.linaro.org/
通過如下的指令來設置郵箱和用戶名
git config --global user.name "<your name>" ----修改用戶名git config --global user.email "<your email>" ----修改email
5、在source目錄下輸入指令:repo sync
便開始了代碼的下載
方便他人亦是方便自己,如果覺得還行就點下下邊的投票吧,這樣可以幫助其他人更快的找到解決問題的方法;有疑問的也可留言哦, 謝謝!
㈡ 如何正確學習android源代碼
1、避免建立對象
世界上沒有免費的對象。雖然GC為每個線程都建立了臨時對象池,可以使創建對象的代價變得小一些,但是分配內存永遠都比不分配內存的代價大。
如果你在用戶界面循環中分配對象內存,就會引發周期性的垃圾回收,用戶就會覺得界面像打嗝一樣一頓一頓的。
2、使用本地方法
當你在處理字串的時候,不要吝惜使用String.indexOf(), String.lastIndexOf()等特殊實現的方法。這些方法都是使用C/C++實現的,比起java循環快10到100倍。
3、選擇虛類而不是介面
4、用靜態方法比虛方法好
如果你不需要訪問一個對象的成員變數,那麼請把方法聲明成static。虛方法執行的更快,因為它可以被直接調用而不需要一個虛函數表。另外你也可以通過聲明體現出這個函數的調用不會改變對象的狀態。
5、不用getter和setter
在很多本地語言如C++中,都會使用getter(比如:i = getCount())來避免直接訪問成員變數(i = mCount)。
6、將成員變數緩存到本地
7、使用常量
8、謹慎使用foreach
9、避免使用枚舉
㈢ 有研究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原生的應用層源代碼時,當遇到不理解的API時,如果僅憑將API函數放到google的官方API網頁中去搜索的話,不一定合適,可以用eclipse先搜到該函數的定義處,看屬於哪個類,然後再在google的官方API網頁中搜該類,然後找到這個方法,如果該方法還是沒在該類中,那麼可以用eclipse找找該方法是不是繼承與其子類,再從子類中搜搜。
構建開發環境
1、 構建Android編譯環境:
Ubuntu11.10-64bit系統、一系列編譯庫、JDK、Android SDK、Eclipse +ADT。
2、 Android官方原生Android代碼。
3、 源代碼根目錄下:
source build/envsetup.sh
lunch full-eng
make –j4
1、2、3相關內容在http://source.android.com/source/index.html都有相關說明。
4、 編譯Android源碼的同時,可以建立Android源代碼Java工程
(1)將源碼目錄\development\ide\eclipse 中的.classpath復制到源碼根目錄下。
(2)更改eclipse緩存設置
在eclipse安裝根目錄下修改eclipse.ini
-Xms128m
-Xmx512m
-XX:MaxPermSize=256m
(3)將 源碼目錄\development\ide\eclipse 中的android-formatting.xml和android.importorder導入eclipse。
android-formatting.xml用來配置eclipse編輯器的代碼風格;android.importorder用來配置eclipse的import的順序和結構。
㈤ 大牛們是怎麼閱讀 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自動補全非常給力.
巨人的肩膀
這個一定要先讀. 項目介紹, 代碼下載, 環境搭建, 刷機方法, Eclipse配置都在這里. 這是一切的基礎.
這個其實是給App開發者看的. 但是裡面也有不少關於系統機制的介紹, 值得細讀.
此老羅非彼老羅. 羅升陽老師的博客非常有營養, 基本可以作為指引你開始閱讀AOSP源碼的教程. 你可以按照博客的時間順序一篇篇挑需要的看.但這個系列的博客有些問題:
早期的博客是基於舊版本的Android;
大量的代碼流程追蹤. 讀文章時你一定要清楚你在看的東西在整個系統處於什麼樣的位置.
鄧凡平老師也是為Android大牛, 博客同樣很有營養. 但是不像羅升陽老師的那麼系統. 更多的是一些技術點的深入探討.
Android官方Issue列表. 我在開發過程中發現過一些奇怪的bug, 最後發現這里基本都有記錄. 當然你可以提一些新的, 有沒有人改就是另外一回事了.
一定要能流暢的使用這個工具. 大量的相關知識是沒有人系統的總結的, 你需要自己搞定.
其它
代碼組織
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
㈥ 怎樣著手研究 Android 源代碼
一、源碼里的工程需要導入所有的Android源碼,不可以單獨作為一個Android工程導入到Eclipse里。
二、使用git和repo下載Android的源代碼,參考如下步驟
以下操作都是在Ubuntu10.04LTS下完成:
1)安裝git
sudo apt-get install git-core
2)安裝curl
sudo apt-get install git-core curl
3)安裝Repo,為了方便直接下載repo到用戶根目錄中。通過curl下載repo
curl http://android.git.kernel.org/repo >~/repo
4)給repo可執行的許可權
chmod a+x ~/repo
5)新建一個目錄,然後進入該目錄。通過repo將當前Android上所有源代碼下載。
首先初始化本地,
~/repo init -u git://android.git.kernel.org/platform/manifest.git
看到repo initialized in /android的提示後,則證明初始化完畢。成功後會在~/android下生成.repo文件夾
執行
repo sync
則自動開始下載源代碼。git支持斷點續傳,如果中斷了下次可繼續。
單獨下載內核,用這個
git clone git://android.git.kernel.org/kernel/linux-2.6.git
如果想拿某個branch而不是主線上的代碼,我們需要用-b參數制定branch名字,比如:
repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
另一種情況是,我們只需要某一個project的代碼,比如kernel/common,就不需要repo了,直接用Git即可。
git clone git://android.git.kernel.org/kernel/common.git
㈦ android軟體開發 怎麼讀懂一個android源代碼
一開始都會感覺到疑惑,網路上,論壇上,甚至是書本上都講不清楚,不知道這是什麼原因,我想人類的私心在裡面會占據很大的因素。
不是每個人都願意分享自己辛苦得來的經驗和心得。
android軟體,你可以這么看,它是用java語言+很多很多的現成的已經被別人寫到的包組合成的。
其實它的本質就是java,然後那些界面什麼,其實核心就是一個叫做XML的東西。
這個XML其實也沒什麼神秘,就是一個國際化的,標準的標簽。
然後標簽其實說白了就是記號,你在這個XML文件裡面,按照谷歌給你定好的游戲規則,寫標簽,然後這個標簽會被自動解析成相應功能。
整個android界面其實就是一個XML文件,android表面上的東西幾乎都是XML文件組成的,剩下的核心程序邏輯,其實就是java程序。
再換句話說,你可以在java上把程序邏輯寫好,然後單獨寫個XML文件,然後合並起來,就是android
㈧ 大牛們是怎麼閱讀 Android 系統源碼的
由於工作需要大量修改framework代碼, 在AOSP(Android Open Source Project)源碼上花費了不少功夫, Application端和Services端都看和改了不少.
如果只是想看看一些常用類的實現, 在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自動補全非常給力.
巨人的肩膀
這個一定要先讀. 項目介紹, 代碼下載, 環境搭建, 刷機方法, Eclipse配置都在這里. 這是一切的基礎.
這個其實是給App開發者看的. 但是裡面也有不少關於系統機制的介紹, 值得細讀.
此老羅非彼老羅. 羅升陽老師的博客非常有營養, 基本可以作為指引你開始閱讀AOSP源碼的教程. 你可以按照博客的時間順序一篇篇挑需要的看.但這個系列的博客有些問題:
早期的博客是基於舊版本的Android;
大量的代碼流程追蹤. 讀文章時你一定要清楚你在看的東西在整個系統處於什麼樣的位置.
鄧凡平老師也是為Android大牛, 博客同樣很有營養. 但是不像羅升陽老師的那麼系統. 更多的是一些技術點的深入探討.
Android官方Issue列表. 我在開發過程中發現過一些奇怪的bug, 最後發現這里基本都有記錄. 當然你可以提一些新的, 有沒有人改就是另外一回事了.
一定要能流暢的使用這個工具. 大量的相關知識是沒有人系統的總結的, 你需要自己搞定.
其它
代碼組織
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
這里有最新資訊和最有趣的論壇.
想到了再補充.
㈨ 如何學習安卓開發
Android開發學習路線的七大階段
第一階段:Java面向對象編程;
第二階段:Java Web開發;
第三階段:android UI編程;
第四階段:android網路編程與數據存儲;
第五階段:android手機硬體管理;
第六階段:Android圖形編程技術;
第七階段:Android游戲開發。