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

工业互联网工控安全与工业质检AI大模型建设方案.pptx 立即下载

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


EPSON RX8010SJ RTC实战:I2C寄存器配置避坑指南(附完整初始化代码) 本文详细解析了EPSON RX8010SJ RTC芯片在I2C寄存器配置中的常见问题与解决方案,包括TEST位、STOP位和中断控制等关键配置要点。通过实战经验分享和完整的初始化代码模板,帮助开发者避免常见陷阱,确保RTC模块的稳定运行。 阅读详情

相关推荐

学习笔记:CNN中模型复杂度

CNN有卷积层和全连接层构成。对于一个卷积层,设输入通道数未CinC_{in}Cin​,输出通道数未CoutC_{out}Cout​,卷积核kernel size为Kw×KhK_w\times K_hKw​×Kh​,输出的特征图尺寸是H×WH\times WH×W 。全连接层的输入通道数为NinN_{in}Nin​,输出通道数为NoutN_{out}Nout​. 时间复杂度 用每秒钟浮点数运算量衡量。 FLOPs指的是floating-point operations per second,每秒钟浮点数运算

keep用心的博客 623

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

致 明理:       从那场意外温柔地撞击心灵的一刻开始,我便知道这一生都要有你的痕迹。             我是先习惯上你的名字然后才是你这个人。每次总能在借书证上见到你的名字,我就知道早晚会和你相识。并不是所有一辈子都会想起的相识都需要有明媚的阳光,而我已经记不清当我第一次听到你说“我叫蓧原明理,请多关照”时的情景,只记得你微微地侧头带着温暖的笑容。时至今日,我仍庆幸小时侯的体弱多病

yishuaijun的专栏 879

【AAAI2025】【小目标检测】FBRT-YOLO:更快速、更优的实时航拍图像检测方法

FBRT-YOLO是一种新型实时航拍图像检测方法,针对小目标检测的精度与效率平衡问题提出创新解决方案。该方法通过两个轻量级模块显著提升性能:特征互补映射模块(FCM)将浅层空间位置信息深度整合至网络深层,缓解信息失衡;多核感知单元(MKP)采用多尺度卷积增强多目标感知能力。实验表明,在VisDrone、UAVDT和AI-TOD数据集上,FBRT-YOLO在检测精度和速度方面均优于现有实时检测器,特别适用于资源受限的飞行设备。该模型通过精简网络结构,在保持高性能的同时降低了计算负担,为航拍实时检测提供了高效解

weixin_44184852的博客 2900

Android编译中m、mm、mmm 详解

Android 完成编译的时候先执行 source build/envsetup.sh。 在这个shell 脚本中定义了 help, croot, m, mm, mmm 等 function 之后在当前目录下执行help 可以发现它给出的信息和此前见过linux 下面help 的信息不一样了: Invoke ". build/envsetup.sh" from your shell to ...

移动开发记录 691

AXI Timer IP核使用说明

AXI Timer是提供定时技术功能的集成IP核,具有时间生成、事件捕获、产生PWM波以及产生中断的功能,下面具体讲述Timer IP核的使用说明。

weixin_43418104的博客 2486

DNF服务器搭建服务端架设教程

第三步:打开winscp,上传Script.pvf(版本)、publickey.pem(密钥)、df_game_r(等级补丁)到home/neople/game目录下。第四步:打开putty输入./stop,./stop(两次,如果是首次架设不用./stop),./run,运行刚才上传的三个游戏文件。③是本地配置登录器的配置文件,自动生成,可以删除,但是还是会根据你生成的登录器生成这个文件,类似日志。⑤密钥中所上传的三个文件其中之一,重中之重,上传到服务器的密钥必须和登录器中的密钥为一个。

V13807970340的博客 6255

Android系统编译指令make 、mmm、mm优缺点比较

Android 系统提供了三种指令用于编译,他们分别为make、mmm、mm,这三个指令编译的优缺点如下: 1. make:不带任何参数,用于编译整个系统,编译时间比较长,除非是进行初次编译否则不建议此种做法; 例如:make MediaProvider  z这种模式对应于单个模块的编译。它的优点是:会把该模块依赖的其他模块一起跟着编译。例如:make libmedia 就会把libmedia

