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
  • 相关阅读:
    Neo4j图形数据库备份
    Linux中Tomcat 自动设置CATALINA_HOME方法
    VNC viewer 无法打开oracle 11g图形界面方案
    CYPHER 语句(Neo4j)
    Tomcat部署时war和war exploded区别
    java中不能使用小数点(.)来作为分隔符
    做一个完整的Java Web项目需要掌握的技能
    从零讲Java,给你一条清晰地学习道路!该学什么就学什么!
    MYSQL数据库表排序规则不一致导致联表查询,索引不起作用问题
    chrome浏览器的跨域设置——包括版本49前后两种设置
  • 原文地址:https://www.cnblogs.com/shenwenbo/p/15047363.html
Copyright © 2011-2022 走看看