編輯:關於Android編程
本教程是基於Ubuntu下Android6.0.1源碼以及內核的下載和編譯,記錄一下,以後也就不用自己去找資料,一遍一遍的嘗試了。可以翻牆的,英語好的,直接去AndroidSource.
系統環境:Ubuntu14.04LTS
Android版本:6.0.1
重要網址
清華大學鏡像
AndroidSource
下載前的准備
安裝OpenJdk
sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-8-jdk sudo update-alternatives --config java java -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 ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod 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 [email protected])).
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源碼的下載,和編譯,後續繼續更新相關文章,謝謝大家對本站的支持!
“點九”是andriod平台的應用軟件開發裡的一種特殊的圖片形式,文件擴展名為:.9.png 智能手機中有自動橫屏的功能,同一幅界面會在隨著手機(或平
最近在網上看到時間軸的布局效果,嘗試按照這個原理,實現物流跟蹤的效果,目前已經實現了,效果如下圖。 界面布局主要是通過listView來
認識ReactReact是一個用於構建用戶界面的JavaScript庫。 React主要用於構建UI,很多人認為React是MVC中的V,即視圖。 React起源於Fac
該功能實現很簡單,就是根據手指坐標位置在畫板上畫 1.效果圖 2.代碼實現 public class ErinieShow extends