寒风的博客 1万+

CANoe SOME/IP实战:从ARXML到VCODM的完整配置与调试

本文详细介绍了使用CANoe进行SOME/IP通信测试的完整流程,从硬件环境准备、ARXML文件处理到VCODM文件配置与调试。通过实战技巧和常见问题解决方案,帮助工程师高效完成从ARXML到VCODM的配置,确保SOME/IP通信的稳定性和可靠性。

weixin_29169899的博客 465

Apk无源调试利器

我们在开发android应用时,一般会直接使用eclipse来调试java代码。但是那只是在有源代码的情况下,我们用eclipse调试是很方便的。 但是当我们做android逆向时,显然不会有源代码,这时候如果想要调试目标java代码呢?   我们通常都是用dex2jar等反编译工具将apk编译成源代码,然后再编译回去,在某些情况下这种做法是有效的,但是并不是所有的apk都能成功编译成源代码

tongjianfeng的专栏 7655

WiFi基本概念(六)(L-STF,L-LTF)

L-STF它由10个OFDM symbol(1,0,1,0,1,0,1,0,1,0)构成,每个symbol是0.8us,GI是0.2us,总计10us。Symbol的长度是正常长度的1/4,因此称为Short training field,主要用于快速进行信号检测,信号同步,自动增益控制,接收天线选择(Diversity Selection)。 由于symbol长度是正常的1/4,子载波的宽度是正常的4倍,能进行初略的信道估计,其使用了-24, -20, -16, -12, -8, -4, 4, 8, 1

reekyli的专栏 6860

“华为杯”研究生数学建模竞赛2020年-【华为杯】E题:能见度估计与预测(附获奖论文及python代码实现)

因此,题目要求借助机场的 AMOS 观测数据中的气压、温度、湿度、风速等气象因子,达到 100% 时,空气中的水汽便会凝结成细微的水滴悬浮于空中,使地面水平的能见度下。传统的仪器探测法成本高,覆盖范围小,而基于视频的能见度检测能弥补仪器测量的不足之处,但是预测精度不高,需要进一步改。象条件,空气质量的影响,其中较为关键的影响因子是雾和霾。性过强,激光能见度仪的检测方法更为可信,但是激光能见度仪覆盖的检测范围小,安装。覆盖的交通视频路况数据间接计算得到能见度数值的方法,此方法成本较低,覆盖范围广。

getusushu的博客 2280

grep查找字符串所在文件和行号,find查找文件所在目录即路径

grep查找字符串所在文件和行号,find查找文件所在目录即路径 1、grep -rin "app.te" device/ 注意:i-忽略大小写、n-显示行号。 device/mediatek/common/BoardConfig.mk:56: app.te \ device/mediatek/common/BoardConfig.mk:67: untrusted_app

新生代CV搬运工 4万+

Unity大世界流式加载:工业级架构与优化秘籍

游戏大厂Unity大世界流式加载框架全景解析:从《原神》《和平精英》等标杆案例出发,深入剖析工业级流式加载的完整技术架构。文章系统介绍了大世界分区块管理、异步加载机制、资源优化策略、多平台适配方案,以及业务联动与团队协作流程。重点阐述了Addressable与AssetBundle应用、空间触发器设计、性能自适应等核心技术,并展望AI预测加载、云游戏等未来方向。全面展现了大厂如何通过流式加载技术实现无缝开放世界体验的技术路径与实践经验。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 606

grep -E 即 egrep 匹配多个

grep --help -E, --extended-regexp     PATTERN 是一个可扩展的正则表达式(缩写为 ERE) ‘egrep’即‘grep -E’。 匹配单个,不用双引号: ls | grep  file 匹配多个,要加参数,使用双引号: ls | grep -E "file1|file2" ls | egr

新生代CV搬运工 3万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ERROR 'duplicate declaration of type/attribute' at token ';' on line 14430

MTK添加Android权限te文件后,编译make bootimage报重复duplicate错误。 错误信息: ------------------------------------------------------------------------ out/host/linux-x86/bin/checkpolicy: loading policy configurati

