【Qzone】向来缘浅 奈何情深 第三步 编译Android内核源代码

来源:互联网 发布:ml域名免费注册 编辑:程序博客网 时间:2024/04/27 17:28

2015-1-26 02:11

前提:第二步骤已经理解并且完成了 下载好需要的Android内核源代码
本次所用Android内核源代码版本为:android-goldfish-2.6.29  Android模拟器版 
下载地址:目前有效http://pan.baidu.com/s/1sjry4Q5密码:47xl

其实本篇日志包含两部分内容 一是Android内核源代码的编译  一是开发一个Android应用程序来验证

下面开始编译内核源代码步骤:
1.解压下载好的android-goldfish-2.6.29 并在android-2.3.7_r1目录下新建kernel内核目录 将解压后的android-goldfish-2.6.29复制到kernel下 改名android-goldfish-2.6.29为goldfish
2.打开Android内核源代码goldfish根目录下的Makefile文件 修改体系结构ARCH和交叉编译工具CROSS_COMPILE
3. 将交叉编译工具所在的目录添加到环境变量PATH中 命令为export PATH=$PATH:/home/devwang/android-2.3.7_r1/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin
4.修改硬件配置文件goldfish_defconfig 这里不做修改 使用默认 直接在Android内核源代码goldfish根目录下执行make goldfish_defconfig命令
5.执行make命令 编译成功后可以看到下面两行输出      OBJCOPY arch/arm/boot/zImage    Kernel: arch/arm/boot/zImage is ready 可以看出编译好的Android内核镜像文件zImage位于Android内核源代码goldfish目录下arch/arm/boot子目录中
6. 运行Android模拟器 命令emulator 带参数-kernel 以指定Android模拟器所使用的内核镜像文件 &表示在后台启动Android模拟器 目的为了可以在同一终端下使用adb命令   执行命令
 emulator -kernel ./kernel/goldfish/arch/arm/boot/zImage &
注意:执行emulator之前得先运行以下两条命令来配置环境变量 
export PATH=/home/devwang/android-2.3.7_r1/out/host/linux-x86/bin
export ANDROID_PRODUCT_OUT=/home/devwang/android-2.3.7_r1/out/target/product/generic
如果没有的话会报一下错误 
mmand 'emulator' found, did you mean:
Command 'qemulator' from package 'qemulator' (universe)
emulator: command not found
7. Android模拟器启动后可以使用adb来验证查看模拟器运行的是否为自己编译的内核 看到如下输出表示Android内核源代码编译成功
Linux version 2.6.29 (devwang@devwang-desktop) (gcc version 4.4.3 (GCC) ) #2 Sun Jan 25 16:53:55 HKT 2015
成功 哈哈哈 很高兴有木有
8. 开发一个Android应用程序来验证系统的行为 这里假设读者已经熟悉如何使用Android SDK来开发Android应用程序
补充:在linux下的Android应用程序工程一般包含有 一个源代码目录src 一个资源目录res 一个配置文件AndroidManifes.xml和一个编译脚本文件Android.mk   这里吐槽一下AndroidManifest英文不要拼错 我写错成了AndroidMainfest找半天才找到原因 那个痛苦啊
9. 以上各个文件都准备好以后(建议用eclipse)开始单独编译和打包Android应用程序模块
10. 在使用mmm命令之前 要在Android源代码目录下执行以下source ./build/envsetup.sh脚本文件 mmm命令才可以被使用 命令mmm的用法可以通过-help来查看
devwang@devwang-desktop:~/android-2.3.7_r1$ source ./build/envsetup.sh
11. 单独编译Android应用程序模块 以上应用程序的名称为HelloAndroid 
devwang@devwang-desktop:~/android-2.3.7_r1$ mmm ./packages/experimental/HelloAndroid/
12.重新打包Android系统镜像文件 执行make snod命令 即可重新打包Android系统镜像文件system.img
devwang@devwang-desktop:~/android-2.3.7_r1$ make snod
13.执行emulator命令启动Android模拟器 在应用程序启动器中可以看到刚刚应用程序的快捷图标 点击软件正常运行  OK !!!


下面是图解及其详细的说明:

change arch and cross compile
图片



pwd tool
图片


export tool
图片

make goldfish defconfig
图片


make goldfish success
图片


make goldfish success zImage
图片

emulator with kernel parament
图片


emulator kernel run
图片

adb shell kernel check
图片


kernel devwang
图片

app files
图片


problem AndroidManifest because AndroidManifest(right) and AndroidMainfest(error)
图片

problem theme (the reason all by eclipse)
图片

problem theme tip (the reason all by eclipse)
图片

problem dimen (the reason all by eclipse)
图片

problem dimen tip (the reason all by eclipse)
图片

source mmm
图片

mmm help
图片

mmm HelloAndroid
图片

mmm HelloAndroid apk success
图片

make snod
图片

make snod success
图片

emulator app success
图片

emulator app run success
图片


make snod kernel devwang
图片

至此 Android内核源代码的编译  和 开发一个Android应用程序来验证 完成  OK 

图片

终わりました。 OK 
2015 01 26 02:10


0 0