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

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

相关文章:

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

Android apk装机编译类型: verify、speed-profile, speed与启动耗时 Dex2oat (dalvik excutable file to optimized art file) ,对 dex 文件进行编译优化,Android 虚拟机可识别的是dex文件,应用运行过程如果每次都将dex文件加载内存&#xff…...

纹理压缩格式优化

🎯 Unity 项目纹理压缩格式优化终极指南 ——不同平台、不同手机型号,如何正确选择 🧩 什么是纹理压缩(Texture Compression)? Texture压缩 = 减小显存占用,提升加载速度,减轻GPU负担纹理是游戏中最大资源,占用50%+内存正确压缩:减少GPU Bandwidth,提高渲染性能错…...

使用Virtual Serial Port Driver+com2tcp(tcp2com)进行两台电脑的串口通讯

使用Virtual Serial Port Drivercom2tcp或tcp2com进行两台电脑的串口通讯 问题说明解决方案方案三具体操作流程网上教程软件安装拓扑图准备工作com2tcp和tcp2com操作使用串口助手进行验证 方案三存在的问题数据错误通讯延时 问题说明 最近想进行串口通讯的一个测试&#xff0c…...

【从0-1的HTML】第3篇:html引入css的3种方式

文章目录 HTML中引入CSS的方式行内样式内部样式外部样式yinru.css文件 完整html文件 引入CSS方式的优先级 HTML中引入CSS的方式 HTML:是使用标签来描述网页元素 CSS:是Cascading Style Sheets,层叠样式表,用来控制样式来显示网页…...

数智破局·生态共生:重构全球制造新引擎 2025 WOD制造业数字化博览会即将在沪盛大启幕

共探数智化未来,共创新质生产力。2025年6月17日—19日,上海浦东新国际博览中心将迎来全球制造业数字化转型的盛会——WOD制造业数字化博览会。作为全球首个聚焦制造业数字化全场景的专业展会,本届展会以“数智破局生态共生:重构全…...

machine_env_loader must have been assigned before creating ssh child instance

在主机上执行roslaunch命令时,报错:machine_env_loader must have been assigned before creating ssh child instance。 解决办法: 打开hostos文件,检查local host 前的内部ip是否正常。操作示例: 先输入下方指令打…...

BGP/MPLS IP VPN跨域解决方案

目录 MPLS VPN跨域方案出现背景: MPLS VPN回顾 VRF(Virtual Route Forward)虚拟路由转发 MPLS(Multiple Protcol Label Swtich)多协议标签交换 MP-BGP多协议BGP MPLS VPN跨域OptionA 控制平面: 转发平面: 总结: 挑战: MPLS VPN跨域OptionB 非RR场景: 控制平面: 转发…...

C语言-10.字符串

10.1字符串 10.1-1字符串 字符数组 char word[] = {‘H’,‘e’,‘l’,‘l’,‘o’,‘!’}; word[0]Hword[1]eword[2]lword[3]lword[4]oword[5]!这不是C语言的字符串,因为不能用字符串的方式做计算 字符串 char word[] = {‘H’,‘e’,‘l’,‘l’,‘o’,‘!’}; word[0]Hwo…...

backend 服务尝试连接 qdrant 容器,但失败了,返回 502 Bad Gateway 问题排查

遇到的问题是: backend 报错:502 Bad Gateway 来自 Qdrant → 导致接口 /api/chat 返回 500 Internal Server Error并且日志中提示: QDRANT_URL http://qdrant:6333✅ 问题分析 这个错误的根本原因是: 你的 backend 服务尝试连…...

硬件学习笔记--66 MCU的DMA简介

DMA(Direct Memory Access,直接存储器访问)是MCU中一种重要的数据传输机制,它允许外设与存储器之间或存储器与存储器之间直接传输数据,而无需CPU的持续干预。 1、DMA的基本原理 1.1 核心概念: 1&#xf…...

18. Qt系统相关:多线程

一、概述 在Qt中,使用QThread类对系统线程进行了封装。QThread代表一个在应用程序中可独立控制的线程,也可以和进程中的其他线程共享数据。 二、QThread常用API 三、QThread使用 自定义一个类,继承自QThread,并且只有一个线程处…...

6个月Python学习计划 Day 14 - 异常处理基础( 补充学习)

第二周 Day 8 - Python 函数基础 Day 9 - 函数进阶用法 Day 10 - 模块与标准库入门 Day 11 - 列表推导式、内置函数进阶、模块封装实战 Day 12 - 字符串处理 & 文件路径操作 Day 13 - 文件操作基础 🎯 今日目标 理解异常的概念和常见异常类型掌握 try-except …...

使用jstack排查CPU飙升的问题记录

最近,看到短视频传播了一个使用jstack来协助排查CPU飙升的案例。我也是比较感兴趣,参考了视频博主的流程,自己做了下对应案例的实战演练,在此,想做一下,针对相关问题模拟与排查演练的实战过程记录。 案例中…...

cursor如何开启自动运行模式

在Cursor中,开启自动运行模式即启用“Yolo Mode”,具体操作如下: 按下Ctrl Shift J(Windows/Linux)或Cmd Shift J(Mac)打开Cursor设置。导航到“Features”(功能)选…...

SecureCRT 设置超时自动断开连接时长

