Android 及内核源码下载编译

来源:互联网 发布:广州创联软件 编辑:程序博客网 时间:2024/04/28 23:39

以前也下载编译过Android及其内核源码,时间长了有些步骤就忘了,又得上网查询,参考了不少文档,博客,在此一并谢过。本文作为笔记备查,基本步骤都经过验证了,疏漏之处忘大家指正。

环境:VMWare + Ubuntu 14.04 X64,推荐使用真实机器速度要快的多。


安装NDK:
1,从官网下载比如:android-ndk-r10c-linux-x86_64.bin 到/home/lasvegas目录。
2,执行 /usr/jdk-6u45-linux-x64.bin,chmod a+x如果需要的话。
3,添加全局环境变量 /etc/profile
#set ndk env
export NDK_HOME=/home/danny/ndk
export PATH=$NDK_HOME:$PATH


安装JAVA:
1,从官网下载 jdk-6u45-linux-x64.bin 到/usr目录,这个目录可以随便指定。
2,执行 /usr/jdk-6u45-linux-x64.bin,chmod a+x如果需要的话,生成如下文件夹/usr/jdk1.6.0_45/。
3,添加全局环境变量 /etc/profile
#set java env
export JAVA_HOME=/usr/jdk1.6.0_45
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
注意:要切换其他版本的Java,只需如法炮制,然后把export JAVA_HOME修改下即可。


Android 源码下载编译:
1, 安装并配置git,
sudo apt-get install git
#sudo apt-get install git-core gnupg
    git config --global user.email "your email"
git config --global user.name "your name"
可选步骤:
git config --global http.proxy "socks5://IP:PORT"
#set proxy
export HTTP_PROXY="IP:PORT"
export HTTPS_PROXY="IP:PORT"

2,下载repo到要保存源码的目录,比如android-4.3.1_r1
wget https://storage.googleapis.com/git-repo-downloads/repo
chmod a+x repo
注意虚拟机下载比较慢
3, ./repo init -u https://android.googlesource.com/platform/manifest [-b android-4.3.1_r1]
4,./repo sync,出错了就重复执行。
更多信息请参考: https://source.android.com/source/downloading.html


5,在android-4.3.1_r1目录下编译:
source build/envsetup.sh 设置编译环境
lunch [aosp_arm-eng] 启动菜单
make [j16] 多线程编译
更多信息请参考:http://source.android.com/source/building-running.html
编译可能用到的工具包:
sudo apt-get install git-core gnugp flex bison gperf libsdl1.2-dev libesd0-dev build-essential zip curl valgrind libswitch-perl libxml2-utils


6,编译完成后可以尝试运行模拟器:
./out/host/linux-x86/bin/emulator -partition-size 300 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7 -sysdir ./out/target/product/generic -system system.img -data userdata.img -ramdisk ./out/target/product/generic/ramdisk.img [-debug-init -skin QVGA]


出现黑屏:用kernel-qemu-armv7代替kernel-qemu
出现如下warning,加参数 -partition-size 300(这个值>warning要求即可)
emulator: WARNING: system partition size adjusted to match image file (238 MB > 200 MB)
出现如下错误,给ramdisk.img指定绝对路径
qemu: could not load initrd 'ramdisk.img'

上面的问题都解决之后,模拟器一直停留再启动界面如图,之前Windows上碰见过类似情况是因为创建avd时Device 和Target不兼容。没办法只好打包,打包完后,再次执行此步可以成功启动,求解?





7,打包用make PRODUCT-sdk-sdk
  或者make sdk之前执行lunch sdk-eng(未验证)


直接 make sdk出现如下类似错误:
build/core/main.mk:642: *** : Module 'bluetooth-health' in PRODUCT_PACKAGES has nothing to install! 


8,用SDK运行:
android list target 查看target ID
android create avd -n x43 -t 1 -n指定模拟器名 -t 指定target ID
android list avd 查看创建的AVD
emulator -avd x43 [-skin QVGA] 启动模拟器
一些Skins: HVGA, WSVGA, WQVGA400, WQVGA432, WXGA800, WXGA720, WXGA800-7in, QVGA, WVGA800 (default), WVGA854


Android 内核源码下载编译:
1,在android-4.3.1_r1目录下,
mkdir kernel
cd kernel


2, git clone https://android.googlesource.com/kernel/goldfish.git
3,cd goldfish
   git branch -a 选择内核版本
4,git checkout remotes/origin/android-goldfish-2.6.29
5,修改kernel/glodfish目录下的Makefile文件,找到如下两行文字:
 
#ARCH ?= $(SUBARCH)
#CROSS_COMPILE ?=
修改成
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-androideabi-
6, make goldfish_armv7_defconfig
注意 make goldfish_defconfig是针对arm V5版本的。
7,make 要设置环境变量,与CROSS_COMPILE对应
export PATH=$PATH:~/android/android-4.3.1_r1/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin
8,再次用编译好的kernel运行模拟器,在 ~/android/android-4.3.1_r1目录:
./out/host/linux-x86/bin/emulator -partition-size 300 -kernel ./kernel/goldfish/arch/arm/boot/zImage -sysdir ./out/target/product/generic -system system.img -data userdata.img -ramdisk ./out/target/product/generic/ramdisk.img


更多源码下载:https://android.googlesource.com/
0 0