1. 程式人生 > >史上最簡單Android原始碼編譯環境搭建方法(基於Docker)

史上最簡單Android原始碼編譯環境搭建方法(基於Docker)

利用Docker映象確實可以簡化編譯環境的配置,現在Docker的用處還是挺多的,例如TensorFlow也可以在Docker上玩。

有史以來,Android原始碼編譯環境的搭建始終是一件麻煩事兒。網上有數不清的文章介紹如何編譯Android原始碼,但是他們要麼方法複雜、步驟太多;要麼自稱解決了一些編譯問題(需要修改標頭檔案,系統配置等),讓人對其可信度產生質疑。有的童鞋硬著頭皮照做了,但是由於偉大的GFW,大部分都死在了第一步——repo指令碼都下載不下來,就算下載過了過不了gerrit那一關。另外,就算你具備科學上網的能力,下載時間又成為了攔路虎;普通的VPN通常需要下載七八個小時,簡直就是痛不欲生。久而久之,很多人對下載編譯Android原始碼望而卻步。

今天,我給大家提供一個極其簡單、穩定的方案,來解決Android原始碼的下載編譯問題。

首先,下載問題可以通過映象解決;清華映象 和 科大映象 都是非常不錯的選擇,正常情況下一到兩個小時即可下載完一個Android原始碼分支。

然後就是編譯環境問題。由於Android原始碼龐大,依賴複雜;一旦使用的編譯工具鏈有細微的不同就可能引發編譯失敗。官方文件 推薦使用Ubuntu 14.04進行編譯。如果我們用Windows或者Mac系統,傳統方式是使用虛擬機器;但是在今天,我們完全可以使用 Docker 替代!!藉助Docker,我們可以不用擔心編譯環境問題;不論我們的開發機是什麼系統,可以使用Docker建立Ubuntu Image,並且直接在這個Ubuntu系統環境中建立編譯所需要的工具鏈(JDK,ubuntu系統的依賴庫等等);而且,Docker執行的Ubuntu的系統開銷比虛擬機器低得多,這樣下載以及編譯速度就有了質的提升。更重要的是,這個環境可以作為一個Image打包釋出!這樣,你在不同的開發機,還有你與你的同事之間有了同一套編譯環境,這會省去很多不必要的麻煩。關於Docker的更多內容,見 

Docker官網

廢話不多說,我們看看具體如何使用,以及怎麼個簡單法。

使用步驟

安裝Docker

Docker的下載地址見 Docker下載 ;下載完畢安裝即可。

準備工作

如果你不是Mac系統,可以直接略過這一步。

Mac的檔案系統預設不區分大小寫,這不滿足Android原始碼編譯系統的要求(編譯的時候直接Error);因此需要單獨建立一個大小寫敏感的磁碟映像。步驟如下:

  1. 開啟Mac的系統軟體:磁碟工具
  2. CMD + N,建立新的磁碟映像,引數設定如下圖:

    其中磁碟大小設定為 50~100G合適,格式一定要選擇帶區分大小寫標誌的。

開始下載編譯

真正的下載編譯過程相當簡單,指令碼會自動完成;步驟如下:

  1. 設定Android原始碼下載存放的目錄;如果是Mac系統,這一步必須設定為一個大小寫敏感的目錄;不然後面編譯的時候會失敗。如果不設定這一步,那麼原始碼會下載到 ~/aosp-root

     目錄;設定過程如下:

    export AOSP_VOL=/Volume/Android/

  2. 下載wrapper指令碼;如果需要下載其他系統版本,直接修改下載完畢後的build-nougat.sh檔案的 android-4.4.4_r2.0.1改成你需要的分支即可,分支的資訊見 分支列表

    curl -O https://raw.githubusercontent.com/kylemanna/docker-aosp/master/tests/build-nougat.sh

  3. 執行指令碼,開始自動下載安裝過程;Windows系統可以使用 Bash for Windows 或者cygwin。

    bash ./build-nougat.sh

這樣,所有的工作就都做完了。只需靜靜等待即可;時間視下載速度而定,清華的映象速度還可以,筆者使用不到2小時就完成了下載編譯過程。

三步完成,是不是灰常簡單?趕緊下載編譯安裝屬於你的Android系統吧 ^_^

原文地址 http://weishu.me/2016/12/30/simple-way-to-compile-android-source/

相關推薦

簡單Android原始碼編譯環境搭建方法(基於Docker)

利用Docker映象確實可以簡化編譯環境的配置,現在Docker的用處還是挺多的,例如TensorFlow也可以在Docker上玩。有史以來,Android原始碼編譯環境的搭建始終是一件麻煩事兒。網上有數不清的文章介紹如何編譯Android原始碼,但是他們要麼方法複雜、步驟太

Android 原始碼編譯環境搭建

我這邊自己使用Ubuntu 14.04 搭建了一個android原始碼的編譯環境,並打包成系統映象,送給不會搭建編譯環境的同學們。 連結:https://pan.baidu.com/s/1boDx

Android原始碼編譯環境搭建問題及解決方案小結

1. ImportError: No module named bz2 for Python 2.7.2 (1)$ source build/envsetup.sh (2)$ lunch aosp_arm-eng (3)$ mak

Ubuntu 14.04 搭建MTK Android原始碼編譯環境搭建

