編譯Android系統。
2. 綆榪癮ndroid婧愪唬鐮佺殑緙栬瘧榪囩▼
緙栬瘧Android婧愪唬鐮佹槸涓涓鐩稿瑰嶆潅鐨勮繃紼嬶紝娑夊強澶氫釜姝ラゅ拰宸ュ叿銆備笅闈㈡垜灝嗛栧厛綆瑕佹傛嫭緙栬瘧榪囩▼錛岀劧鍚庤︾粏瑙i噴姣忎釜姝ラゃ
綆瑕
Android婧愪唬鐮佺殑緙栬瘧榪囩▼涓昏佸寘鎷鑾峰彇婧愪唬鐮併佽劇疆緙栬瘧鐜澧冦侀夋嫨緙栬瘧鐩鏍囥佸紑濮嬬紪璇戜互鍙婂勭悊緙栬瘧緇撴灉絳夋ラゃ
1. 鑾峰彇婧愪唬鐮侊細緙栬瘧Android婧愪唬鐮佺殑絎涓姝ユ槸浠庡畼鏂規笭閬撹幏鍙栨簮浠g爜銆傞氬父錛岃繖鍙浠ラ氳繃浣跨敤Git宸ュ叿浠嶢ndroid Open Source Project錛圓OSP錛夌殑瀹樻柟浠撳簱鍏嬮殕浠g爜鏉ュ畬鎴愩傚懡浠ょず渚嬶細`git clone https://android.googlesource.com/platform/manifest`銆
2. 璁劇疆緙栬瘧鐜澧冿細鍦ㄧ紪璇戜箣鍓嶏紝闇瑕侀厤緗鍚堥傜殑緙栬瘧鐜澧冦傝繖閫氬父娑夊強瀹夎呯壒瀹氱殑鎿嶄綔緋葷粺錛堝俇buntu鐨勬煇浜涚増鏈錛夛紝瀹夎呭繀瑕佺殑渚濊禆欏癸紙濡侸ava寮鍙戝伐鍏峰寘鍜孉ndroid Debug Bridge錛夛紝浠ュ強閰嶇疆鐗瑰畾鐨勭幆澧冨彉閲忕瓑銆
3. 閫夋嫨緙栬瘧鐩鏍囷細Android鏀鎸佸氱嶈懼囧拰閰嶇疆錛屽洜姝ょ紪璇戞椂闇瑕佹寚瀹氱洰鏍囥傝繖鍙浠ラ氳繃閫夋嫨鐗瑰畾鐨勮懼囬厤緗鏂囦歡錛堝傞拡瀵筆ixel鎵嬫満鐨刞aosp_arm64-eng`錛夋垨浣跨敤閫氱敤閰嶇疆鏉ュ畬鎴愩傞夋嫨鐩鏍囧悗錛岀紪璇戠郴緇熷皢鐭ラ亾闇瑕佹瀯寤哄摢浜涚粍浠跺拰鍙樼嶃
4. 寮濮嬬紪璇戱細璁劇疆濂界幆澧冨苟閫夋嫨浜嗙紪璇戠洰鏍囧悗錛屽氨鍙浠ュ紑濮嬬紪璇戣繃紼嬩簡銆傚湪婧愪唬鐮佺殑鏍圭洰褰曚笅錛屽彲浠ヤ嬌鐢ㄥ懡浠`make -jN`鏉ュ惎鍔ㄧ紪璇戱紝鍏朵腑`N`閫氬父璁劇疆涓虹郴緇熸牳蹇冩暟鐨1鍀2鍊嶏紝浠ュ苟琛屽勭悊緙栬瘧浠誨姟錛屽姞蹇緙栬瘧閫熷害銆傜紪璇戣繃紼嬩腑錛岀郴緇熷皢鏍規嵁Makefile鏂囦歡鍜屽叾浠栨瀯寤鴻剼鏈錛岃嚜鍔ㄤ笅杞芥墍闇鐨勯勬瀯寤轟簩榪涘埗鏂囦歡錛屽苟緙栬瘧婧愪唬鐮併
5. 澶勭悊緙栬瘧緇撴灉錛氱紪璇戝畬鎴愬悗錛屽皢鍦ㄨ緭鍑虹洰褰曪紙閫氬父鏄痐out/`鐩褰曪級涓鐢熸垚緙栬瘧緇撴灉銆傝繖鍖呮嫭鍙鐢ㄤ簬妯℃嫙鍣ㄧ殑緋葷粺闀滃儚銆佸彲鐢ㄤ簬瀹為檯璁懼囩殑OTA鍖呮垨瀹屾暣鐨勭郴緇熼暅鍍忕瓑銆傛牴鎹闇瑕侊紝鍙浠ヨ繘涓姝ュ勭悊榪欎簺杈撳嚭鏂囦歡錛屽傛墦鍖呫佺懼悕絳夈
鍦ㄦ暣涓緙栬瘧榪囩▼涓錛岃繕鍙鑳介亣鍒板悇縐嶄緷璧栭棶棰樺拰緙栬瘧閿欒錛岄渶瑕佹牴鎹閿欒淇℃伅榪涜岃皟璇曞拰瑙e喅銆傜敱浜嶢ndroid婧愪唬鐮佸簽澶т笖澶嶆潅錛屽畬鏁寸殑緙栬瘧鍙鑳介渶瑕佹暟灝忔椂鐢氳嚦鏇撮暱鏃墮棿錛屽洜姝よ愬績鍜屽悎閫傜殑紜浠墮厤緗涔熸槸鎴愬姛緙栬瘧鐨勯噸瑕佸洜緔犮
3. 自己可以編譯安卓源碼嗎
用最新的Ubuntu 16.04,請首先確保自己已經安裝了Git.沒安裝的同學可以通過以下命令進行安裝:
sudo apt-get install git git config –global user.email 「[email protected]」 git config –global user.name 「test」
其中[email protected]為你自己的郵箱.
簡要說明
android源碼編譯的四個流程:1.源碼下載;2.構建編譯環境;3.編譯源碼;4運行.下文也將按照該流程講述.
源碼下載
由於某牆的原因,這里我們採用國內的鏡像源進行下載.
目前,可用的鏡像源一般是科大和清華的,具體使用差不多,這里我選擇清華大學鏡像進行說明.(參考:科大源,清華源)
repo工具下載及安裝
通過執行以下命令實現repo工具的下載和安裝
mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo
補充說明
這里,我來簡單的介紹下repo工具,我們知道AOSP項目由不同的子項目組成,為了方便進行管理,Google採用Git對AOSP項目進行多倉庫管理.在聊repo工具之前,我先帶你來聊聊多倉庫項目:
我們有個非常龐大的項目Pre,該項目由很多個子項目R1,R2,...Rn等組成,為了方便管理和協同開發,我們為每個子項目創立自己的倉庫,整個項目的結構如下:
這里寫圖片描述
執行完該命令後,再使用make命令繼續編譯.某些情況下,當你執行jack-admin kill-server時可能提示你命令不存在,此時去你去out/host/linux-x86/bin/目錄下會發現不存在jack-admin文件.如果我是你,我就會重新repo sync下,然後從頭來過.
錯誤三:使用emulator時,虛擬機停在黑屏界面,點擊無任何響應.此時,可能是kerner內核問題,解決方法如下:
執行如下命令:
通過使用kernel-qemu-armv7內核 解決模擬器等待黑屏問題.而-partition-size 1024 則是解決警告: system partion siez adjusted to match image file (163 MB >66 MB)
如果你一開始編譯的版本是aosp_arm-eng,使用上述命令仍然不能解決等待黑屏問題時,不妨編譯aosp_arm64-eng試試.
結束吧
到現在為止,你已經了解了整個android編譯的流程.除此之外,我也簡單的說明android源碼的多倉庫管理機制.下面,不妨自己動手嘗試一下.