android 编译命令

安卓源码快捷编译命令 本文介绍了Android源码编译中常用的高效命令工具集。主要内容包括:1)基础构建命令如lunch(选择编译版本)、m/mmm(模块编译)及其变体;2)快速代码搜索命令如cgrep/jgrep(按语言类型检索);3)目录跳转工具godir/gomod;4)快速镜像重建命令如snod/vnod。文章还列举了tapas/banchan等特殊场景命令,并区分了常用与不常用指令。这些工具能显著提升Android系统开发效率,避免重复操作,建议开发者掌握核心命令(如lunch、mmm、cgrep)并根据需求拓展使用场 阅读详情

1.编译单个模块,可以使用mmm工具

其使用方法是:mmm <dir>,如编译frameworks下的所有文件:

先在android 源码根目录下执行: source build/envsetup.sh 再换到目标目录下执行:mmm <framwork>
或者:
先执行: $. build/envsetup.sh && help
接着:如下, m, mm, mmm.
Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment:
- croot: Changes directory to the top of the tree.
- m: Makes from the top of the tree.
- mm: Builds all of the modules in the current directory.
- mmm: Builds all of the modules in the supplied directories.
- cgrep: Greps on all local C/C++ files.
- jgrep: Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
- godir: Go to the directory containing a file.
例1:===========================================================================================================================================================
jinli@jinli:~/AndroidStandardSource$ . build/envsetup.sh && choosecombo 1 1 2 3 && export ANDROID_JAVA_HOME=$JAVA_HOME && mmm hardware/libhardware/sensor/
=============================================================================================================================================================

例2:
我们可以使用mmm来编译指定目录的模块,如编译联系人:
mmm packages/apps/Contacts/
编完之后生成两个文件:
out/target/product/generic/data/app/ContactsTests.apk
out/target/product/generic/system/app/ Contacts.apk

2.编译出来的APK,但APK并不包含在system文件夹中,我们可以使用make snod 打包system文件夹,产生新的system.img。

3. make sdk 命令:
make PRODUCT-sdk-sdk

4.应用程序还可以通过eclipse创建android 应用程序安装包。

5.运行在模拟器,上传framework.jar到对应的运行环境目录
$ ./adb push {MYDONUT_OUT_PATH}/target/product/generic/system/framework/framework.jar /system/framework

6. 通过命令,重启设备,更新生效。
$ ./adb shell
# stop
# start

================================================================================

android source 目录下MAkefile内容:

### DO NOT EDIT THIS FILE ###
include build/core/main.mk
### DO NOT EDIT THIS FILE ###

build/core/main.mk包含build/core/config.mk
build/core/config.mk在两个地方查找BoardConfig.mk
config.mk中与此相关的内容:
#Boards may be defined under $(SRC_TARGET_DIR)/board/$(TARGET_DEVICE)
# or under vendor/*/$(TARGET_DEVICE). Search in both places, but
# make sure only one exists.

make 默认的BoardConfig
build/target/board/generic/BoardConfig.mk

====================================================================================

source build/envsetup.sh

make TARGET_PRODUCT=sec_smdk6410 showcommands
=======================================================================================
构建Android 1.5系统映像并在模拟器中运行

1、Host OS编译环境准备
sudo apt-get install flex bison gperf valgrind libsdl-dev libesd0-dev libwxgtk2.6-dev zlib1g-dev
另外,编译过程中还需要用到JDK 5.0(注意JDK6.0不被支持),请到Sun的官方网站下载后安装。

(10.04 & 9.10: sudo agt-get install gcc-4.3 g++-4.3)


2、设置java环境
把JDK5.0加进$PATH,如:
$export PATH=$PATH:/home/william/jdk5.0/bin
然后可以用java -version来确认java的版本


3.Android源码编译出错的解决办法

下载Android源码前,如果在Ubuntu 9.10系统下,需要更换jdk的版本,要换成sun-java5-jdk,如果不更换,在编译Android源码的时候会出现错误。
编译Android源码
下载完源码后,不能直接编译,如果直接make,会出现错误:
frameworks/policies/base/PolicyConfig.mk:22: *** No module defined for the given PRODUCT_POLICY (android.policy_phone).
解决办法:
在 Android源码所在目录中 进入build/tools/findleaves.sh中的第89行
   这一句
