android 高通与MTK编译命令

分享一下,如何编译自己修改的源码模块

1).build/envsetup.sh       //进入源码目录,执行源码build目录下的envsetup.sh脚本,使mmm命令有效(此命令要在源码根目录下运行,用来对单个源码模块进行编译)

2)mmm packages/apps/Launcher2/  //编译单个源码模块(目录下要有Android.mk才好编,一般目录

make -j8 2>&1 | tee -a build-log.txt  编译并打印log

首先需要准备好刷机包,可以是自己编译的,也可以是从别处拷贝的,但一定要确保刷机包适用于你的 Android 设备。然后解压刷机包,解压后我们可以得到 boot.img、recovery.img、system.img、bootloader 文件,正是这些文件构成了 Android 设备的系统。

    让设备进入 fastboot 环境。有 2 种方法:

        执行命令 adb  reboot  fastboot

    或者

        同时按住 增加音量 和 电源 键开机。

【命令执行流程】

    在设备进入到 fastboot 环境后,根据需求执行下面的命令进行刷机:

  fastboot  flashing  unlock    # 设备解锁,开始刷机

  fastboot  flash  boot  boot.img    # 刷入 boot 分区。如果修改了 kernel 代码,则应该刷入此分区以生效

  fastboot  flash  recovery  recovery.img    # 刷入 recovery 分区

  fastboot  flash  country  country.img    # 刷入 country 分区。这个分区是开发组自己划分的,别的 Android 设备上不一定有

  fastboot  flash  system  system.img    # 刷入 system 分区。如果修改的代码会影响 out/system/ 路径下生成的文件,则应该刷入此分区以生效 

  fastboot  flash  bootloader  bootloader    # 刷入 bootloader

  fastboot  erase  frp    # 擦除 frp 分区,frp 即 Factory Reset Protection,用于防止用户信息在手机丢失后外泄

  fastboot  format  data    # 格式化 data 分区

  fastboot  flashing lock    # 设备上锁,刷机完毕

  fastboot  continue    # 自动重启设备
 

1.make -jXX

  XX表示数字,这个命令将编译Android系统并生成镜像,XX表示可以使用到的CPU核数,这在配置好的电脑上特别有用,公司的16核ubuntu服务器执行make -j16只要不到20分钟,而双核PC上需要4个小时!

2.make snod
这条命令将重新生成镜像,消耗的时间很少,类似WinCE的makeimg过程,如果你修改了一些数据文件(如音乐、视频)等文件时比较有用。

3.make cts
这条命令将编译CTS套机,编译出的结果放在out目录对应版的data/app目录下面。CTS测试时有用

4.make installclean
  这条命令清除out目录下对应板文件夹中的内容,也就是相当于make clean,通常如果改变了一些数据文件(如去掉)、最好执行以下make installclean,否则残留在out目录下的还会被打包进去。

5.mm/mm -B
  开发调试中最喜欢这条命令了,在修改了的目录下执行这条命令,就能智能地进行编译,输出的文件在通过adb推送到目标机,可以很方便地调试。


6.make sdk
  这条命令可以生成可发布的SDK,目前还没试过,据说需要JDK1.5


7.make Setting
  可以单独编译setting这个模块,目前还没试,猜想是不是可以单独编译Email、Music这些模块


8.单独编译 LK

make aboot –j8

生成在 LINUX/android/out/target/product/msm8909/emmc_appsboot.mbn

9 编译bootimg

make bootimage -j8

生成在 LINUX/android/out/target/product/msm8909/boot.img

  用这条命令可以生成boot.img,这个镜像文件中包含Linux Kernel,Ram disk,生成的boot.img只能通过fastboot进行烧写,这在只修改了Linux内核的时候有用

10 编译system.img

make systemimage -jn

生成在 LINUX/android/out/target/product/msm8909/system.img

 

11 编译userdata

make userdataimage –jn

生成在 LINUX/android/out/target/product/msm8909/userdata.img

 

12.编译recovery

make recoveryimage –jn

 

命令格式:./maketek [option] [project] [action] [modules]

Option:

   -t ,-tee :输出log信息到当前终端

   -o , -opt=…… : 编译附加条件,一般使用-opt=TARGET_BUILD_VARIANT=user来编译用户板软件

   -h ,help : 打印帮助信息并退出

