天天看點

android profile 打包_Android編譯打包燒錄

原标題:Android編譯打包燒錄

今日科技快訊

近日,有消息稱阿裡體育A輪融資估值70億元。阿裡體育集團成立于2015年9月,由阿裡巴巴控股,新浪和雲峰基金共同出資。成立之初,即成為國際足聯俱樂部世界杯2015-2022年的獨家冠名贊助商。去年1月,阿裡體育又将美國職業橄榄球大聯盟NFL在中國的轉播權納入囊中。

作者簡介

本篇作者 Nipuream,陸陸續續投了好幾篇稿,算是作者裡的老司機了。今天,他将分享編譯Android源碼并寫入硬體裝置的過程,感興趣的朋友可以仔細看看。

Nipuream的部落格位址:

http://blog.csdn.net/yanghuinipurean

搭建環境

16年底,從深圳轉戰到杭州,當然也重新換了份工作,記得剛來的時候非常的辛苦,因為10月份廣東還是比較熱的,到杭州這邊好冷,那時候嚴重的不适應,很嚴重的感冒… 這段時間嘗試去了解了下源碼,還是收獲很多的,現在努力學習cpp中,準備往這方面轉了。因為新公司都是在源碼上編譯的,是以或多或少也學習研究了下,記得剛開始下載下傳Android源碼的時候,那個蛋疼,折騰了我一個多星期,現在寫篇文章總結下。

安裝ubuntu系統

我選擇的是在window上安裝虛拟機,我知道好多人用mac去編譯,窮屌絲也有窮屌絲的門路,錢不是我們阻止我們學習的障礙,充分利用window和linux各自的優勢,我覺得并不比mac遜色多少。安裝好了如下圖所示:

android profile 打包_Android編譯打包燒錄

安裝相應的庫支援

sudo apt-get install Git-core gnupg flex bison gperf build-essential zip curl zliblg-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev

根據我慘痛的經曆,一般編譯不成功基本都是環境有問題,代碼有問題的可能性是非常的小的。如果有些庫安裝不了,使用sudo apt-get update一下,如果還是不行,就得自行搜尋解決一下了。另外還要安裝交叉編譯器和jdk,其中如果對交叉編譯器不明白的或者不知道如何配置的請看這篇文章

arm-linux-gcc搭建過程圖解

http://www.linuxidc.com/Linux/2013-06/85902.htm

其中jdk需要注意的是在android5.0之後就要使用openjdk了,具體原因就是因為Oracle和google的那場官司了,使用指令 apt-get install openjdk-7-jdk.安裝完成之後得配置下環境變量,可以在 etc/profile 或者是 ~/.bashrc檔案最後輸入:

android profile 打包_Android編譯打包燒錄

配置成功後,應該如下圖所示:

android profile 打包_Android編譯打包燒錄

另外,交叉編譯器安裝成功之後,要将Linux根目錄的Makefile檔案中cpu架構改成arm的,如下圖所示:

android profile 打包_Android編譯打包燒錄

編譯

編譯linux

執行build.sh config配置環境:

android profile 打包_Android編譯打包燒錄

然後直接執行 ./build.sh 指令開始編譯

android profile 打包_Android編譯打包燒錄

編譯Android

首先要切換到我們的android目錄下,然後執行envsetup.sh腳本配置我們的環境,然後選擇我們要編譯的分支,具體步驟如圖:

android profile 打包_Android編譯打包燒錄

接下來,我們要把 linux 編譯好的 uboot 和 kenel 拷貝到我們 android 目錄下,因為我們已經執行過我們的 envsetup.sh 腳本了,而 envsetup.sh 腳本又執行了我們的 device/softwinner/common/vendorsetup.sh 腳本,vendorsetup.sh 的腳本中有個函數叫做 extract-bsp(),我們來看下這個函數:

android profile 打包_Android編譯打包燒錄

可以看到從 linux 目錄拷貝 kernel 和一些 modules,需要主要的是 get_lichee_out_dir() 函數,Linux 目錄一定要放在android目錄上層目錄下,自己檢視源碼即可。

接下來,我們便可以執行我們的make指令來編譯我們的android系統了,make後面可以帶個參數表示執行編譯的線程條數,如果 make -j8,後面的數字一般都是你電腦cpu的核數乘以2。

android profile 打包_Android編譯打包燒錄

我的電腦是6核的,是以我可以用 make -j12,但是我就使用了 make -j8,整個編譯的過程很漫長,中途可能會報錯,報錯的原因90%以上都是環境沒有配置好,大概一般的3個小時50分鐘左右就會編譯結束,當然這個時間也是根據你計算機cpu的能力的,像用公司的編譯伺服器編譯,隻需要十幾分鐘…

編譯成功後,我們使用 vendorsetup.sh 腳本裡面的 pack函數 将編譯出來的鏡像檔案打包成 rom,如圖所示,紅色部分表示生成的路徑。

android profile 打包_Android編譯打包燒錄

燒錄

具體每個廠商都會提供燒錄軟體的,即使沒有提供也會把燒錄的步驟的腳本發給你的,比如芯靈圖家的A33闆子就是用 PhoenixSuit 燒錄的,我們公司的是在 fastboot 模式下,燒錄rom的。按照具體的步驟做就行了,接下來發張将自己編譯過的 android6.0系統 燒錄到硬體的效果圖,很是有成就感,有麼有。

android profile 打包_Android編譯打包燒錄
android profile 打包_Android編譯打包燒錄
android profile 打包_Android編譯打包燒錄

通路虛拟機

畢竟是兩個系統,操作起來也不是很方面,檔案互訪有很多方案,但是我覺得基于 samba 服務是最友善的,window本身就內建了samba服務,是以隻需要在ubuntu系統上安裝下即可,首先 sudo apt-get install samba,安裝完成之後,敲入指令 vim /etc/samba/smb.conf , 在這個檔案末尾添加幾句話,如圖所示:

android profile 打包_Android編譯打包燒錄

接下來設定 root 的密碼,敲入指令 smbpasswd -a root ,然後重新啟動samba服務, service smb restart,檢視samba程序是否啟動 ps -ef。注意有點非常的重要,我們需要設定虛拟機網絡為橋接模式,這樣就會自動擷取ip連接配接網絡了。最後在window上映射我們Linux的磁盤,如圖所示:

android profile 打包_Android編譯打包燒錄
android profile 打包_Android編譯打包燒錄

輸入我們虛拟機的ip就行了,進入Z盤就很友善的通路我們linux中的檔案系統了。可以看到這就是我們的Linux檔案系統的根目錄。當然你也可以通過ssh通路我們的linux,下面是我通過Xshell通路我們的虛拟機。

android profile 打包_Android編譯打包燒錄

更多

每天學習累了,看些搞笑的段子放松一下吧。關注最具娛樂精神的公衆号,每天都有好心情。

如果你有好的技術文章想和大家分享,歡迎向我的公衆号投稿,投稿具體細節請在公衆号首頁點選“投稿”菜單檢視。傳回搜狐,檢視更多

責任編輯: