Android源碼淺析(三)——Android AOSP 5.1.1源碼的同步sync和編譯make,搭建Samba伺服器進行更便捷的燒錄刷機

來源:互聯網
上載者:User

標籤:

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.安裝軟體
  • sudo apt-get install git

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

源碼編譯工具

  • sudo apt-get install gcc

GNU編譯器套件

  • sudo apt-get install g++

同上,最新版本為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,這裡有三個版本

  • AOSP 5.1.1
repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-5.1.1_r4
  • AOSP 6.0.1
repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-6.0.1_r22
  • AOSP 7.0 perview-1
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使用者的,你需要改成你的歸屬,更改的方法網上也能搜到

  • 3.xxx找不到命令

這個是你缺少了什麼工具,比如他提示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伺服器進行更便捷的燒錄刷機

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.