内容说明发布android build system for customer_第1页
内容说明发布android build system for customer_第2页
内容说明发布android build system for customer_第3页
内容说明发布android build system for customer_第4页
内容说明发布android build system for customer_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android2.3BuildEnvironmentonUbuntu10.0464-bitInstallationbit_Installation_SOP_40.docxCopyright©MediaTekInc.Allrig BuildSystemMainentryprogram“makeMtk”(aunifyinterfacetostartIntegrateMTKbuildWrapKernel&Androidnativebuildcommand

preloaderbuildscriptubootbuildscriptMainEnv.CheckWrapcommandInhousesettingsMTK

kernelbuildbuildCopyright©MediaTekInc.Allrig

SourceTreeStructure AndroidNativeDevelopmentKit andlibrariswhichusedtoC,C++

Cruntime:libc,libm,libdl,dynamicprojectsformtheprojectsformthe

Dalvikvirtual ionlibaies xkernelsourceBinariestosupportLinuxandMacOSbuilds,x86andarmstructureofsomeofthresocesunderthepiledl eoriitldllk/lore”,

pakages

ExternalN opensourceprojectsthatAndroidreliesStandardAndroidapplicationsandServices;theyusuallyrunontheDVM.Bildresult/output(objects,binaries&intermediatefiles) Wrapperofthemainbuildscript

customizationcodesCompatibilitytestsuite Emulator,ddms,eclipse,ninepatch,…AndroidSDKCopyright©MediaTekInc.All

MTKPerlprogram,wrapperofbuilding/mbolic eCourse(先看以 对后面的slide理解很有帮请看MTKBuildCommand 和Lookintomtkalpsbuild视文档(请到DCC上搜索ALPS(Android4.0)BuildSystemALPS(Android4.0)MakeBuildEnvironmentand bit_Installation_SOP_4.0.docx(4.1forJB)ment_4.0.doc(4.1forht©rkc.lFAQ(

ste3HowtoStartaSupportstraightforwardfunctioncommandtowrapbuildcommandsmakeMtk[OPTION][PROJECT]ACTIONabbrevmk,showhelpifwithoutanyargume-t,-tee:Printloginformationonthestand--h,-help:PrintusagemessageandPROJECT:mt6575_evb,banyan_addon.ACTION:new,clean,remake,listproject,codegenmm,emigen.abbrev:n,c,r,MODULES:preloader,uboot,krnel,ctabbrev:pl,ub,ctHelpcmd:./mk

./mklistp查看目前所有的 第一次编译project需要写出工程名称,如果已经编译过就可以省略:./mknew./mk$projectr(n)./mk./mk./mk./mk-o=TARGET_BUILD_VARIANT=userUserKernel&Androidnativebuildcommandisnot/ik.llriroid p4/i/teadBuildingDividedintoseveral./mk<project> (BuildSystemEnvironmentcustgen,check-dep,drvgen,codegen,nandgen,emigen,ptgen,gen-relkey,check-modem,buildandconfigmodemforALPS,sign-AndroidAndroidKernel相关的:booimage,有文件系统的:systemimage,cacheimage,userdataimage,banyanCopyright©MediaTekInc.Allrig custgenmtk.config.generate-rules做了什么创建生成

mediatek/config/$project[$flavor]/ProjectConfig.mk(ifisaflavorproject)$project/ProjectConfig.mk tform/ProjectConfig.mkcommon/ProjectConfig没有则用common

如果project里的mk有某个宏,就用project里的,否则就 如果project里的mk有某个宏,就用project里的,否则就 的 custgenmtk.config.generate-rules做了什么生成按文件顺 ,然后再按文件夹(common, tfo先 文件夹下 mon文件再读 下 mon文件 再读common文件夹下的USER文件,再读 tfom下的USER文件 tform/aut mon/autoconfig/kconigAEE(如果定义mediatek/config/$project/autoconfig/kcon 文件夹(common,$ 删除mediatek/config/out/$project/▪Copyright©MediaTekInc.Allrig ▪将以下文件按顺 到mediatek/config/out/$project/ 过就不会custgen-mtk.custom.generate-rules 保留.svn文件夹和*.o*.a*.s*.ko*mod.c mediatek/custom/out/$project/( mediatek/confmediatek/conf Copyright©MediaTekInc.Allrig CustomFolderGenerationCopyright©MediaTekInc.Allrig FeatureOptionInfo–Copyright©MediaTekInc.Allrig drvgen转换kernel还需要./mkbootimageCopyright©MediaTekInc.Allrig codegen生成生成#include“tst_assert_headr_file.h”#include_item.h”#include生成Include所有在mon/cgen/cfgfileinc生成mediatek/custmon/cgen/inc/cfg_module_default.h:Include所有在mon/cgen/cfgdefault搜索到的头文件生成 METANvramUsecodegentocreatedatabase./makeMtk$PROJECTInthefolderofthispathPressthebuttonofreadfrom Selectthefile SelectthefileitemandpressthebuttonofreadfromNvRAMNONO如果更换NANDMCP不止NO需要newpreloader,uboot和kernel查找pagesize匹配的所有nandflash(不允许ID重复!否根据BOARD_ID和part根据BOARD_ID和partnumber匹配xls相同partnumber的MCP不能有不同的nand/emmcid最多可以兼容10颗(受限于MT7575/77不会生成emigen生成custom_emi.c/h和

如果更换NANDMCP不止修改 custom_MemryDevice.h这个文件的内容Copyright©MediaTekInc.Allrig Storesthehardwarerelatedinformation,schSEC_ROandforthesecuritytformusbring-upentireLinuxkernel

Usedfortherecveryprocedure(powerUsedtostorethekernelpanicdebugAndroidsystemForAndroidinternalStoreAndroidinternalcachedataorwebcachedataUserUsedforAndroidsystemtostoreuserdatasuchasusercontacts,settings,installedapplications…etcRecoverykernelimgeandit‟roofileHandlesalltheystemrecoveryadfirmwareupdatefunctionalitisptgenmediatek/build/tools/ptgen/partition_table.xls ptgen

NandMCP的话startaddress需要blockksizeksizeEMMC无此限

h hptgen决定用那个mediatek/build/too/ mediatesource/misc/$ atter.txt(_LCA.txt/_emmc.txt)

调用

ProjectConfgmk MTKPRODUCT_LOCALES、DEFAULT_LATIN_IME_LANGUAGES、DEFAULT_INPUT_METHOD、MTK_ME_XXX_UPPORT.liets

IM1//reOpion.java feature featureoption,则需要使用AUTO_ADD_GLOBAL_DEFINE_BY_NAME/AUTOADD_GLOBAL_DEFINE_BY_VALUE/AUTO_ADD_GLOBAL_DEFINE_BY_NAME_VALUE(preloader/uboot/kernel/android系统的c/c++都可以使用, XXX_TP=CTP#RTPor AUTO_ADD_GLOBAL_DEFINE_BY_NAMEXXX_NUM=1#1or

的 生成后将工具

Copyright©MediaTekInc.All在Android系统中,所有安装到系统的应用程序都必有一个数字 如果一个permission的protectionLevel为signature,那么就只有那些跟该 对前一步生成的Manifest,使用SHA1-RSA算法(用私钥通过RSA算法对信息进行加密。在安装时只能使用公钥才能它,之后,将它与未加密的信息进行对比,如果相符,则表明内容没有被异Copyright©MediaTekInc.Allrig 变量:MTK_MODEM_SUPPORT, =3&&==DSP_BL_DEBUG== DEBUGnouse▪Copyright©MediaTekInc.Allrig ▪DSP_BL_MODE==DSP_ROM_MODE==buildandconfigmodemforALPS(不包含MolyBuildmodemimage(MAUIbuildm[Project][modem]

E.g:11AMDW1137SP_MT6573V2_HSPA_MMI>mMT6573V2_MODEMHSPACopymodemfiles(total8)fromMAUItoFromMAUIToALPS er_filteDbgInfmConfiguremodemin

用于 Copyright©MediaTekInc.Allrig buildandconfigmodemforALPS(只针对MolyBuildmodemimage(Molybuild[Modemsource]>./make.sh[Projectmakefilename]

Copymodemfiles(total6)fromMAUItoConfiguremodemin最终包含在Copyright©MediaTekInc.Allrig 调用sign_modem.pl(之前会先做备份用 下SML_ENCODE_KEY.ini/SML_AUTH_KEY.iniSML_AUTH_CFGini( 调用mediatek/build/tools/SecRo/ecro_post.pl调用mediatek/build/tools/SecRo/SECRO_POSTmediatk/ustom/$proje 下security/sml_auth/SML_ENCODE_KEY.inisecro/AND_SECURE_ROSECRE_ROAC_REGIONmedatek/custom/$proj 下image_auth/IMG_AUTH_KEY.ini IMG_AUTH_KEYiniSFL_CFG.ini

下 Copyright©MediaTekInc.Allrig BuildSystemEnvironmentcustgen,check-dep,drvgen,codegen,nandgen,emigen,ptgen,gen-relkey,check-modem,buildandconfigmodemforALPS,sign-AndroidAndroidKernel相关的:booimage,有文件系统的:systemimage,cacheimage,userdataimage,banyanCopyright©MediaTekInc.Allrig

JB/JB2的Codebase中将不再有mediatek/source文件夹原先source文件夹下的内容直接提升到mediatek下面 ,已分配Copyright©MediaTekInc.Allrig

Copy*.bin=>Make-f

最终目标all=cleanshow_titleimg_auth_infoplcfginfosml_encode_infosml_auth_infobuild_infoproject_info tform/preloader/srcmediatek/custom/out/$project/preloadermediatek/source/preloader/bin/preloader_$projectelfSystem.map mediatek/custom/out/$projectcommon/mediatek/custom/out/$project/kernel/dc(cust_kpd.h, 生成Checkimg

或文件需要./mkr(n) Copyright©MediaTekInc.Allrig BuildSystemEnvironmentcustgen,check-dep,drvgen,codegen,nandgen,emigen,ptgen,gen-relkey,check-modem,buildandconfigmodemforALPS,sign-AndroidAndroidKernel相关的:booimage,有文件系统的:systemimage,cacheimage,userdataimage,banyanCopyright©MediaTekInc.Allrig

boo/uboot/执行执行执行执行执行chkImgSizeifMTK_CHKIMGSIZE_SUPPORT目标在mkconfig$projectarm$(MTK_CPU)$projetNULL

TARGET,ARCH,CPU,BOARD,VENDER=NULL(wilcreat/board/<VENDOR>/<BOARD>folder),SOC(willcreate/include/asm-建立软连接:arch/arm/include/asm=>nclude/asm,asm/proc-armv=>

生成config.mk和

生成mkimageu-boot.binUBOOT>Addheadertouboot_$pjectCopy*.bin=>out/Dow

最终目标allu-boot.srecu-boot.binSystem tforma,lib/,arch/arm/cpu/arm_cortexa9/,arch/arm/lib/,fs/,net/,disk/,drivers/,common/,api/,post/

ceatcompile- 或文件需要./mkr(n) (cust_kpd.hcust_gpio_usage.h)Copyright©MediaTekInc.Allrig BuildSystemEnvironmentcustgen,check-dep,drvgen,codegen,nandgen,emigen,ptgen,gen-relkey,check-modem,buildandconfigmodemforALPS,sign-AndroidAndroidKernel相关的:booimage,有文件系统的:systemimage,cacheimage,userdataimage,banyanCopyright©MediaTekInc.Allrig ./mk[project]r/nBuildBuildBuildBuildNoteNote:生成的lk.bin位于bootable/bootloader/lk/build-$(PROJECT)该makefile会被bootable/bootloader/lk/makefileinclude这些makefile在中 文件最终被Note:生成的obj文件位于bootable/bootloader/lk/build-$(PROJECT) 或文件需要./mkr(n) $(BUILDDIR)/%.raw:调用 转换为rawdataBuildSystemEnvironmentcustgen,check-dep,drvgen,codegen,nandgen,emigen,ptgen,gen-relkey,check-modem,buildandconfigmodemforALPS,sign-AndroidAndroidKernel相关的:booimage,有文件系统的:systemimage,cacheimage,userdataimage,banyanCopyright©MediaTekInc.Allrig

执行执行

检查scatterfile空间是否容纳的下cdTARGET_PRODUCT=<project>make config(如果是ICS2版本的[77/17版本],则是TARGET_PRODUCT=<project>makeO=out 名为设置好后保存后会在kernel下(ics2在kernel/out)生成名为将 到 下并重,stik/ol

mediatek/config/$project/autoo KBUILD_OUTPUT_SUPPORT=yesmakeO=out 配置完后,newkernel,如果有错误可以用/mkmrproperkernel清除kernel,然后在newkernlCopyright©MediaTekInc.Allrig

makemediatek-kconfig文件在编译kernel时 到kernel/mediatek-configs和make备份.config为.config.old,然后通过Kconfig收集所有CONFIG_xxx.config得,然后重新生成新的.config(此时的.config已经和原先的.config有差异应的kconfig正确的做法是编写对应的kconfig文件,并加入其他 正确的方法是 oei/e_c/mediatek/custom/out/$project/hal/

Kernel 成 成c

Ke

里的文件默认包含进obj-yKernelmodule也会同时生成,但是并不会安装到 :通过 :此Android.mk不是正常的Android.mk,不能用 kmmkernel命令编译,只能remakeornew使用./mkrkkernel_module_path>kernel_module_path是一个kernelmodule(包含Makefile和Makefile有定义obj-编译出来的*.ko可以用lsmod,insmod,rmmod,modinfo修改以 mediatek/custom/$pomediatek/custom/$mon/mont/hal/mediatek/custom/$project/hal/

Copyright©MediaTekInc.Allrig BuildSystemEnvironmentcustgen,check-dep,drvgen,codegen,nandgen,emigen,ptgen,gen-relkey,check-modem,buildandconfigmodemforALPS,sign-AndroidAndroidKernel相关的:booimage,有文件系统的:systemimage,cacheimage,userdataimage,banyanCopyright©MediaTekInc.Allrig CCDifferenceofeng,user&BuildThingstoThisisthedefaultflavor.AinmakeisthesameasmakeInstallsnon-APKmodulesthathavenotagsInstallsAPKsaccordingtotheproductdefinitionfiles,inadditiontotaggedAPKs.ro.kerneladbisenabledbyThisistheflavorintendedtobethefinalreleaseInstallsnon-APKmodulesthathavenotagsInstallsAPKsaccordingtotheproductdefinitionfiles;tagsareignoredforAPKmodules.roadbisdisabledbyadbisenabledbyAnAndroid.mkdefineshowtobuildaparticularAndroid.mktypicallyincludesallofthefollowingName:Giveyourbuildaname(LOCAL_MODULE:=LocalVariables:ClearlocalvariableswithCLEAR_VARS(includeFiles:Determinewhichfilesyourapplicatondependsupon(LOCAL_SRC_FILES:=Tags:Definetags,asnecessary(LOCAL_MODULE_TAGS:=engLibraries:Definewhetheryourapplicationlinkswithother(LOCAL_SHARED_LIBRARIES:= tefile:Includea tefiletodefineunderliningmaketoolsforaparticular(include如何包含只要 找到Androidmk,就不会再往 Android.mk里调用include$(call-makefiles-under,LOCALVariablesBuildmoduleby“make

ugListsourcefilesthatwillbeusedinbuildingyourDefaultwillbeValuesforthesevarablescanbefoundinCopyright©MediaTekInc.Allrig LOCALVariablesLOCALVariablesmodulewillbebuiltandinstalledwhenitisValidvalues:user/eng/forapk:beinstalledwhenaddmodulenametoPRODUCT_PACKAGES(eg:inTAGS:=optionalandBuild:LOCAL_CHECKED_MODULEw/ofornon_apk:beinstlledwhenothermoduleuseit(eg:inRTAGS:=optionalandBuild:LOCAL_CHECKED_MODULEw/o–ForJB&–please–ForJB&–pleaseJB2Version,userTagisnotallowedtouseeoptionalTaguseruserdebugengtestsonlyonlybuildandbuildand buildandbuildandbuildandbuildandonlyonlyonlyonlyGES onlyonlyonlybuildandonlybuildandbuildandbuildandDULESatBuildhoststaticlibInclude 库:使用编译器:GCC4.4.3ICS)或GCC4.1.2GB)需要安装在host临时文件xx.o最终目标其他模 方法(在Android.mk定义了直 :临 到obj/NOTIC定义了各种基础目标(.c/.cpp/.s/.ly)并汇总成alCopyright©MediaTekInc.Allrig Buildhoststaticlib

到执行./mkmm<module_path>[ONE_SHOT_MAKEFILE=<module_path/Android.mkmake–C$Tall_modules会include安装时看到的MM

Buildtargetstatic

默认编译成thmbInclude 库:xx.o

:–临 到 LOCAL_COPY_HEADERS:LOCAL_COPY_HEDERS_TO

打包成staticlib时看到的

如需要可以指定BuildtargetsharedlibraryInclude 库:使用编译器:bo/TARGET_linux-am.mk临时文件:xx.o最终目标:临 含安 方法(在Android.mk定义了直 : 将 将 将 将 将 将 生成动 到symbols/system/lib下(用于果有果有去symbols放到obj/lib

kc.

到安 到Buildtargetsharedlibrary 标 将

为生成动

Buildtarget

如需要可以指定LOCALInclude

临时文件xx.o最终目标:临 含安 将可执行程 如 如

BuildtargetstaticjavaInclude用于生成java库:*.jar,用于java使用编译器:JDK1.6(ICS)或JDK1.5(GB)需要安装在hos临时文件:最终目标:其他模 方法(在Android.mk定义了直 :临 /javalib.jar将.java等编译成.class,在打包生成clases-full-debug.jar放在临 生成 生成 再打包生成 到$(PRODUCT_OUT)/obj/J/NTICE_F如果有/NTICE_F

生成javalib时看到的31 1 125BuildtargetjavaInclude用于生成dex库:*.jar,用于java使用编译器:JDK1.6(ICS)或JDK1.5(GB)需要安装在host临时文件:.最终目标:安 其他模 方法(在Android.mk定义了LOCAL直 /ji.jas!!! 定义LOCAL_JARJAR_RULES则调用jarjar.jar生成classes-jarjar.jar否

为为将javalib.jar(odex) 到objclasse9转换9

Dex

关闭userbuild的dexopt的方法是:修改build/core/main.mk里的WITH_DEXPREOPT为engbuild:因为没有抽取dex,所以第一次抽取dex时,参考的是init.rc的BOOTCLASSPATH,userbuild:通过编译系统(build/core/dex_preopt.mk)抽取了dex,所以在启动时一定要和Copyright©MediaTekInc.Allrig BuildpackageInclude用于生成apk:使用编译器:JDK1.6(ICS)或JDK1.5(GB)需要安装在host临时文件:./classes/*和./src/*最终目标:生成(no)proguard.classes.dex和之前生成javalib如果存在assets或 则在临 下生成,同时将 到下(除了p优化p

签_P名的custom时使用.lzipalign,备份未zipalign的apk为▪r ▪r$(PR•(

L$LiLtr(dixtes/package.apk,

xNOTICE Copyright©MediaTekInc.Allrig Buildpackage

则 下并替换下的资源

安 ,一般为 c.Allrig Jartodex引起java 解决方法:加大-JXmx1536M=>2048M1024的倍数4Copyright©MediaTekInc.Allrig 4其他java其他java此问题是运行signapkjar导致内存不足,需要修改下参eeBuildhost/target

到对 静 库 动 库 可支持LOCAL_STRIP_MODULE(host不支持可执行程序 可支持LOCAL_STRIP_MODULE(host不支持 到obj/NOTICE_FILE/s使用 可支持签名, From haslimitedddingnewfilestALL_PREBUILTmodulesarehrdtocontrolndauditandwedon‟twanttoaddanynewsuchmoduleintheUsePRODUCT_COPY_FLESHowtoaddto仅

Copyright©MediaTekInc.Allrig Builddroiddoc/apiFrameworkapicheck借助frameworkapi通过javadoc生成对比public_api.txt和$(最大数字) 对比public_api.txt和Mediatekframeworkapi对比mediatek_public_api.txt和$(最大数字./mkmm 如果Android.mk包含了诸如PRODUCT_COPY_FILESmedatek/source/factory),则不能 用./mkmmframworks/basemediatek/source/frameworks/med/audio/ 下存在pthmap.mk,那么audio mpathmap.mk/mkmmmediatek/source/frameworks/banyan/main来编译, 、teklrig

is75

将以下输出到将以下输出到Copyright©MediaTekInc.Allrig

注意$(TARGET_PRODUCT)与ducname必须匹配否则CTS测试

必须和BUILD_FINGERPRINT$(TARGET_PRODUCT) Copyright©MediaTekInc.Allrig ./mkbootimage--ramdisk--board注意CUSTOM_BUILD_VERNO要超过16参数

可以用gunzip-c mdisk-file)|pio–i解开(注意 ./mkbootimage慢在android编译系统中要包含所有Android.mk Copyright©MediaTekInc.Allrig ./mkbootimage依赖 Copyright©MediaTekInc.Allrig ./mk打包生成 $(PRODUCT_OUT)/obj/EXECUTABLES/gzipstatic_intermediates/gzip_static到 ( 到Dumpkey.ja用build/target/pr system/re/libmincrypt/ols打包生成输入-f-c2048-s64$(PRODUCTOUT)/system ()(-s$(PRODUCT_OUT)/system$(PRODUCT_OUT)/system.imgext4system 塞太多东西导致超出这个size的话,make_ext2fs会抛出错误,需要重新调整partitiontable(其他分区,如果有文件系为什么userbuildystem.img会比engbuildUserbuild默认开启Copyright©MediaTekInc.Allrig ./mk打包生成最后 到$(PRODUCT_OUT)/syst./mk./mk打包生成分区,scatterfile会有cache分区给android在nandMCP里,编译系统不会生成Yaffs2是个简单的文件系统空的分区格式化为0xFFflashtools会完成这个在EMMCMCP,会生成./mk )生成nativetest/d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论