Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android源碼淺析(三)——Android AOSP 5.1.1源碼的同步sync和編譯make,搭建Samba服務器進行更便捷的燒錄刷機

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

編輯:關於Android編程

最近比較忙,而且又要維護自己的博客,視頻和公眾號,也就沒仔細的梳理源碼的入門邏輯,今天也就來講一個源碼的玩法,各位看官,一起學習學習!

參考資料

官方教程: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,但是有些系統指定了版本,並不是越高越好<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjwvYmxvY2txdW90ZT4NCnN1ZG8gYXB0LWdldCBpbnN0YWxsIGxpYmM2LWRldg0KPGJsb2NrcXVvdGU+DQoJPHA+ubLP7b/iPC9wPg0KPC9ibG9ja3F1b3RlPg0Kc3VkbyBhcHQtZ2V0IGluc3RhbGwgcGF0Y2gNCjxibG9ja3F1b3RlPg0KCTxwPrK5tqG5pL7fPC9wPg0KPC9ibG9ja3F1b3RlPg0Kc3VkbyBhcHQtZ2V0IGluc3RhbGwgdGV4aW5mbw0KPGJsb2NrcXVvdGU+DQoJPHA+zsS1tc+1zbM8L3A+DQo8L2Jsb2NrcXVvdGU+DQpzdWRvIGFwdC1nZXQgaW5zdGFsbCBsaWJuY3Vyc2VzLWRldg0KPGJsb2NrcXVvdGU+DQoJPHA+z7XNs7XEsdixuL/iPC9wPg0KPC9ibG9ja3F1b3RlPg0Kc3VkbyBhcHQtZ2V0IGluc3RhbGwgZ2l0LWNvcmUgZ251cGcNCjxibG9ja3F1b3RlPg0KCTxwPmdpdLXEuaS+37D8o6zL5Mi709BnaXTBy6OstavKx9PQsbjO3ru8PC9wPg0KPC9ibG9ja3F1b3RlPg0Kc3VkbyBhcHQtZ2V0IGluc3RhbGwgbmN1cnNlcy1kZXYNCjxibG9ja3F1b3RlPg0KCTxwPrHg0uvE2rrLtcTKsbry0OjSqjwvcD4NCjwvYmxvY2txdW90ZT4NCnN1ZG8gYXB0LWdldCBpbnN0YWxsIHpsaWIxZy1kZXYNCjxibG9ja3F1b3RlPg0KCTxwPrHg0uu1xMqxuvLQ6NKqPC9wPg0KPC9ibG9ja3F1b3RlPg0Kc3VkbyBhcHQtZ2V0IGluc3RhbGwgdmFsZ3JpbmQNCjxibG9ja3F1b3RlPg0KCTxwPsTatOa87LLpxvc8L3A+DQo8L2Jsb2NrcXVvdGU+DQo8aHIgLz4NCjxibG9ja3F1b3RlPg0KCTxwPjxzdHJvbmc+0tTJz7XEtrzKx9K70Km7+bG+yrnTw7XEo6zO0sLewdCz9sC0o6y1q8rH1tDNvsjnufu7uczhyr7SqrCy17C1xMqyw7S5pL7ftcS7sNKyv8nS1NaxvdNzdWRvIGFwdC1nZXQgaW5zdGFsbCDI7bz+w/u9+NDQsLLXsLy0v8k8L3N0cm9uZz48L3A+DQo8L2Jsb2NrcXVvdGU+DQo8aDMgaWQ9"2配置環境">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 samba

sudo apt-get install samba-common

sudo 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服務器遠不止如此

這裡寫圖片描述

你們可以慢慢去體驗

當然,我在剛搭建的時候,遇到了很多坑,基本上都是權限的問題,也是蛋疼,我只能說,只能耐心去搜索排查問題了,不過你按照我這樣子來,成功率還是很高的,好的,本篇博文就閒到這裡了,如果有興趣的話,可以加群聊聊!

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved