Android系统编译日常记录

来源:互联网 发布:mac画图板 编辑:程序博客网 时间:2024/06/01 10:49

UbuntuMATE

记录一下,有时候不常编译的话,有些东西会忘记的。

编译的时候,把日志输出到 build.log里面

make -j40 2>&1 | tee build.log

输出当前编译环境

printconfig

我们source build/envsetup.sh的时候,其实就是把envsetup.sh里的脚本当成shell命令去执行。所以这一步完成以后,

我们才可以执行上面这些命令。比如说,launch、make、mm、mmm、这些命令都要执行source build/envsetup.sh以后才可以执行!

也就是说,我们如果遇到一些不记得的命令,可以先去看看这个文件envsetup.sh里的shell脚本。

如何能让系统编译默认打log和支持adb呢?

修改以下这些项:

build/core/main.mk

#Target is more debuggable and adbd is on by defaultADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1

0为false,1为true。也就是说1表示打开adb调试

#Disable debugging in plain user builds.enable_target_debugging := true

这个是表示是否调试,true表示打开调试,false表示关闭调试。

调试跟系统相关的app

有些时候,我们开发的应用跟系统的服务有关联,如果没有编译出sdk来,用android studio就没法编译了。所以我们需要放到系统里面进行编译。

按传统的做法:

1、最笨的方法是:全编译,再刷机。虽然是增量编译,但是也要花费不少的时间。编译完成以后还要刷机。

2、单独一个模块编译,再make snod,再进行刷机。

目前比较好的方法是怎么样的呢?

模块编译成apk,使用覆盖的形式,省去了make snod的时间(大概四分钟左右),省去刷机和第一次启动的时间(大概5分钟左右)

这个编译命令是:

mm WITH_DEXPREOPT=false -B 

进入到需要编译的目录模块,输入这个命令,就可以编译出对应的apk了,而不是apk+odex。

有了apk之后,再去删除系统的,重启以后直接安装即可。

把应用编译成apk

在系统编译里头,默认会把应用编译成apk和odex,其中apk只有java编译出来的类,odex有资源文件
如果要单独编译成一个apk的话,可以在mk文件里添加:
WITH_DEXPREOPT := false

打开MTKlog

adb shell am start -n com.mediatek.mtklogger/com.mediatek.mtklogger.MainActivity

 

 

 

日常更新…..

欢迎关注微信公众号

原创粉丝点击