find "${@:0:$nargs}" $findargs -type f -name "$filename" -print |
改为
find "${@:1:$nargs-1}" $findargs -type f -name "$filename" -print |
这个错误改过了之后,执行make,又发现错误:
frameworks/base/tools/aidl/AST.cpp:10: error: 'fprintf' was not declared in this scope
解决办法:
下载gcc-4.3和 g++-4.3,替换最新的gcc-4.4和g++-4.4版本
sudo apt-get install g++-4.3 gcc-4.3
进入/usr/bin目录 删除目录下对gcc-4.4 和 g++-4.4的软链接
rm gcc
rm g++
建立如下链接
ln -s gcc-4.3 gcc
ln -s g++-4.3 g++


4、关于编译选项
在build/core目录下的envsetup.mk定义了target的体系结构和OS,默认为arm和linux,我们暂时不涉及移植,所以不需要修改。

5、开始编译
做完上面的准备,在代码树的根目录下敲make就可以了,编译的过程大约需要持续1~2个小时,总计需要大约3.5G的可用空间。

6、测试生成的image
编译完成以后如果想在模拟器中运行,除了kernel的映像文件以外,所需的其他3个映像文件分别是:(位于out/target/product/generic/目录)
ramdisk.img: 包含了在模拟器中启动Android所需的文件系统
system.img: 初始的Android系统映像,包含了程序和库文件
userdata.img: 初始的用户数据映像文件
模拟器会首先到指定的AVD所在的目录查找是否有userdata映像存在,如果没有的话就会基于初始的userdata.img来创建一个,加载这3个映像文件后,它会把system.img和userdata.img分别挂载载到ramdisk文件系统中的system和userdata目录下。所有的用户数据都会被保存在AVD目录下的userdata-qemu.img中,初始的用户数据映像文件并不会被修改。

通过命令行参数启动模拟器,加载我们编译的系统映像的方法:
emulator @1.5_L2 -system system.img -ramdisk ramdisk.img
或者加上-kernel参数,用自己编出来的kernel来启动。
=========================================================================================================================================================

 

android 编译时可能出现gcc版本不匹配的问题,解决方法如下:

下载gcc-4.3和 g++-4.3,替换最新的gcc-4.4和g++-4.4版本
sudo apt-get install g++-4.3 gcc-4.3
进入/usr/bin目录 删除目录下对gcc-4.4 和 g++-4.4的软链接
rm gcc
rm g++
建立如下链接
ln -s gcc-4.3 gcc
ln -s g++-4.3 g++
执行make命令 ,编译成功

 

【ArcGIS】ArcMap中北京1954坐标系转WGS84的实战技巧与参数选择 本文详细解析了在ArcMap中将北京1954坐标系数据转换为WGS84坐标系的完整流程与核心技巧。针对常见的坐标偏移问题,文章首先强调了数据“归位”的重要性,并提供了处理假东、假北值的具体操作步骤。随后,重点阐述了地理变换参数(如Beijing_1954_To_WGS_1984_2)的选择逻辑及其对转换精度的决定性影响,并结合案例说明了参数选择、中央经线确认及结果验证等关键环节,旨在帮助用户高效、准确地完成坐标转换。 阅读详情

相关推荐

linux和mac安装+配置circos(

一定要下载完这两个包,GD才会work,要不然会报错,且-modules显示也是fail。官网的教程说的很明白,但是很多包都已经过时了需要在网上找。一般来讲,所有包的安装都不会太困难,除了GD。1.是因为官网给的链接下出来的tgz无法解压。2.我的电脑安装后GD照样是fail的。,进入这个地址下一个.tgz。第二点的原因在于,官网的情况。,进入这个地址,按部就班。GD安装困难有以下几点。搞了一天终于配置成功。

xiufan1的博客 549

【Android系统】hardware下so编译不生成的问题

问题背景: aosp/hardware/libhardware/modules/下面创建目录,里面一个c文件+一个android.bp 我之前usbdebug版本也是,编译很多次,在out/target/product/msm8953_64/vendor/lib/和out/target/product/msm8953_64/vendor/lib64/下面不生成对应的so文件。 比较郁闷,这个不是android.bp和c文件的问题,应该是编译系统的问题。 之前ud版本不生成时,在文件目.

John_chaos的博客 1448

python数据处理(一)——如何用python实现excel功能

python如何实现excel的数据提取、指标构建,进行透视分析。

一名数据分析师 2704

Android hardware简易流程

一、kernel层 安卓内核层驱动程序生成设备节点/dev/... /sys/class/... /proc/... ,并直接驱动硬件设备 二、hardware层 1).硬件抽象层以模块的形式来管理各个硬件访问接口: 模块的命名规范:<MODULE_ID>.variant.so MODULE_ID:表示模块ID variant:表示系统的四个属性,依次按照ro.hardware、ro.product.board、ro.board.platfo...

