Ubuntu Android源碼以及核心下載與編譯_Android

來源:互聯網
上載者:User

本教程是基於Ubuntu下Android6.0.1源碼以及核心的下載和編譯,記錄一下,以後也就不用自己去找資料,一遍一遍的嘗試了。可以翻牆的,英語好的,直接去AndroidSource.

系統內容:Ubuntu14.04LTS

Android版本:6.0.1

重要網址

清華大學鏡像
AndroidSource

下載前的準備

安裝OpenJdk

sudo add-apt-repository ppa:openjdk-r/ppasudo apt-get updatesudo apt-get install openjdk-8-jdksudo update-alternatives --config javajava -version

安裝git

sudo apt-get install git-core

安裝額外的組建

sudo apt-get install gnupg flex bison gperf build-essential \ zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \ lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \ libgl1-mesa-dev libxml2-utils xsltproc unzip

組建 功能 介紹網址
gnupg 加密工具 GPG入門教程
flex The Fast Lexical Analyzer 快速的文法分析工具
bison 用於自動產生文法分析器程式 自動產生文法分析器程式
gperf 完美的散列函數產生器 使用 gperf 實現高效的 C/C++ 命令列處理
build-essential 編譯核心中make menuconfig進圖形編譯 build-essential
zip Linux 下zip包的壓縮與解壓 Linux 下zip包的壓縮與解壓
curl 網路請求和提取工具 curl網站開發指南
zlib1g-dev 用於發現gzip和PKZIP的工具 Binary package “zlib1g-dev” in ubuntu trusty
gcc-multilib 允許在64位機器中運行32位應用 multilib
g++-multilib 同上(g++編譯工具) 多平台支援
libc6-dev-i386 Embedded GNU C Library: 32-bit development libraries for AMD64 libc6-dev-i386
lib32ncurses5-dev 待完善 待完善
x11proto-core-dev 待完善 待完善
libx11-dev 待完善 待完善
lib32z-dev 待完善 待完善
ccache 待完善 待完善
libgl1-mesa-dev 待完善 待完善
libxml2-utils 待完善 待完善
xsltproc 待完善 待完善
unzip 待完善 待完善

下載

因為網路以及牆的原因,我們使用清華大學鏡像,步驟如下:

下載repo工具

mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo

下載源碼

wget https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下載初始化包
tar xf aosp-latest.tar
cd AOSP   # 解壓得到的 AOSP 工程目錄
# 這時 ls 的話什麼也看不到,因為只有一個隱藏的 .repo 目錄
repo sync # 正常同步一遍即可得到完整目錄
# 或 repo sync -l 僅checkout代碼

ps:總共25G,慢慢下吧!

編譯

進入AOSP根目錄

初始化編譯環境

. build/envsetup.sh

選擇編譯目標,選擇1,所有選項的意思,後面更新

lunch

開始編譯,這裡使用了4個並發數:

make -j4

使用打包工具mmm,完成命令後會在根目錄下產生android.irp,用android studio開啟一個現有項目,開啟android.irp即可

mmm development/tools/idegen/

運行目前的版本的模擬器

將emulator源碼目錄加入PATH中

export PATH=&PATH:~/bin/AOSP/out/host/linux-x86/bin

設定源碼編譯輸出目錄

export ANDROID_PRODUCT_OUT=~/bin/AOSP/out/target/product/generic

運行emulator

emulator

下載Android核心原始碼

進入kernel目錄,下載核心

git clone https://aosp.tuna.tsinghua.edu.cn/android/kernel/goldfish.git

進入goldfish目錄,選擇分支

cd goldfish
git branch -a
git checkout remotes/origin/android-goldfish-2.6.29

編譯Android核心原始碼

將交叉編譯工具目錄添加到PATH環境變數中

export PATH=$PATH:~/bin/AOSP/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin

開啟goldfish下Makefile修改設定檔,找到ARCH,CROSS_COMPILE,將其修改如下

ARCH      ?=arm
CROSS_COMPILE  ?=/home/user/bin/AOSP/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/
arm-linux-androidkernel-

note:一定要設為絕對路徑。

組建組態檔案以及編譯

make goldfish_defconfig
make

運行當前核心版本的模擬器

運行當前模擬器

emulator -kernel ./kernel/goldfish/arch/arm/boot/zImage

查看核心版本

adb shell
cd proc
cat version

BUG

JDK記憶體溢出

FAILED: /bin/bash out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/dex-dir/classes.dex.rsp
Out of memory error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by android-jack-team@google.com)).
GC overhead limit exceeded.
Try increasing heap size with java option '-Xmx<size>'.
Warning: This may have produced partial or corrupted output.
ninja: build stopped: subcommand failed.
make: *** [ninja_wrapper] 錯誤 1

A:

export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server

以上就是對Android源碼的下載,和編譯,後續繼續更新相關文章,謝謝大家對本站的支援!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.