1. 程式人生 > >Android系統篇(一)——建立Android系統開發環境

Android系統篇(一)——建立Android系統開發環境

《深入解析Android5.0系統》 一書筆記

在開始研究Android系統之前,我們要準備好一些開發的資料,比如Ubuntu,原始碼,開發資料等,Android系統本身來說,非常的龐大,應用使用的是JAVA語言,底層使用C/C++,所以,如果條件允許的話,儘可能的多掌握一些吧。

一.Ubuntu

我們更多的可能會選擇 Window + Ubuntu 來進行工作,所以我們會比較依賴虛擬機器,在我之前的部落格中已經有介紹了,這裡不會重複介紹

這裡我選擇的是最新的Ubuntu 17.10.1 算是嚐嚐鮮吧。

緊接著,我們需要安裝一些必要的工具,比如git,vim之類的,我們來看下命令

sudo apt-get install git

sudo apt-get install vim

sudo apt-get install repo

sudo apt-get install curl

sudo apt-get install make

到這裡,我們的準備工作算是可以了,我們現在需要準備一些開發工具

二.開發工具

我們需要安裝一下便利於我們開發的東西,比如JDK

1.JDK

我這裡安裝的是JDK1.7,在哪裡下載的話,自己官網或者其他地方隨便搜尋以下就出來了

//解壓
sudo tar zxvf jdk-7u79-linux-x64.tar.gz 
//移動
sudo
mv jdk1.7.0_79 /usr/lib/jdk/ //配置 vim ~/.bashrc //末尾處 export JAVA_HOME=/usr/lib/jdk/jdk1.7.0_79 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH

2.OpenJDK

sudo add-apt-repository ppa:openjdk-r/ppa  
sudo apt-get update   
sudo apt-get
install openjdk-7-jdk

3.Android Studio/SDK

下載下來解壓,然後自動安裝SDK即可,前提是有JDK

4.Source Insight

Source Insight是個神器,可以很方便的搜尋,查詢原始碼中的內容

三.下載原始碼

在國內想要下載一份原始碼,實際上並不是那麼容易的….

這裡我們通過清華大學的源去下載

1.下載repo

mkdir ~/bin
PATH=~/bin:$PATH
curl https://aosp.tuna.tsinghua.edu.cn/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

這裡寫圖片描述

這裡的程式碼應該很好理解吧,建立一個bin的資料夾來指定這個資料夾是PATH,然後去下載repo,並且給予許可權

2.同步原始碼

mkdir Aosp
cd Aosp
//repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
//指定版本
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-5.0.0_r1
repo sync

正常來講,我們上面的命令,是建立一個Aosp的資料夾然後init初始化後直接去同步程式碼的,但是我們實際操作過程中,會碰到幾個小問題

  • a.repo sync 沒有反應

這個可能是最開始curl repo的時候repo有問題,我們可以進入bin目錄下

vim repo

看下你的repo腳本里有沒有內容,如果沒有的話,需要參考

按照上面的提示,首先在你的bin目錄下

//刪除原先的無用repo
rm -rf repo
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod +x repo
  • b.無法連線源

這裡要注意下,repo的執行過程中會嘗試訪問官方的git源更新自己

這裡寫圖片描述

如果想使用tuna的映象源進行更新,可以將如下內容複製到你的~/.bashrc裡

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

注意重啟或者重新整理終端,這樣我們就可以繼續init了

這裡寫圖片描述

到這裡,我們就可以repo sync 來同步這份原始碼了。

在這裡說一下,就是在sync過程中碰到的一些錯誤

這裡寫圖片描述

這個錯誤:

error: Exited sync due to fetch errors

輸入

repo sync -f -j8

即可解決

碰到的第二個問題

RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function

這裡寫圖片描述

這是由於git預設快取大小不足導致的,使用下面的命令增加快取大小

git config --global http.postBuffer 2000000000

碰到的第三個問題

Cannot fetch platform/packages/apps/OMA-DM

這裡寫圖片描述