Mrdeath的博客 2256

2.4G/4G天线共存方案:Air8101多频段隔离设计实战(附波长计算表)

本文深入探讨了物联网设备中Wi-Fi 2.4GHz与4G LTE天线共存设计的实战方案。针对B40与2.4G频段紧邻带来的干扰挑战,文章系统性地提出了空间隔离、PCB布局优化、结构设计三重防线,并提供了关键的波长计算工具与系统级验证Checklist,旨在帮助工程师将多频段隔离设计从“玄学”变为可执行的工程规范。

weixin_29197051的博客 389

Android研究_Hardware Composer_2 加载HWComposer模块及编译分析

上文有提到过,HWComposer本质上就是Android的HAL层,用于提供一些api,使得AndroidFramework可以通过HWComposer接口来对硬件混合模块进行操作。这边,我们主要关注的时候HWComposer的信息,而和HAL相关的知识点,请参考文献【6】。       在HWComposer的构建函数中,通过调用loadHwcModule()来完成HWC模块的加载。   

putiancaijunyu的专栏 3768

Matlab R2024a硬件支持包安装避坑指南:以Arduino为例(附离线包下载)

本文详细介绍了Matlab R2024a硬件支持包(Support Package)的安装流程,特别是针对Arduino平台的避坑指南和高效部署方法。从环境准备、离线安装方案到Arduino支持包的专项优化,提供了全面的技术细节和解决方案,帮助开发者避免常见错误,实现快速部署。

weixin_33737134的博客 447

android项目编译命令行,命令行编译Android项目

1. 生成R文件> aapt package -f -m -J ./gen -S res -M AndroidManifest.xml -I D:\android.jar-f 如果编译生成的文件已经存在,强制覆盖。-m 使生成的包的目录存放在-J参数指定的目录-J 指定生成的R.java 的输出目录路径-S 指定res文件夹的路径-I 指定某个版本平台的android.jar文件的路径-A ...

weixin_30424461的博客 839

第28节:cesium 加载高程数据(含源码+视频)

cesium 加载高程(地形)数据

qq_29384639的博客 1740

LangGraph教程8:LangGraph流式处理

流式处理可显著提升基于LLM应用的响应性。LangGraph支持两种流式模式:values模式返回每一步的完整结果,适合需要完整上下文处理的场景;updates模式仅返回增量变化,适用于实时更新需求。示例代码展示了如何用create_react_agent实现这两种模式,其中values模式完整记录处理流程,updates模式逐步输出结果。通过异步迭代输出流,开发者可以灵活选择适合应用场景的流式处理方式。

Cachel Wood的博客 620

Android 编译过程

1. 编译步骤 1.1 谷歌给出的官方编译步骤 1> source build/envsetup.sh: 加载命令和分支 2> lunch: 选择平台(分支)以及平台相关的编译选项 3> make: 执行编译 1.2 产品公司的编译步骤 SOC厂商和产品公司编译 Android 源代码时的步骤与谷歌官方给出的编译步骤是一样的,SOC厂商和产品公司只需要在Android给定的框架下添加自己项目专属的配置文件和配置目录,然后再编译时通过 lunch

四季帆的博客 4152

深入理解 ABAP 中的 Fast Data Access:从 @itab 到 FOR ALL ENTRIES 的性能关键路径

ABAP性能优化的关键在于理解Fast Data Access(FDA)机制,它连接了应用服务器的内表与数据库运算。FDA允许将内表数据推送到数据库进行筛选、聚合等操作,是SELECT...FROM@itab语法的基础。开发者需注意:1)该语法可能在内置引擎或数据库执行;2)仅当SQL能力超出ABAP范围时才建议使用;3)需通过CL_ABAP_DBFEATURES检查数据库支持情况。合理使用FDA可优化批量数据处理,但滥用可能导致性能下降。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1269

Android源码编译命令详解

知其然还需知其所以然,这样能更深层次的理解并记忆,才能与自身的知识体系建立强连接,或许还有意外收获,果然如此,接下来跟大家分享一下在研究上述几条指令含义的过程中,深入了解到的Android Build(编译)系统。编译系统正是以模块为单位进行编译,每个模块都有唯一的模块名,一个模块可以有依赖多个其他模块,模块间的依赖关系就是通过模块名来引用的。上述只是列举比较常用的指令,还有其他指令,而且不同的build编译系统,支持的指令可能会存在一些差异,当忘记这些编译指令,可以通过执行。

