標籤:
Android源碼淺析(三)——Android AOSP 5.1.1源碼的同步sync和編譯make,搭建Samba伺服器進行更便捷的燒錄刷機
最近比較忙,而且又要維護自己的部落格,視頻和公眾號,也就沒仔細的梳理源碼的入門邏輯,今天也就來講一個源碼的玩法,各位看官,一起學習學習!
看本篇部落格之前,先看下我的前面兩篇
- Android源碼淺析(一)——VMware Workstation Pro和Ubuntu Kylin 16.04 LTS安裝配置
- Android源碼淺析(二)——Ubuntu Root,Git,VMware Tools,安裝IME,主題美化,Dock,安裝JDK和配置環境
參考資料
- 官方教程:http://source.android.com/source/downloading.html
- Github託管源碼:https://github.com/android
一.同步源碼(sync)
android源碼的同步,也就是下載,其實不難,我們先把虛擬機器開啟了,緊接著,我們需要做一些準備的東西,下載的東西比較多哦,這裡要注意一下
1.安裝軟體
android的源碼是託管在github上的,所以安裝git來管理,使用git version可以查看版本
- sudo apt-get install phablet-tools
git工具包
- sudo apt-get install curl
這是上傳和下載資料的工具
- sudo apt-get install build-essential
提供編譯器必須軟體包的列表資訊
- sudo apt-get install make
源碼編譯工具
GNU編譯器套件
同上,最新版本為4.8,但是有些系統指定了版本,並不是越高越好
- sudo apt-get install libc6-dev
共用庫
- sudo apt-get install patch
補丁工具
- sudo apt-get install texinfo
文檔系統
- sudo apt-get install libncurses-dev
系統的必備庫
- sudo apt-get install git-core gnupg
git的工具包,雖然有git了,但是有備無患
- sudo apt-get install ncurses-dev
編譯核心的時候需要
- sudo apt-get install zlib1g-dev
編譯的時候需要
- sudo apt-get install valgrind
記憶體檢查器
以上的都是一些基本使用的,我羅列出來,但是中途如果還提示要安裝的什麼工具的話也可以直接sudo apt-get install 軟體名進行安裝即可
2.配置環境repo
這個也是一個工具,但是這裡就提出來講,因為這個是比較重要的
- 一個基於git的版本庫管理工具, 這裡用於自動批量下載android整個項目
我們首先建立一個目錄
mkdir ~/bin
下載repo指令碼到本地bin檔案夾下
curl http://android.git.kernel.org/repo >~/bin/repo (官網:curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo)
給所有使用者追加可執行檔許可權
chmod a+x ~/bin/repo
到這裡我們前期的準備工作就差不多了,我們建立一個檔案夾來存放源碼
mkdir ~/android_source
linux的許可權很重要,也是最麻煩的東西,我們可以來給這個檔案夾配置許可權
chmod 777 ~/android_source
好的,我們進入這個目錄,什麼,怎麼進入?直接cd啊
cd ~/android_source
這裡我要強調一下,我們既然要編譯源碼,乃至後期的源碼編譯修改等,都是要在linux下進行的,所以一些基本的常識和命令我希望大家去複習一下,我也是摸索出來的,大家可以去搜尋一下命令大全,簡單易懂,到這裡,我們就可以開始同步代碼了,其實就是下載,我們只是說的專業一點,但是再同步之前,還需要做一點點事情
3.初始化
這裡的初始化,主要是針對兩個,一個是repo,還有一個是android的源碼版本,我們一個個來,首先初始化的是我們的git,你總要配賬戶之內的
git config --global user.email "[email protected]"
git config --global user.name "LiuGuiLinAndroid"
接著初始化repo,指明下載的android源碼,這裡我就旋轉android5.0,記住哦,需要翻牆哦
repo init -u https://android.googlesource.com/platform/manifest -b android-5.0.0_r2
如果你沒有翻牆,那就會提示
這裡順便教一下大家怎麼修改host
sudo gedit /etc/hosts
在hosts檔案結尾加入源,源從哪裡來?這裡有個網址
- http://laod.cn/hosts/2016-google-hosts.html
可以去下載host,然後複製到最後面,接著,我們去讓他生效
sudo rcnscd restart
當然,還有一種選擇,就是下載AOSP,這裡有三個版本
repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-5.1.1_r4
repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-6.0.1_r22
repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-n-preview-1
顯示是這樣的
好了,現在都OK了,我們只要輸入
repo sync
就開始同步了
就這樣讓他一直接收吧!
注意: 下載過程中, 因為網路問題, 可能會中斷下載. 當中斷下載時, 繼續使用repo sync命令繼續下載.
二.編譯源碼(make)
下載好了以後,我們可以看一下,挺大的,我們開始編譯了
首先初始化編譯環境
. build/envsetup.sh
然後選擇編譯的目標包
lunch aosp_arm-eng
當我們不知道目標包的時候可以輸入lunch,就可以查看目標了
然後就可以開始編譯了,編譯命令是
make
為了提高效率,我們一般會多開線程去編譯的,只要輸入
make -j8 //8是線程的意思,如果配置較低可以改為2或者4,
然後我們就可以靜靜的等待他編譯成功了,當然,這是最理想的狀態,一般虛擬機器不會讓你有好日子過的,他會報各種錯誤,我這裡列舉幾個比較明顯的錯誤
1.gcc/g++ error
這個提示應該會提示gcc+版本號碼,找不到命令列,是什麼原因呢?剛開始我也找了挺久的了,但是後來才發現,是版本的問題,我直接apt-get install gcc所安裝的版本太高了,他需要指定的版本
2.檔案夾許可權
這個錯誤會報各種許可權問題的,你只要輸入
ls -l
就可以看到檔案夾的歸屬了,一般下載下來是歸root使用者的,你需要改成你的歸屬,更改的方法網上也能搜到
這個是你缺少了什麼工具,比如他提示repo找不到或者找不到命令列,你切記不要用apt-get install repo這個命令,因為有些軟體可能只是集合包裡的一個罷了,你要直接輸入repo,然後他會提示你怎麼安裝,你再進行安裝
make失敗或停止後,可以使用make -k 繼續編譯
目前我這也還在編譯,就不發了,當然,也會碰到各種各樣的問題,如果你不知道,可以加入QQ群:555974449,我們一起來分析一下
三.Samba伺服器
源碼還在編譯,老司機催著開車,也就不等了,有遺漏的話,歡迎評論,這裡再分享一個新技能,也就是配置samba伺服器,這個在linux行業裡可以必備的技能,而像我們工作需要改源碼,然後重新燒錄,用的虛擬機器,讓windows就直接存取我們的ubuntu,來進行燒錄刷機,好的,我們來學習下samba的配置
ubuntu預設是安裝了samba的,但是以防萬一,我們還是走一下安裝步驟,分三次輸入安裝
sudo apt-get install sambasudo apt-get install samba-commonsudo apt-get install samba-client
如果提示安裝,你就安裝吧!
緊接著,我們開啟samba的設定檔,輸入命令開啟
sudo gedit /etc/samba/smb.conf
我們直接在最下面增加一個使用者組
[share] //共用檔案名稱 path = /home/lgl/android_source //共用路徑 available = yes browseable = yes public = yes writable = yes valid users =lgl //使用者名稱 create mask = 0700 directory mask =0700 force user =nobody force group = nogroup
其他的都是一些設定相關的資料,然後,我們重啟一下samba伺服器
/etc/init.d/samba restart
我們現在要做什嗎?需要查看一下ubuntu的IP地址,在windows上查看的IP地址的方式是在cmd中輸入ipconfig,在ubuntu上是輸入
ifconfig
然後我們在運行裡面輸入IP地址
你稍微等待一下就就可以看到分享目錄了
但是當你點進去的時候,你會發現,他需要輸入帳號密碼
那我們還需要去建立使用者組的帳號密碼了,我們輸入
sudo smbpasswd -a lgl
最後跟的是你想建立的samba使用者名稱,然後他會提示你建立密碼,你照著填就行了
然後你會驚訝的發現,可以訪問了,當然,samba伺服器遠不止如此
你們可以慢慢去體驗
當然,我在剛搭建的時候,遇到了很多坑,基本上都是許可權的問題,也是蛋疼,我只能說,只能耐心去搜尋排查問題了,不過你按照我這樣子來,成功率還是很高的,好的,本篇博文就閑到這裡了,如果有興趣的話,可以加群聊聊!
QQ群:555974449博主的部分視頻上線了,大家可以去指點一下通往Android的神奇之旅Android網路架構Volley項目實戰
Android源碼淺析(三)——Android AOSP 5.1.1源碼的同步sync和編譯make,搭建Samba伺服器進行更便捷的燒錄刷機