AOSP之修改系统App

如何编译APK

在源码环境下,使用mm命令编译module,APK会输出到out/target/product/product_name目录下。java

mm -B:强制从新编译,至关于clean后再编译。android

Dalvik与ART的区别

Dalvik缓存

JIT(Just-in-time)实时编译,运行的时候将字节码翻译成机器码,所运行的目标(dex)与硬件平台无关,APP运行效率低。
bash

ARTapp

AOT(Ahead-Of-Time,预先编译),运行前将字节码翻译成机器码,所运行的目标文件(oat)与硬件平台相关。APP运行效率高,可是会占用空间,APK安装所需时间增长。
工具

odex是干什么的优化

dalvik时代:apk运行的时候,会把Apk中的classes.dex解压出来并经过dexopt优化为.odex文件。缓存在/data/dalvick-cache目录下,提升后续执行的效率。ui

ART时代:APK安装的时候,会把APK中的classes.dex解压后,经过dex2oat工具转换为.odex文件(ELF格式),存储在apk所在的目录的oat目录下。this

编译APK的过程

一、进入AOSP系统App目录,下面以Calculator为例spa

cd android6.0/packages/apps/Calculator复制代码

二、在sublime中打开该项目

subl .复制代码

三、查找须要修改的文件,这里以Calculator.java为例

Ctrl+P复制代码

而后输入Calculator.java

四、查找须要修改的方法,这里以onCreate方法为例

Ctrl+P复制代码

而后在输入@onCreate

五、进行代码的修改而且保存该文件,在onCreate方法中加一个log

Log.wtf("hpp", "this is my first log");复制代码

六、进行命令执行下面命令编译该项目

mm复制代码

七、编译完成以后,经过Install:关键字定位编译输出的文件

咱们能够看到生成了一个Calculator.apk 和 一个Calculator.odex

进入这两个文件所在的目录

nautilus $(gettop)/out/target/product/generic/system/app/Calculator/Calculator.apk复制代码

咱们会发现Calculator.apk文件中只有资源文件没有代码,代码其实就是这个单独的Calculator.odex。

为何在源码环境下编译会单独获得odex文件

优势:

一、下降系统更新后启动的时间

为odex的Rom。首次开机的过程会执行odex操做,编译时作,开机的时候就不用作了。

二、减小在设备上进行odex操做所形成的空间浪费

编译时,dexopt/dex2oat,会直接将APK的资源与代码拆开,若是在设备上安装时dexopt/dex2oat,apk的大小不会减小,但又会多一个odex文件占据磁盘空间。

缺点:

一、增长开发时编译的时间

二、不能直接执行APK的install操做,须要将APK和odex都sync到设备上。

如何在开发阶段关闭dex2oat

  • 在当前的module的Android.mk里面关闭,在inclue $(BUILD_PACKAGE)以前加上下面代码
LOCAL_DEX_PREOPT = false复制代码
  • 在buid/core/main.mk中关闭全部module的dex优化
## eng ##

ifeq ($(TARGET_BUILD_VARIANT), eng)

tags_to_install := debug eng

# 关闭odex优化

WITH_DEXPREOPT := false复制代码

安装编译后的APK

adb install -r $(gettop)/out/target/product/generic/system/app/Calculator/Calculator.apk复制代码

查看修改是否生效

运行Calculator应用,过滤log

adb logcat -s 'hpp'复制代码


参考视频:

https://www.365yg.com/i6436850885292196353#mid=1565254704995330

https://www.365yg.com/i6436851843262841346/#mid=1565254704995330

https://www.365yg.com/i6436852898566504962/#mid=1565254704995330

https://www.365yg.com/i6436853799767245314/#mid=1565254704995330

相关文章
相关标签/搜索