據說很多人下載Android5.0的原始碼的時候都碰到了這個問題

我的解決是

這裡寫圖片描述

在進入 .repo目錄下的xml配置檔案中註釋掉這一行

這裡寫圖片描述

終於,漫長的N個小時過去了,這份5.0的AOSP原始碼也下載下來了,不過我們還需要去下載一樣東西,那就是kernel

四.下載Kernel

核心我們需要單獨的去下載,並且每個廠家的都不一樣,所以都會有些差異的,具體可參考這篇部落格:

我使用的是google 自己手機的tegra的核心

cd device/asus/grouper/
//檢視記錄
git log kernel
git clone https://aosp.tuna.tsinghua.edu.cn/kernel/tegra.git
cd tegra/
git checkout 5d8ecd2

五.原始碼編譯

事實上編譯才是重頭戲,因為很多問題都會出現,我們需要一步步的來排查,首先我們來看下編譯原始碼的步驟

source build/envsetup.sh
//選擇編譯目標版本
lunch
//多執行緒編譯
make -j8

這裡我選擇的是aosp_x86-eng

這裡寫圖片描述

但是在編譯過程中,會出現很多問題,我這裡並沒有去編譯,因為我只是去看原始碼,主要還是一個個去解,再寫出來很麻煩,所以我想下次編譯的時候專門寫一篇。

本篇文章先寫到這裡,下篇我們來學習下Build環境

PS:有興趣的朋友可以加群討論下:484167109

相關推薦

Android系統()——建立Android系統開發環境

《深入解析Android5.0系統》 一書筆記 在開始研究Android系統之前,我們要準備好一些開發的資料,比如Ubuntu,原始碼,開發資料等,Android系統本身來說,非常的龐大,應用使用的是JAVA語言,底層使用C/C++,所以,如果條件允許

Android系統移植()-讓android系統在目標平臺上執行起來【轉】

Android系統由於用的是linux核心,因此核心移植和嵌入式linux核心移植差異不大,過程如下: (1)移植boot-loader和linux2.6核心到目標平臺上,讓linux核心可以啟動起來,基本的驅動允許正常。此過程完全是嵌入式linux的開發,這裡直接跳過。

android系統優化Android中的Handler總結

- 一、Handler的定義:           主要接受子執行緒傳送的資料, 並用此資料配合主執行緒更新UI.           解釋: 當應用程式啟動時,Android首先會開啟一個主執行緒 (也就是UI執行緒) , 主執行緒為管理介面中的UI控制元件,進行事件

Android基礎()——Android的背景以及開發環境的搭建介紹

    本人自接觸Android開發算起,也算有些年頭,走過彎路,也跳進過坑,現在細細想來,其實當初也可以不用這麼狼狽。幾經輾轉反側,痛定思痛,我決定把我從接觸開發以來的所有必備的知識和自己跳過的坑全部寫下來,望有緣人看了後能有所感悟即是我最大的期望。從基礎到進階,我只要

權限管理系統--前端)搭建前端開發環境

自己 如果 host 優秀 router 文件 modules 技術分享 mage 1、技術基礎(1)vue2.0:優秀的MVVM設計模式下的JS框架;(2)vue-router:vue.js路由管理模塊;(3)vuex:vue.js狀態管理模塊;(4)ElementUI:

[日更-2019.5.21] Android 系統的分割槽和檔案系統)--Android分割槽的大概框架

宣告 其實我在剛開始接觸Android時給手機刷機,很好奇Android的刷機包裡面怎麼這麼多img檔案?而且每個img要刷入對

從入門到放棄,.net構建博客系統):系統構建

.net 通過 tro 周期 放棄 操作 images 容器 業務 demo:http://tonyblogs.top/ Git源碼:https://github.com/Halifa/TonyBlogs 項目采用的技術有:asp.net mvc4 + autofac +

Android 開發:()安卓開發環境搭建與配置 (Windows和Mac )以及目錄結構介紹