新生代CV搬运工 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

c语言 int与byte[]互相转换

c语言 int与byte[]互相转换 root@ubuntu:/media/mtk6795/alps/sunwave_pub# gcc -g test.c root@ubuntu:/media/mtk6795/alps/sunwave_pub# gdb ./a.out GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04 Cop

新生代CV搬运工 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

find . -type f ! -name "*.o" 排除某类文件 排除多类文件 排除隐藏文件

# ls 先看看有的文件,这是linux中特有的android驱动。(目录:kernel/drivers/staging/android/) # find . -type f ! -name "*.o" 排除以“.o”结尾的文件,但是把隐藏文件(以“.”开头的文件)也查出来了。也就是排除某类文件。 # find . -type f ! -name "

新生代CV搬运工 1万+

小米系列手机开源代码

小米系列手机开源代码 https://github.com/MiCode/Xiaomi_Kernel_OpenSource

新生代CV搬运工 8309

VMware 已经安装了【VMware Tools】 却不能进入Unity模式(Ubuntu12.04)

VMware 已经安装了【VMware Tools】 却不能进入Unity模式(Ubuntu12.04) 修改启动方式: 以GNOME Classic(No effects)方式启动ubuntu, 才可以进入Unity模式。

新生代CV搬运工 7386

find & grep 结合查找 某字符串 所在文件

1、 在当前目录下所有文件中查找内容包含 字符串 bruce_xxx 的文件: # find ./ -name "*" -exec grep "bruce_xxx" {} \; ----------------------------------- root@ubuntu:/media/4412-5.0_/bruce-4412-5.0/android-5.0.2/brucepat

新生代CV搬运工 7127

编写第一个Android Native Service

编写第一个Android Native Service :SQRService,求平方(Square)运算。 为什么有核心服务呢?  1. 核心服务是 Android 框架里最接近Linux/Driver 的部分。为了充分发挥硬件设备的差异化特性,核心服务是让上层Java 应用程序来使用Driver/HW Device 特色的重要管道。 2. 在开机过程中,就可以启动核心服务(例如汉

新生代CV搬运工 5149

查看中断号cat /proc/interrupts |grep sw_irq

查看中断号cat /proc/interrupt |grep sw_irq

新生代CV搬运工 4946

adb logcat 2>&1 | tee log.log

好吧, 之前傻傻只知道使用eclipse的logcat查看手机的log日志; 有时经常导致adb.exe挂了。 新方法, 在ubuntu使用命令查看手机log。  adb logcat 2>&1 | tee log.log 2是标准错误,&1是标准输出,2>&1意思就是将标准错误输出到标准输出中 Ctrl + C 停止。

新生代CV搬运工 3668

Linux下Binder驱动源码(linux-3.0.86)

以linux-3.0.86为例 目录:linux-3.0.86/drivers/staging/android/ binder.c /* binder.c * * Android IPC Subsystem * * Copyright (C) 2007-2008 Google, Inc. * * This software is licensed under

新生代CV搬运工 3179

修改vmware虚拟机的虚拟磁盘卷标

打开 虚拟磁盘 vmdx 名字 很长 fb8b73ae-97fe-4064-a698-e18b56a22aec 现象: 挂载自己新建的虚拟磁盘vmdx后,/media/下名字变成一连串字母。 解决: ubuntu中使用 磁盘实用工具,在虚拟磁盘未挂载时修改卷标。

新生代CV搬运工 2747

mtklog 日志到一定条件自动删除

MTK平台手机中, 开启MTKLogger后,记录一段时间后,部分日志会被删除。为什么呢? 原因在于,配置文件mtklog-config.prop中,配置的日志的大小size。 路径:/etc/mtklog-config.prop 命令:cat /etc/mtklog-config.prop mtklog_path = internal_sd com.mediatek.log.m

新生代CV搬运工 2654
上一篇: 【Qzone】缘何似个愁 第二步 编译Android源代码
下一篇: 【Qzone】入戏太深 第四步 创建一个新的Android产品项目 模拟器版
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值