我们在使用SecureCRT 连接服务器时,经常性出现2分钟未操作已连接的服务器,就会自动断开连接,此时需要重新连接,非常影响服务器操作,本文可以很好带领大家解决这种问题。...

《复制粘贴的奇迹:原型模式》

📖 背景故事 创业初期,小明每天加班写配送路线、配送策略、营销套餐。可当业务做大后,他发现大家常常下单“上次那个套餐”—— “老板,再来一个上次的奶茶水果!” “老样子,照搬昨天晚上的宵夜套餐&#…...

IEC 61347-1:2015 灯控制装置安全标准详解

IEC 61347-1:2015灯控制装置安全标准详解 IEC 61347-1:2015 是国际电工委员会(IEC)发布的灯控制装置第1部分:通用要求和安全要求的核心标准,为各类照明用电子控制设备设定了全球通用的安全基准。该标准适用于独立式或内置于灯具/…...

Ansys Zemax | 手机镜头设计 - 第 4 部分:用 LS-DYNA 进行冲击性能分析

附件下载 联系工作人员获取附件 该系列文章将讨论智能手机镜头模组设计的挑战,从概念和设计到制造和结构变形分析。本文是四部分系列中的第四部分,它涵盖了相机镜头的显式动态模拟,以及对光学性能的影响。使用 Ansys Mechanical 和 LS - DY…...

[蓝桥杯]实现选择排序

实现选择排序 题目描述 实现选择排序算法。介绍如下: 选择排序的工作原理是每一次从需要排序的数据元素中选出最小的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排列完毕。 请编写代码,完成选择排序,…...

[蓝桥杯]卡片换位

卡片换位 题目描述 你玩过华容道的游戏吗? 这是个类似的,但更简单的游戏。 看下面 3 x 2 的格子 --------- | A | * | * | --------- | B | | * | --------- 在其中放 5 张牌,其中 A 代表关羽,B 代表张飞,* …...

【论文笔记】High-Resolution Representations for Labeling Pixels and Regions

【题目】:High-Resolution Representations for Labeling Pixels and Regions 【引用格式】:Sun K, Zhao Y, Jiang B, et al. High-resolution representations for labeling pixels and regions[J]. arXiv preprint arXiv:1904.04514, 2019. 【网址】…...

【题解-洛谷】P9422 [蓝桥杯 2023 国 B] 合并数列

题目:P9422 [蓝桥杯 2023 国 B] 合并数列 题目描述 小明发现有很多方案可以把一个很大的正整数拆成若干正整数的和。他采取了其中两种方案,分别将他们列为两个数组 { a 1 , a 2 , ⋯ a n } \{a_1, a_2, \cdots a_n\} {a1​,a2​,⋯an​} 和 { b 1 , …...

在MATLAB中,`mean(P_train, 2)` 的含义

在MATLAB中,mean(P_train, 2) 的含义是: 计算矩阵 P_train 中每一行的平均值(沿第2个维度操作)。 详解: mean(A, dim) 函数: 对数组 A 沿维度 dim 求平均值。dim1 → 按列计算(返回行向量&…...

开源模型应用落地-OpenAI Agents SDK-集成Qwen3-8B(一)

一、前言 在人工智能技术迅猛发展的今天,OpenAI Agents SDK 为开发者提供了一个强大的工具集,用于构建基于 Python 的智能代理应用。这些代理可以执行从简单任务到复杂决策的一系列操作,极大地提升了应用程序的智能化水平。 通过 OpenAI Agents SDK,可以利用 Python 编程语…...

109页PPT华为流程模块L1-L4级梳理及研发采购服务资产5级建模

华为的流程体系是其核心竞争力之一,也是其从一家小型民营企业成长为全球领先科技巨头的重要支撑。这套体系的核心思想是以客户为中心、以价值创造为导向、以流程驱动业务、持续优化改进。 下载资料请查看文章中图片右下角信息 以下是华为流程体系的关键组成部分和特…...

第N1周:one-hot编码案例

🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 一、one-hot编码概念 自然语言处理(NLP)中的文本数字化:文字对于计算机来说就仅仅只是一个个符号,计算…...

Windows安装docker desktop

Windows 版本: Windows 10/11(64位)专业版、企业版或教育版(家庭版需手动配置)。 版本号需 ≥ 1909(建议更新到最新系统) 打开程序 启动服务后点点点 重启生效(没有的话 安装WSL…...

Ros(俩不同包的节点 交流 topic message)

不同的俩节点 如chao_node 和ma_node .在俩不同的包下。 他们若想互相产生联系, 就需要靠这个关系了。 想象一下是开黑的场景 其实群名就是topic 而发送的消息就是Message。 其中主动刷屏的message的一方 就是 Publisher 而接受的那一方 就是subsciber...

李沐《动手学深度学习》 | 数值稳定性

文章目录 数值稳定性梯度消失Sigmoid作为激活函数 梯度爆炸 让训练更加稳定合理的权重初始化Xavier初始化(常用)He初始化/Kaiming方法 Batch Normalization Q&A 数值稳定性 当神经网络的深度比较深时,非常容易数值不稳定。 不稳定梯度是…...

OpenCV CUDA模块图像处理------图像连通域标记接口函数connectedComponents()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该函数在 GPU 上执行二值图像的连通域标记操作,即将图像中所有相连的前景像素区域赋予相同的标签(label)&…...