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

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

  1. 向来缘浅,奈何情深。——《秒速五厘米》

    致 明理:  从那场意外温柔地撞击心灵的一刻开始,我便知道这一生都要有你的痕迹.   我是先习惯上你的名字然后才是你这个人.每次总能在借书证上见到你的名字,我就知道早晚会和你相识.并不是所有一辈子都会 ...

  2. 聚散匆匆,奈何情深缘浅

    寒月袭天,思绪万千.飘落的秋叶,带着我深深的思念.浪漫的画面,浮现在眼前,而此刻你已不在我身边,轻轻的翻开扉页,为你写下诗篇,柔情的字眼,缱绻的缠绵. 一张纸,一支笔,借着凄清的夜,泛着暖黄的灯,我究 ...

  3. 【阿里笔试+蘑菇街面试】向来缘浅,奈何情深

    2015-08-21 今晚阿里笔试,我报的业务型产品经理,7点开始,15分钟的不定性选择题,题目有关互联网.产品经理基本知识和逻辑推理题(类似行测),一共10题,时间绰绰有余,个别题可能有点纠结.然后 ...

  4. 向來情深,奈何緣淺,卻不悔相思。

    [遇見:一場美麗的意外] 多少次的不期而遇才能收穫一輩子的幸福,而我們只是一次不浪漫的邂逅卻讓我陷入了無盡的相思中.不,不能說是邂逅吧,只能說是一面之緣.但在茫茫人海,在不確定的時間,不確定的地點,在 ...

  5. 关于编程的浅学习与深学习

    导读:Tanky Woo的程序人生在博客中发表了<关于编程的浅学习与深学习>,文章是关于编程学习的一个提议.归纳.总结. 以下是文章全部内容: 关于编程的学习,大家肯定都知道,也是大家都说 ...

  6. java自我复制_原型模式--自我复制(结合Java浅复制与深复制)

    原型模式,字面上的理解,以原型为标杆的模式. 原型模式其实就是从一个对象再创建另外一个可定制对象,而且不需知道任何创建的细节. 我们可以用原型示例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. ...

  7. android 浅复制与深复制

    今天,简单讲讲  android 浅复制与深复制的内容. 一.前言 任何变成语言中,其实都有浅拷贝和深拷贝的概念,Java 中也不例外.在对一个现有的对象进行拷贝操作的时候,是有浅拷贝和深拷贝之分 ...

  8. JAVA中浅复制与深复制

    來源:http://coolmist.javaeye.com/blog/127455 1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引 ...

  9. python浅复制与深复制_Python中的浅复制与深复制

    python浅复制与深复制 In python, the assignment operator does not copy the objects, instead, they create bin ...

最新文章

  1. mysql5.7复制集_mysql--replication复制集典型配置
  2. bdm导入mysql_vs 2010下使用水晶报表Crystal Reports
  3. Android OpenGL ES 2.0绘制简单三角形
  4. XML编程-DOM4J
  5. [UOJ50]链式反应
  6. Qt编写安防视频监控系统60-子模块4云台控制
  7. 计算机多媒体技术英文,计算机多媒体技术在英语听力测试中的应用
  8. 将数字转为ASCII码
  9. 东北大学——应用数理统计——笔记
  10. Ds1302 时钟芯片的使用
  11. composer require fxp/composer-asset-plugin 失败
  12. 无废话ExtJs 入门教程七[登陆窗体Demo:Login]
  13. syntactic sugar - 语法糖 - 糖衣语法
  14. ③电子产品拆解分析-充电宝台灯
  15. 汉语与asc码互转最快的办法
  16. Unity (C#) 使用 LitJson 处理 JSON 数据
  17. 非精确一维线搜索(Armijo-Goldstein Rule 和 Wolfe-Powell Rule)
  18. 《大话数据结构》笔记——第8章 查找(四)
  19. 单片机中常见英文缩写(51为例)
  20. 万字长文!分享一个能让你的代码变得更整洁的技巧

热门文章

  1. 苹果4怎么越狱_来看iPhone迁移怎么用 除iOS12.4苹果还为旧款设备推送了更新
  2. 图的邻接矩阵和邻接表
  3. 公有链规模可扩展性的讨论 PPT
  4. paper:Attention Is All You Need(模型篇)
  5. 花开不败(作者:职烨)
  6. 小米电视4A Android8,小米电视4A精简系统教程
  7. 零基础学习WEB前端开发(十六):font-family字体系列
  8. android底层之什么是Zram?
  9. SharePoint BI培训资料
  10. js逆向验证码篇之极验4代