(一)、windows版 一. 開發工具: 1.Android Studio:(http://www.androiddevtools.cn/) 2.Genymotion(虛擬機器):(http://www.genymotion.net/) (二)、Mac版 一

專家系統基礎 、專家系統是幹啥類與知識庫菜鳥說

專家系統: 就是弄個程式,像專家一樣思考,像專家一樣幹活. 1 一個人要成為專家,就要有專家的資質,最基本的條件: 專家的知識—-知識庫 專家的思考方式—-推理方式 專家的判斷力——與推理方式結合的輸出解決方案。

Windows系統下Eclipse上搭建Python開發環境

acl ora .com sdn down win ava ecp http 參考網站: https://blog.csdn.net/zhangphil/article/details/78962159 1、先安裝JDK ,參考網站:https://www.cnblog

Linux系統下吉林快-三平臺開發環境搭建以及關於變量的基本操作

end 進行 相關操作 and 之前 超級用戶 oss 這樣的 常見 有問題聯系Q1446595067吉林快-三平臺開發, 是一種面向對象的解釋型計算機程序設計語言,由荷蘭人Guido van Rossum於1989年發明,第一個公開發行版發行於1991年。 Python是

Android學習()—— Android studio的安裝與配置

          最近事比較少,想著做一系列Android的學習,把自己當時遇到的一些整理一下,方便新學android的人學習 首先先來安裝編寫Android的軟體,我這裡用的是android studio Android studio安裝與配

Android Studio 下載、安裝與配置(開發環境搭建)

下載jdk8並安裝. 下載並安裝AndroidStudio。因為anroid.com無法訪問,可以從https://developer.android.google.cn/studio/獲取。 安裝AndroidStudio後,會自動下載Android SDK及其他

Deepin系統安裝後相關設定與開發環境搭建

Deepin系統安裝後相關設定與環境搭建 系統環境設定 設定 swap(交換分割槽) 的大小 1、使用 free 命令檢視交換分割槽的大小,若為 0;則進行建立設定 2、使用 dd

Netty實戰 IM即時通訊系統)IM系統簡介

## Netty實戰 IM即時通訊系統(一)IM系統簡介 零、 目錄 IM系統簡介 Netty 簡介 Netty 環境配置 服務端啟動流程 實戰: 客戶端和服務端雙向通訊 資料傳輸載體ByteBuf介紹 客戶

華碩預裝系統筆記本鍵恢復系統

方法一 開機時按住F9,進入恢復引導,接著按照提示恢復系統 方法二 按住Shift鍵點重啟,進入恢復引導,接著按照提示恢復系統   注備: 如無法進入恢復引導,請按照如下步驟修改主機板步驟(不同主機板操作方法不同,下面以華碩X550VB筆記本為例) 1.在開機過

Android總結系列:Android Service

1 public class CActivity extends Activity { 2 3 public static final String TAG = "CActivity"; 4 5 private Button bindServiceBtn;

Android tips()-->Android統一顯示¥符號

新版本一個需求在使用者介面上需要顯示中文金額符號“¥”,結果這個字元在有的Android手機上顯示一個橫槓,在有的手機上顯示兩個橫槓,這是因為不同的android手機自帶的系統字型是不一致的,因此這個金額符號顯示的可能也不一致,這種需求有幾種方式: (1)不管他(就是直接根據系統自帶的

linux ubuntu系統下基於eclipse的hadoop開發環境搭建

hadoop是基於linux作業系統的。 本文在linux ubuntu系統下,在eclipse下配置hadoop的開發環境。 這個開發環境對linux下的hadoop偽分散式配置有效,其他配置情況不明。 如果是完全分散式環境,需要重新設定core-site.xml,hdf

android學習十android的SQLite資料庫的使用)

       SQLite是一款輕量級的關係型資料庫,它運算速度快,佔用資源少,通常只需要幾百k的記憶體就夠了,支援標準的sql語法和資料庫的ACID事務。在android中為了能夠更加方便的管理資料庫,專門提供了一個SQLiteOpenHelper幫助類,藉助這個類就可以