MTK android平台常用的编译调试命令


Creative Commons LicenseCreative Commons LicenseCreative Commons License

1 配置编译环境

1) 自用环境配置脚本myenv.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# {board} {project} 变量根据不同项目定义
export USE_CCACHE=1
export CCACHE_DIR=/opt/.ccache_{board}_{project}
#export _JAVA_OPTIONS=-Xmx3072m

export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
#./prebuilts/sdk/tools/jack-admin kill-server
#./prebuilts/sdk/tools/jack-admin start-server

#export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
#export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
#export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
#export PATH=$JAVA_HOME/bin:$PATH

prebuilts/misc/linux-x86/ccache/ccache -M 50G
. build/envsetup.sh
lunch 22

2) 导出环境变量

1
# . myenv.sh

2 内核配置修改(具体平台可能有差异)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
kernel-3.18/arch/arm64/configs/{board}_debug_defconfig   // eng模式
kernel-3.18/arch/arm64/configs/{board}_defconfig // user模式
cd git/kernel-3.18
cp arch/arm64/configs/{board}_debug_defconfig .config
make ARCH=arm64 menuconfig
make ARCH=arm64 savedefconfig
cp defconfig arch/arm64/configs/{board}_debug_defconfig
# 执行后会有一些中间文件产生,可手动删除。

# 另外一种推荐方法:
menuconfig命令:
source build/envsetup.sh && lunch (一个shell执行一次即可)
mmm kernel-3.18:kernel-menuconfig (生成的.cconfig在out\target\product\[project]\obj\KERNEL_OBJ)
mmm kernel-3.18: kernel-savedefconfig (用out\target\product\[project]\obj\KERNEL_OBJ\.config 替换 kernel-3.18/arch/$(TARGET_ARCH)/configs/[project]_defconfig)

3 编译指定模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
make pl -j8             // 编译preloader
make lk -j8 // 编译bootloader
make bootimage -j8 // 编译kernel
make systemimage -j8 // 编译system
make recoveryimage -j8 // 编译recovery

#其他编译moudles,有nodeps表示不依赖检查,编译较快

make ramdisk-nodeps // 打包ramdisk
make bootimage-nodeps //

平台之间命令有差异,可以自己查看android/build/core/main.mk或其他makefile里的规则
dont_bother_goals := clean clobber dataclean installclean \
help out \
snod systemimage-nodeps \
stnod systemtarball-nodeps \
userdataimage-nodeps userdatatarball-nodeps \
cacheimage-nodeps \
vendorimage-nodeps \
ramdisk-nodeps \
bootimage-nodeps \
recoveryimage-nodeps \
product-graph dump-products

# mmm的编译方式
# 编译命令:(-B、-j是可选项,-B表示强制编译,-j表示开的线程数,进行快速编译)
mmm ../kernel-3.18:bootimage // mmm方式编译内核bootimage
mmm -B kernel-3.18:kernel -j8 // mmm方式编译内核
mmm -B vendor/mediatek/proprietary/bootable/bootloader/preloader:pl -j8
mmm -B vendor/mediatek/proprietary/bootable/bootloader/lk:lk -j8

# clean命令:
mmm vendor/mediatek/proprietary/bootable/bootloader/preloader:clean-preloder
mmm vendor/mediatek/proprietary/bootable/bootloader/lk:clean-lk
mmm kernel-3.18:clean-kernel

4 git仓库kernel单独编译方式:

1
2
1. 修改android/device/mediatek/common/device.mk文件,注释掉
#PRODUCT_COPY_FILES += $(LOCAL_KERNEL):kernel

5 内核烧录

1
2
3
4
5
6
7
8
注意adb的环境变量,有时候使用android env下的adb不能成功,用ubuntu自带的adb又是可以的
可能是ubutnu环境有问题
/ # adb path/to/boot.img /dev/block/platform/mtk-msdc.0/11230000.MSDC0/by-name/boot
或者拷贝到/data分区使用dd

/ # ls /dev/block/platform/mtk-msdc.0/11230000.MSDC0/by-name/boot -l
/ # /dev/block/platform/mtk-msdc.0/11230000.MSDC0/by-name/boot -> /dev/block/mmcblk0p10
/ # adb path/to/boot.img /dev/block/mmcblk0p10
-------------本文结束感谢您的阅读-------------
如果文章对您有帮助,也可以打赏支持喔!