zoukankan      html  css  js  c++  java
  • Android 源码编译相关知识

    如何去编译APK 

     在源码环境下,使用mm命令编译module. APK会输出到out/target/product/product_name 目录下.
      mm -B :  强制重新编译.相当于clean后再编译。

     Dalvik与ART的区别
      Dalvik:
        JIT (Just-in-time)实时编译,运行的时候将字节码翻译成机器码,所运行的目标文 件(dex)与硬件平台无关,APP运行效率较低.
      ART:
        AOT(Ahead-Of-Tlme-预先编译),运行前将字节码翻译成机器码,所运行的目标文 件(oat)与硬件平台相关.APP运行效率高,但会占用空间.APK安装所需时间增加.
     odex是干什么的
        dalvik时代:APK运行的时候,会把APK中的classes.dex解压出来并通过dexopt优化为 成.odex文件,缓存在/data/dalvick-cache目录下,提高后续执行的效率.
        ART时代:APK安装的时候,会把APK中的classes.dex解压后,通过dexioat工具转化 为.odex文件(ELF格式),存储在apk所在目录的oat目录下

     为么在编译环境下就产出了odex文件

      ROM:apk、jar、bin、so文件组成

      优点:

      1、 降低系统更新后启动的时间·

          未odex的Rom.首次开机的过程中会执行“odex操作。编译时做,廾机时候就不用做了·

      2,减少在设备上进行“odex”操作所造成的空间浪费·

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

      缺点

        1、 增加编译时间

        2、 不能在shell环境中直接执行install操作,需要将APK和odex都sync到设备上

    如何在编译的时候关闭dex2oat

          在当前的module中的Android.mk文件中配置

    LOCAL_DEX_PREOPT = false


          关闭所有的module的dex优化
     

    在build/core/main.mk文件中配置
    ## eng ##
    
    Ifeq($(TARGET_BUILD_VERIANT),eng)
    
    Tags_to_install :=debug eng
    
    #关闭odex优化
    
    WITH_DEXPREOPT := false
  • 相关阅读:
    Cors 跨域 共享
    关于上传视频到七牛的一些解决方案
    网站上传视频注意点
    Node.js 的环境配置
    动态加载js
    java web项目启动时自动加载自定义properties文件
    Apache Commons 工具类介绍及简单使用
    spring常用的工具类
    shiro内置过滤器研究
    抓取Js动态生成数据且以滚动页面方式分页的网页
  • 原文地址:https://www.cnblogs.com/shenwenbo/p/15047363.html
Copyright © 2011-2022 走看看