MTKandroid快速编译方法Word格式文档下载.docx
《MTKandroid快速编译方法Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《MTKandroid快速编译方法Word格式文档下载.docx(23页珍藏版)》请在冰点文库上搜索。
![MTKandroid快速编译方法Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/2abb5fb3-2dc7-4fea-b3d1-e737f635cdc7/2abb5fb3-2dc7-4fea-b3d1-e737f635cdc71.gif)
$(INSTALLED_RECOVERYIMAGE_TARGET):
$(MKBOOTFS)$(MKBOOTIMG)$(MINIGZIP)\
$(INSTALLED_RAMDISK_TARGET)\
$(INSTALLED_BOOTIMAGE_TARGET)\
$(recovery_binary)\
$(recovery_initrc)$(recovery_kernel)\
$(INSTALLED_2NDBOOTLOADER_TARGET)\
$(recovery_build_prop)$(recovery_resource_deps)\
$(recovery_fstab)\
$(recovery_gzip)$(recovery_sec_ko)\
$(RECOVERY_INSTALL_OTA_KEYS)
的前面添加:
ifeq($(TARGET_USERIMAGES_USE_UBIFS),true)
$(recovery_ubiformat)
endif
否则会编译失败!
(4).修改后Android编译时间降低16%~18%(数据仅供参考)
(5).此种方法google已在4.3版本默认应用了。
(6).仅对new有效果,但是由于没有编译没有用到的模块,不仅节省时间还节省磁盘空间(节省out目录下的中间文件)。
2.开启androidccache
(1).ccache是google默认就存放在codebase的工具,对于ccache的功能可以到网络搜寻资料。
(2).设置cache大小(这一步一定要做!
!
),一个codebase需要大约5G的空间,如果你的编译环境有5个codebase在使用,那么需要25G的空间。
设置小了还会引起编译时间延长!
[1].GB版本:
prebuilt/linux-x86/ccache/ccache-M25G
[2].JB版本:
prebuilts/misc/linux-x86/ccache/ccache-M25G
(3).
开启的方法:
[1].命令行增加USE_CCACHE=1即可:
./mk-o=USE_CCACHE=1n。
如果是user版本开启ccahce的话,可以这样:
./mk-o=USE_CCACHE=1,TARGET_BUILD_VARIANT=usern。
[2].建议:
添加到环境变量(其他方式亦可):
修改alps/makeMtk,在#!
/usr/bin/perl之后新建一行,填写$ENV{"
USE_CCACHE"
}=1;
(4).
第1次编译会花多一点时间建立cache,之后即可享受ccache带来的好处,降低所有使用gcc的编译时间,大约25%~30%。
[1].可以通过ccache-s查看cache信息,如果满了可以用ccache-C清除所有。
在满了状态下编译新codebase,将会旧的那个清除,这会降低效率,所以cache一定要设置正确!
(6).对mm/new/remakeandroid都有效果。
3.开启kernelccache
(1).以上ccache只对编译android有效,kernel部分需要额外设置才行
(2).alps/kernel/Makefile文件中的
S
=$(CROSS_COMPILE)as
LD
=$(CROSS_COMPILE)ld.bfd
CC
=$(CROSS_COMPILE)gcc
CPP
=$(CC)-E
之后添加:
ifneq($(USE_CCACHE),)
exportCCACHE_COMPILERCHECK:
=content
exportCCACHE_SLOPPINESS:
=time_macros,include_file_mtime,file_macro
exportCCACHE_BASEDIR:
=/
ccache:
=$(strip$(wildcard$(PWD)/../prebuilts/misc/linux-x86/ccache/ccache))
ifdefccache
ifneq($(ccache),$(firstword$(CC)))
CC:
=$(ccache)$(CC)
endif
ccache=
(3).这样在编译kernel时也可以享受到ccache带来编译时间的缩短。
以上两种方法优化后大约可降低50%的编译时间,也就是说优化前需要1小时编译时间,优化后半小时就完成了。
还可以参考:
FAQ11348共享ccache的缓存
FAQ10299如何加速./mksnod打包
FAQ03127当修改一些代码时,使用什么编译命令可以最有效率
FAQ05444只修改kernel的时候,快速编译方法
/////////////////////////////////////////////////////////////////////
//addedbyCheguoshengstart
ccache-s
查看ccache的大小
ccache-C
清除cache,C要大写
设置ccache的大小:
如果是JB版本,直接在终端运行:
如果是GB版本,直接在终端运行:
//addedbyCheguoshengend
[FAQ05444]只修改kernel的时候,快速编译方法
Download
FAQ发布时间:
2013-04-20
MT6573MT6575MT6577MT6589MT6572
GB2ICSICS2JBJB2
[Description]
通常我们修改kernel的时候,需要下命令./mkxxxnk;
./mkbootimage;
这样需要比较长的时候.
此FAQ提供快速编译方法
[Keyword]
kernelbuild
[Solution]
1:
将如下code存为mkbootimage.sh
2:
将mkbootimage.sh放在alps/目录下:
3:
cpout/host/linux-x86/bin/mkbootimg
./
4:
修改权限:
chmod777mkbootimage.sh
5:
执行:
./mkbootimage.shproject_name
GB,GB2上需要修改成
#!
/bin/sh
PROJECT=$1
echo./makeMtk$PROJECTnewkernel
./makeMtk$PROJECTnewkernel
echomkbootimg--kernelkernel/Download/flash/kernel_$PROJECT.bin--ramdisk./out/target/product/$PROJECT/ramdisk.img-o./out/target/product/$PROJECT/boot.img
./mkbootimg--kernelkernel/Download/flash/kernel_$PROJECT.bin--ramdisk./out/target/product/$PROJECT/ramdisk.img-o./out/target/product/$PROJECT/boot.img
ICS,ICS2,JB2上需要修改成:
echomkbootimg--kernelkernel/out/kernel_$PROJECT.bin--ramdisk./out/target/product/$PROJECT/ramdisk.img-o./out/target/product/$PROJECT/boot.img
./mkbootimg--kernelkernel/out/kernel_$PROJECT.bin--ramdisk./out/target/product/$PROJECT/ramdisk.img-o./out/target/product/$PROJECT/boot.img
[FAQ03127]当修改一些代码时,使用什么编译命令可以最有效率
2014-01-25
MT6575MT6577MT6589MT6572MT6582MT6588MT6592
GB2ICSICS2JBGB3JB2JB3JB5JB9
当修改一些代码时,使用什么编译命令可以最有效率
编译命令修改代码最有效率快速编译
./mkn(r)kernel;
当修改build-in到kernel
相关代码时,要使用此命令,具体文件参考如下:
alps/kernel/
alps/mediatek/platform/mt65xx/kernel/
alps/mediatek/source/kernel/
alps/mediatek/coustom/mt65xx/kernel/
alps/mediatek/coustom/common/kernel/
alps/mediatek/coustom/$porject_name$/kernel
...
ps:
由于./mkbootimag是很长的过程,如果您没有修改到ramdisk相关的
code,可以参考以下FAQ加快编译.
只修改kernel的时候,快速编译方法:
online.mediatek.inc/Pages/FAQ.aspx?
List=SW&
FAQID=FAQ05444
./mkn(r)k
/module_path
当修改kernelmodule相关代码时,
要使用此命令,具体文件参考如下:
alps/mediatek/platform/mt65xx/kernel/drivers/ccci/
alsp/mediatek/platform/mt65xx/gpu/
......
通常看对应文件夹的Makefile就知道是buildin到kernel,还是ko,
obj-m+=xxx,表示build成komodule,
obj-y+=xxx,
表示buildin到bootimag.
ps:
要特别注意,如果你new的时候是user版本,在使用此命令的时候一定要加上
-o=TARGET_BUILD_VARIANT=user,
否则会导致将之前new的结果全部删除,
./mknpl
当修改preloader相关代码时,要使用此命令,具体如下:
alps/mediatek/platform/mt65xx/preloader/
alps/mediatek/source/preloader/
alps/mediatek/coustom/mt65xx/preloader/
alps/mediatek/coustom/common/preloader/
alps/mediatek/coustom/$porject_name$/kernle
./mkuboot
当修改uboot相关代码时,要使用此命令,具体如下:
alps/mediatek/platform/mt65xx/uboot/
alps/mediatek/source/uboot/
alps/bootable/bootloader/uboot/
alps/mediatek/coustom/mt65xx/uboot/
alps/mediatek/coustom/common/buoot/
alps/mediatek/coustom/$porject_name$/uboot/
......
./mksystemimage当修改system相关代码时使用此命令,
具体文件目录如下:
alps/frameworks/
alps/packages/
alps/vendor/
alps/hardware/
alps/dalvik/
alsp/external
...........
new完一次后,如果使用这个命令其实很耗时间,建议参考6的做法,
6:
./mkmm./module_path;
主要build一些modules,如lib库,
native可执行程序,jar库,jarapk.
相关文件参考如下:
alps/frameworks/base
#可以根据修改的某些文件,进入更细的目录去
build相关库.
alps/frameworks/native/libs/binder/
#native目录下有很多相关的lib库.
alps/frameworks/native/libs/binder/utils/
alps/external
#主要是一些native的二进制可执行文件.
build完后可以找到对应的目标文件直接push到手机,也可以使用
./mksnod直接快速打包新的system.img,
然后download.
可参考如下FAQ:
如何加速./mksnod打包:
FAQID=FAQ10299
7:
./mkrecoverimage
当修改recover相关代码时使用此命令,具体如下:
alps/bootable/recovery/
alps/mediatek/customer/$project_name$/recovery/
8:
./mkfactoryimage:
当修改factory相关代码时使用此命令,具体如下:
alps/mediatek/coustom/$project_name$/factory/
alps/mediatek/coustom/common/factory/
alps/mediatek/source/factory/
9:
./mksecroimage
当修改secro相关代码时使用此命令,具体如下:
alps/mediatek/source/secro/
alps/mediatek/coustom/$project_name$/secro/
.....
如果还想提高编译速度,请参考相关FAQ:
[FAQ10625]提升Android编译速度:
list=SW&
l0=2&
l1=3&
l2=43&
l3=6149
[FAQ10299]如何加速./mksnod打包
2013-12-05
MT6572MT6582MT6588MT6589MT6592MT6571MT6582/92+MT6290MT6595
GB3JB2JB3JB5JB9GB5JB7KK1
mm命令快速编译一个模块之后,一般用adbpush到手机看效果,如果环境不允许用adbpush或模块
不经常改,希望直接放到image里,则可以用./mksnod,这个命令仅仅将system目录打包成
system.img,然后方便直接下载,但是这个命令还是很慢(慢在搜索所有的Android.mk),有一种方法
可以加速该编译到1分钟以
./mksnod
修改alps/build/core/main.mk:
subdir_makefiles:
=\
$(shellbuild/tools/findleaves.py--prune=out--prune=.repo--prune=.git$(subdirs)Android.mk)
ifneq($(MAKECMDGOALS),snod)
以上避免了不必要的耗时操作,加速./mksnod编译
PS:
这边有另外一个FAQ可以快速提升Android编译速度,强烈建议配置上(大约可提升50%):
[FAQ10346]编译kernel后,如何快速打包image并快速执行
MT6592MT6589MT6588MT6582MT6577MT6575MT6572
GB2GB3ICSICS2JBJB2JB3JB5JB9
通常编译kernel后,我们都需要重新new一次bootimage,以便将更新包含到bootimage然后再
download后验证.而编译bootimage可能需要花费超过10min的时间,而实际我们只需要打包
image即可.
kernelbootimage编译kosystemimage
首先,需要remkekernel
./mkproject-namerk
(20s-2min)
此时对应的kernelbin档不是out/target/product/${project}/kernel,而是在
kernel/out/kernel_{project_name}.bin
您编译可能只是更新了某个ko文件,也可能影响整个kernel。
1).如果是在整个kernel当中
./mtk71029-kernel-bootimage.sh
(0.001s)
对应的脚本代码
/bin/bash
#mtk71029quicklypackbootimagev1
project=$(awk'
NR==1{print$3}'
makeMtk.ini)
${PWD}/mediatek/build/tools/images/mkbootimg--kernel${PWD}/kernel/out/kernel_${project}.bin--ramdisk${PWD}/out/target/product/${project}/ramdisk.img--board1384501662--output${PWD}/out/target/product/${project}/boot.img
2).如果是编译ko,就直接pushko到system/lib/modules.
注意如果是JB以后的版本,需要将其权限改成644,原因参考[FAQ:
FAQ05441]JB以后版本
adbpushko文件,build.prop,init.rc,init.xxx.rcueventd.rc等文件后,无法开机,
log提示skippinginsecurefile.
3).如果想把ko也加速打包到systemimage,可以参考[FAQ:
FAQ10299]如何加速./mksnod打包
[FAQ03201]如何在c/c++代码里引用自定义ProjectConfig.mk宏开关
2014-04-02
MT6589MT6572MT6582MT6588MT6592MT6571MT6582/92+MT6290MT6595
GB3JB2JB3JB5GB5JB7JB9KK1.MP1KK1.MP