当前位置: 首页 > news >正文

Android apk装机编译类型: verify、speed-profile, speed与启动耗时

Android apk装机编译类型: verify、speed-profile, speed与启动耗时

Dex2oat (dalvik excutable file to optimized art file) ,对 dex 文件进行编译优化,Android 虚拟机可识别的是dex文件,应用运行过程如果每次都将dex文件加载内存,解释执行字节码,效率很低, 严重影响用户体验。通过 dex2oat 优化后, 可在系统运行之前利用合适的时机将dex文件字节码提前转化为虚拟机可以执行运行的机器码,后续直接运行机器码,则更加流畅,优化用户体验。

机器码生成方式: JIT生成的机器码缓存在内存中,运行时优化。
ART包括一个编译器(dex2oat工具)和一个为启动Zygote而加载的运行时(libart.so)。dex2oat工具接
受一个APK文件,生成一个或多个编译生成文件,然后运行时将会加载这些文件。文件的个数、
扩展名和名称会因版本而异,在Android O及后版本中,将会生成以下文件:
vdex: 包含有APK的未压缩DEX代码。
.odex: 包含有APK中已经过AOT编译的方法代码。
.art (optional): 用于加快应用启动速度。

Android apk装机的编译类型:

verify、quicken、space-profile、space、speed-profile, speed、everything。

(1)越靠前占用空间越小安装时间越短,但打开应用及应用的运行耗时长(慢);

(2)越后面的类型编译时间越长(安装时间长),占用的空间也越大,但运行时打开速度也越快(简单的说就是全部预编译完了,避免在运行时做更多操作),典型空间换时间策略。

speed和speed-profile是android N编译模式中的两种选项。speed是一种编译模式,旨在最大化运行时性能, 而speed-profile则是部分编译模式, 根据profile记录的热点函数来编译, 也是为了最大化运行时性能。

adb shell命令检查JIT编译的状态,

adb shell dumpsys package 包名 | findstr -i "status"

如果输出的日志有:

 [status=speed]

则JIT模式为快速的speed模式。

编译模式选择
通过 --compiler-filter 参数控制编译优化级别,直接影响 OAT 文件大小、安装时间和运行时性能:

 -quicken:快速编译(最低优化),安装快但运行时性能一般,适用于低端设备或调试场景。  
-speed:完全优化,牺牲安装时间换取最佳性能,适合中高端设备。运行时最快。  
-speed-profile:基于运行时 Profile 优化,需结合生成的热点数据。相当于半speed。  
-verify:仅验证 DEX 文件,不生成机器码,适用于快速安装。

ROM过大可以通过调整-compiler-filter,减少apk生成odex文件所占据空间的大小,通常来说odex+vdex文件越大,说明dex2oat优化的类越多越彻底,性能也相对较好,运行时速度也越快。


 

命令:

adb shell "cmd package compile --reset 包名"

重置应用的JIT编译模式设置。

强制把某一个应用的编译为speed模式:

adb shell cmd package compile -m speed -f --full 包名

odex是由 android apk中的classes.dex生成的。可以加快app的启动速度,预先提取,减少对RAM的占用,因为没有odex的话,系统要从apk包中提取dex再运行。
原本系统恢复出厂设置后第一次开机需要先提取classes.dex,而odex化就是现在提前把它提取出来。系统启动或者程序运行加快的原因也就在此。并且将dex变为odex还可以节省空间,提取后可把apk内的dex删除。如果不是odex,那么还是会摄取dex,这时不仅apk内有dex,/data/dalvik-cache目录下也有dex,虽然apk内的dex经过压缩了,但是两份dex的总体积已经大于一份odex的体积。
odex后系统启动和程序运行速度大大提高,稳定性不变。

Android JIT编译:adb shell cmd package compile选项_android cmd package compile -m speed -f my-package-CSDN博客文章浏览阅读1.3k次,点赞13次,收藏27次。Android Runtime (ART) 包含一个具备代码分析功能的即时 (JIT) 编译器,该编译器可以在 Android 应用运行时持续提高其性能。JIT是Just In Time Compiler,即时编译技术。ART 引入了预先编译机制,可提高应用的性能。在安装时,ART 使用设备自带的 dex2oat 工具来编译应用。Android JIT( ART即时编译器),Just In Time Compiler,即时编译技术-CSDN博客。_android cmd package compile -m speed -f my-package https://blog.csdn.net/zhangphil/article/details/147557654

Android JIT( ART即时编译器),Just In Time Compiler,即时编译技术-CSDN博客文章浏览阅读818次,点赞12次,收藏12次。Android Runtime (ART) 包含一个具备代码分析功能的即时 (JIT) 编译器,该编译器可以在 Android 应用运行时持续提高其性能。JIT是Just In Time Compiler,即时编译技术。JIT:以下是 ART 实现的一些主要功能。ART 引入了预先编译机制,可提高应用的性能。ART 还具有比 Dalvik 更严格的安装时验证。在安装时,ART 使用设备自带的 dex2oat 工具来编译应用。_android jit https://blog.csdn.net/zhangphil/article/details/147520790

相关文章:

  • 2025年大模型平台落地实践研究报告|附75页PDF文件下载
  • Elasticsearch索引(Index)介绍,它与数据库中的表有什么区别?
  • Cursor 工具项目构建指南: Web Vue-Element UI 环境下的 Prompt Rules 约束(new Vue 方式)
  • 浅析EXCEL自动连接PowerBI的模板
  • AI基础知识(LLM、prompt、rag、embedding、rerank、mcp、agent、多模态)
  • Spring Boot 从Socket 到Netty网络编程(上):SOCKET 基本开发(BIO)与改进(NIO)
  • OpenCV C++ 学习笔记(六):绘制文本、几何绘图、查找/绘制轮廓
  • EasyRTC嵌入式音视频通信SDK音视频功能驱动视频业务多场景应用
  • 数据标注与大模型的双向赋能:效率与性能的跃升
  • RPG21.创建敌人的AttributeSet,创建角色的GameplayEffect
  • 【Rust 高级trait】Rust trait的一些高级用法解密
  • 【算法深练】分组循环:“分”出条理,化繁为简
  • Paraformer分角色语音识别-中文-通用 FunASR
  • 数控矫平机:深潜技术内核与智造前沿
  • Python try-except-else 语句详解
  • 夏普比率(Sharpe ratio)​
  • [C++入门]简化的艺术---对模版的初步探索
  • django ssh登录 并执行命令
  • React从基础入门到高级实战:React 高级主题 - 测试进阶:从单元测试到端到端测试的全面指南
  • k8s集群安装坑点汇总
  • 昆山网站建设公司/免费站推广网站2022
  • 织梦做网站视频教程/东莞企业网站模板建站
  • 泉州网站/关键词搜索排名软件
  • 企业电子商务的网站的建设方式/bing搜索引擎国内版
  • 网站做超链接的方式有哪些/那个推广平台好用
  • 南部网站建设/公司推广宣传文案