Project : 工程名,例如:basicom72_wet_jb3 

Action : 

n , new : 重新编译整个工程

c , clean:清理编译时copy的文件及log信息

r , remake:整个工程检查修改部分并编译

listp , listproject: 查看目前所有的project

codegen : 生成database

nandgen : 生成nand_device_list.h (仅限使用nand flash 时使用)

check-env : 检查编译环境是否OK

check-dep :检查功能依赖性

check-modem :检查modem

update-modem :更新最新的modem.img 到system.img

 

mm : 用来编译APK模块,如:./mk mm package/apps/deskclok

 

emigen : 生成flash相关文件(custom_emi.c/.h)

 

modules:

 

    编译模块:preloader , uboot ,kernel , android

 

      简写:pl , ub , k , dr  

其他常用命令:

./mk $project new  首次编译需要写出工程名称,后续可以省略

./mk $project r(n) pl(/ub/k/dr)  remake or new 单个模块,如:./mk r ub 编译kernel时,需同时做打包到bootimage 操作,原因是kernel部分是最终打包到bootimage 里面,然后烧录进flash的

./mk bootimage/snod/systemimage   打包模块

./mk otapackage     编译制作SD卡系统升级包,生成的zip包在out/target/product/project/目录下

./mk banyan_addon    编译MTK sdk 包

模块修改及对应的编译命令:

修改DWS 后,首先gencode 或者通过命令./mk drvgen 使其生成相应的.h/.c文件,这个文件会被preloader uboot  kernel 调用,因此需要new preloader uboot kernel 而kernel 还需进一步./mkbootimage 打包

Preloader 快速编译:

  修改以下目录或文件需要 ./mk r(n) pl

 Mediatek/platform/$platform/preloader/…

Mediatek/custom/$platform/preloader/…

 

Mediatek/custom/common/preloader/…

 

Mediatek/custom/$project/preloader/…

 

Mediatek/custom/$project/common/下的头文件

 

Mediatek/custom/$project/kernel/dct/下的头文件(cust_kpd.h,cust_gpio_usage.h)

 

Uboot 快速编译:

 

修改以下文件或目录需要./mk r(n) ub 

 

    Bootable/bootloader/uboot/…

 

    Mediatek/platform/$platform/uboot/…

 

Mediatek/custom/$platform/ uboot /…

 

Mediatek/custom/common/ uboot /…

 

Mediatek/custom/$project/ uboot /…

 

Mediatek/custom/$project/common/下的头文件

 

Mediatek/custom/$project/kernel/dct/下的头文件(cust_kpd.h,cust_gpio_usage.h)

 

Mediatek/custom/common/kernel/lcm/inc/lcm_drv.h

 

Mediatek/custom/common/kernel/leds/inc/cust_leds.h

 

Kernel 快速编译:

 

   修改以下文件或者目录需要./mk r(n) k 然后执行./mk bootimage打包成boot.img

 

   Kernel/…

 Mediatek/platform/$platform/kernel/…

 

 Mediatek/source/kernel/…

 

 Mediatek/custom/$platform/kernel/,.,,

 

 

   Mediatek/custom/common/kernel/…

 

 

   Mediatek/custom/$project/kernel/…

 

 

   Mediatek/custom/$project/common/下的头文件

 

 

   Mediatek/custom/common/hal/下的头文件

   Mediatek/custom/$project/hal/下的头文件

./mk bootimage

   打包生成$PRODUCT_OUT/boot.img

   打包生成$PRODUCT_OUT/ramdisk.img

./mk recoveryimage

   根据依赖会先生成boot.img

   打包生成$PRODUCT_OUT/recovery.img

./mk snod/systemimage-nodeps

   打包生成$PRODUCT_OUT/system.img 但不检查任何依赖性

./mk systemimage

   打包生成$PRODUCT_OUT/system.img 检查任何依赖性

 ./mk cacheimage

   打包生成$PRODUCT_OUT/cache.img

 ./mk userdataimage

    打包生成$PRODUCT_OUT/userdata.img

 ./mk secroimage

    打包生成$PRODUCT_OUT/secro.img

 


 

你可能感兴趣的:(android,编译命令)