安裝必備的工具: BuildEnvironment Requirement ============================================================= * ********* Suggested OS and Tool Cha

簡單的SpringCloud教程 | 第十一篇: docker部署spring cloud專案

一、docker簡介 Docker是一個開源的引擎,可以輕鬆的為任何應用建立一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機器)、bare metal、OpenStack 叢集和其他的基礎應用平臺

安卓開發學習筆記(五):簡單且華麗地實現Android Stutio當中Webview控制元件https/http協議的方法

一.我們先在XML當中自定義一個webview(Second_layout.xml) 程式碼如下: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.an

簡單lamp環境搭建

lamp,即linux、Apache、mysql、php 環境:centos 7.4 mysql官網下載安裝mysql-server wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarc

Android滑動選單特效實現,仿人人客戶端側滑效果,簡單的側滑實現

                人人客戶端有一個特效還是挺吸引人的,在主介面手指向右滑動,就可以將選單展示出來,而主介面會被隱藏大部分,但是仍有左側的一小部分同選單一起展示。據說人人客戶端的這個特效是從facebook客戶端模仿來的,至於facebook是不是又從其它地方模仿來的就不得而知了。好,今天我們就一

簡單的jdk環境變數配置java環境變數配置

    一次性簡單教你學會JDK環境變數配置 一次性簡單教你學會JDK環境變數配置,先在網上下載個綠色版的jdk壓縮檔案。如:http://download.csdn.net/album/detai

簡單React開發環境搭建教程

1. 安裝nodenode js 官網安裝完成之後,開啟命令提示符 輸入 npm 出現下列提示說明安裝成功2. 根據react 官網提示,在命令提示符輸入npm install -g create-react-app經過一段時間的等待, 安裝成功然後按上圖所示輸入命令證明re

Android之——簡單自定義開關按鈕的實現

很多時候,我們在很多無論是Android還是IOS的APP中都會遇到這樣的一種效果,有一個按鈕,我們點選一下,便會滑動一下,一會顯示“開”,一會顯示“關”,這便是開關按鈕了,比如:很多Android手機的設定功能裡,就有很多功能是用開關按鈕實現的,那麼這些開關按鈕時如何實

ctrip-apollo多環境部署-簡單

一套Portal可以管理多個環境,但是每個環境都需要獨立部署一套Config Service、Admin Service和ApolloConfigDB,apollo 0.10.2版本預設支援的環境為:LOCAL, DEV, FWS, FAT, UAT, LPT, PRO, T

Android之——簡單圖片輪播廣告效果實現

如今的Android開發需求越來越來多,實現效果越來越酷炫,很多Android APP都要實現PC網站上那樣的圖片輪播效果,那麼,這些圖片的輪播效果是如何實現的呢?下面,我就跟大家一起來實現這些酷炫的功能。 一、原理 首先,將這些要輪播的圖片和一些文字分別放置在不同的資料集合中,程式啟動的時候預設

Android之——簡單酷炫的3D圖片瀏覽效果的實現

如今,Android開發已經成為移動互聯開發領域中一支不可或缺的力量,那麼Android中要實現3D的效果那也就是合情合理的事情了。那麼,如何在Android中實現像IOS中那樣的3D圖片瀏覽效果呢?下面,鄙人將重磅推出今天的重點博文,和大家一起在Android中實現酷炫

Android 開啟照相或者是從本地相簿選中一張圖片以後先裁剪在儲存並顯示的講解附原始碼i

整個程式的佈局很簡單 只在一個垂直方向上的線性佈局裡面有倆個按鈕(Button)和一個顯示圖片的控制元件(ImageView) 這裡就不給出這部分的程式碼了 1.是開啟系統的相簿 Intent albumIntent = new Intent(Intent.ACTION

查找(一)簡單清晰的紅黑樹解說

ont 演示 detail align article 向上 節點 動態插入 列表 查找(一) 我們使用符號表這個詞來描寫敘述一張抽象的表格。我們會將信息(值)存儲在當中,然後依照指定的鍵來搜索並獲取這些信息。鍵和值的詳細意義取決於不同的應用。 符號表中可能會保

Intellij idea簡單的教程之Linux下安裝與破解Intellij idea2017

成功 zxvf java 新建 pre form 旗艦版 lan intel 一、前言 這一節我們介紹在Linux下如何安裝與破解Intellij idea2017。現在有很多公司開發環境都是Linux,所以掌握在Linux環境下使用Idea辦公也是咱們必須得掌握的技能。

簡單的ftp下載服務器

spa 最簡 pre 服務器 pat ror tin total true 服務端: 1 # encoding:utf-8 2 # Author:"richie" 3 # Date:8/23/2017 4 5 from socket import * 6 i

簡單的 SpringCloud 教程 | 終章

conf con 知識 實例 feign 地址 聚合 com red 版權聲明:本文為博主原創文章,歡迎轉載,轉載請註明作者、原文超鏈接 ,博主地址:http://blog.csdn.net/forezp。 目錄(?)[+] 轉載請標明出處: http

簡單的springboot國際化多語言切換實現方案

messages conf main del span 語言 rop target 每天 每天學習一點點 編程PDF電子書、視頻教程免費下載:http://www.shitanlife.com/code 前提: 在resources目錄下建立 messages_en