u010345983的博客 9669

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android源码编译命令汇总

模板名称Android源码编译命令汇总1. 概述2. 编译命令1. 初始化编译环境2. 编译源码(全编)3. 编译源码3.1. 代码编译3.1.1. m 在源码树的根目录执行编译3.1.2. mm 编译当前路径下所有模块,但不包含依赖3.1.3. mmm 编译指定路径下的所有模块3.1.4. mma 编译当前路径下所有模块,且包含依赖3.1.5. mmma [module_path] 编译指定路径下所有模块,且包含依赖3.1.6. make [module_name] 无参数,则表示编译整个Android

章飞 _906285288的博客 8352

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

MTK Android 编译命令

一、Target 编译命令 usage: (makeMtk|mk) [options] project actions [moudles] options: -t,-tcc :print log information to the standard output. -o,-...

caobaokang的专栏 1万+

Android MTK 编译命令

外链图片转存中…(img-3eBQ30LD-1712820359081)]

2401_84103844的博客 1080

Android 源码编译命令

先看下面几条指令,相信编译过源码的人都再熟悉不过的。

Framework-coder的博客 1098

Android 编译命令

还有一份相关的ppt 资料日后分析整理了再补充,在Android源码根目录下,执行以下三步即可编译android: source build/envsetup.sh #这个脚本用来设置android的编译环境; lunch #选择编译目标 make #编译android整个系统android 系统平台开发长用到的命令 1.在 android 目录 或者 alps 目录下 source

2921

Android 原生编译命令汇总

导出环境变量: source build/envsetup.sh 选择工程: lunch full_vz6753_65c_a_l1-userdebug lunch full_vz6753_65c_a_l1-eng lunch full_vz6753_65c_a_l1-user lunch full_vz6753_65u_a_l1-userdebug lunch full_vz67...

wangjun7121的专栏 2535

Android常用的编译命令

1.make -jX X表示数字,这个命令将编译Android系统并生成镜像,XX表示可以使用到的CPU核数,这在配置好的电脑上特别有用,公司的16核ubuntu服务器执行make -j16只要不到20分钟,而双核PC上需要4个小时! 2.make snod 这条命令将重新生成镜像,消耗的时间很少,类似WinCE的makeimg过程,如果你修改了一些数据文件(如音乐、视频)等文件时比较有用。 3....

weixin_30619101的博客 203

Android编译命令

目录 说在前面 编译流程 编译指令 代码编译 代码检索 其他指令 说在前面 从最开始接触Android系统开始,每次进行代码编译都需要网上搜索编译指令。后来大致熟悉了Android的编译体系,加深了对Andr...

angan4532的博客 1069

Android编译详解之lunch命令

Android的优势就在于其开源,手机和平板生产商可以根据自己的硬件进行个性定制自己的手机产品,如小米,LePhone,M9等,因此,在我们在对Android的源码进行定制的时候,很有必要了解下,Android的编译过程。 如果你从来没有做过Android代码的编译,那么最官方的编译过程就是查看Android的官方网站:http://source.android.com/source/b

少壮不努力,老大做LINUX 4万+

mtk平台android编译命令,MTK 常见的编译命令

1: ./mk n(r) kernel; ./mk bootimage;当修改build-in 到kernel相关代码时,要使用此命令,具体文件参考如下:alps/kernel/alps/mediatek/platform/mt65xx/kernel/alps/mediatek/source/kernel/alps/mediatek/coustom/mt65xx/kernel/alps/media...

weixin_33245968的博客 1720

mtk android 编译命令

一、Target 编译命令 usage: (makeMtk|mk) [options] project actions [moudles] options:       -t,-tcc                                                 :print log information to the standard output.

hsyouxishe的专栏 2059

命令行编译android apk

【详细步骤】:  1、使用aapt生成R.java类文件:  例:  F:\explorer\android-sdk-windows2.2\tools>f:\explorer\android-sdk-windows2.2\platforms\android-3\tools\aapt.exe package -f -m -J F:\explorer\AndroidByread\gen -S r

Cheng的专栏 4429
上一篇: linux 编译相关知识积累
下一篇: 开发板常用设置命令
jaylin2013
博客等级 码龄16年 12粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值