关于 Failure [INSTALL_FAILED_DEXOPT] 的解决方案。

Android安装应用 INSTALL_FAILED_DEXOPT 问题及解决办法 主要介绍了Android安装应用 INSTALL_FAILED_DEXOPT 解决办法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 立即下载

一同事在修改了package/app下面的工程之后,不想full build于是直接mm之后 找到APK直接adb install报错如下


 Failure [INSTALL_FAILED_DEXOPT] 

 

先来说说问题产生的原因。

如果我们在user版本用mm编译apk时,会在out目录下生成.apk和.odex两个文件,是为了加快运行速度,把dex分出来做的预优化处理。但是一般开发时需要mm编译出一个完整的apk,直接用adb进行安装就可以进行调试。这样的话我们有两个选择,一个选择是切到非user版本坐编译 ,另外一种方案就是在当前的需要编译的app目录的.mk文件中加入如下代码关闭对于当前APK的预优化处理即可:

LOCAL_DEX_PREOPT := false

那么为什么user版本会对apk进行预优化处理呢,在device.mk里面 或者device下面别的.mk文件里面会有如下代码:

ifeq ($(TARGET_BUILD_VARIANT), user)
      ifeq ($(WITH_DEXPREOPT),)
       WITH_DEXPREOPT ?= true

那么在user版本下 WITH_DEXPREOPT会是true.而WITH_DEXPREOPT决定了LOCAL_DEX_PREOPT的值。


那么问题又来了,什么是预优化,预优化的原理是什么,预优化的有什么好处呢,带着这些问题来看看。


首先,什么是预优化。

对于Android而言,预优化也就是把Android在launch或者runtime时候所需要做的一些事儿,把这些事儿提前到编译期来达到Android启动速度的加速和APP运行速度的加速。


然后Android预优化的原理。

在5.0之前 Android一直用的DVM虚拟机,到了5.0换成了ART。

咦,怎么突然说起了虚拟机,别急,我们先来看看Java几种虚拟机的工作机制:

(1)JVM:JVM虚拟机运行的是java字节码。Java文件到JVM的过程是:java -> java bytecode(class) -> java bytecode(jar)。
(2)DVM:DVM虚拟机解析执行的dex字节码。Java文件到DVM的过程是:java -> java bytecode(class) -> dalvik bytecode(dex)。
(3)ART:ART虚拟机执行本地机器码。Java文件到ART的过程是:java -> java bytecode(class) -> dalvik bytecode(dex) -> optimized android runtime machine code(oat)。
我们能看到,从java文件到虚拟机执行代码,ART比DVM多了OAT的过程。

ART所使用的AOT(Ahead-Of-Time) 编译,在首次安装应用的时候,字节码预编译成机器码存在本地。

DVM是典型的JIT(Just-In-Time) ,在此模式下,应用每次运行的时候,字节码都需要即时的编译转换成机器码再执行。

那么对于ART而言就省去了解析字节码的过程,占用内存也会相应的减少,从而提升APP的运行效率。




crowdcountingp2p代码复现 前面学习了一下论文:Improved Field-Based Soybean Seed Counting and Localization with Feature Level Considered该论文的模型原型由CrowdCounting-P2PNet改进而来这里先复现一下CrowdCounting-P2PNet模型,然后再学习P2PNet-Soy模型。 阅读详情

相关推荐

完整的申请邓白氏编码的流程(手把手教你申请邓白氏编码)

申请公司的苹果开发者账号和企业级的苹果开发者账号时,都会用到邓白氏编码,也就是我们申请苹果开发者账号时需要填写的D-U-N-S Number。     申请这个邓白氏编码是免费的,但是从像华夏邓白氏公司提交申请到可以申请苹果开发者账号来用这个9位的D-U-N-S Number,需要一段时间,我申请得到D-U-N-S Number,用了8个工作日(不算周末哦)

wxw2011014003的博客 9万+

安装apk时的INSTALL_FAILED_DEXOPT错误

今天打包时,发现2.3机器,产生的APK在某些机器上不能安装(Installation error: INSTALL_FAILED_DEXOPT),针对这个问题的一个可能解释是:最新的ADT和SDK Tool在将jar转化成dex的时候,可能会合并类的代码,这将导致巨大的类;类中的每一个方法都分配有一个id,字节码中以id标识和调用方法;早期的Dalvik VM内部使用short类型变量来标识

viclee 1万+

MRI脑影像分析从哲学到技术:一文搞懂VBM预处理基本原理(全网最详细解析)

   分析大脑解剖学差异最常用方法之一是基于体素的形态学方法(voxel-based morphometry, VBM)。 VBM的基本思想是测量大脑组织,尤其是灰质的局部浓度的差异。在大脑的每个体素处进行操作,然后在两个或多个实验组之间进行统计比较,从而在受调查的组之间建立特定大脑区域中脑组织浓度的统计学显着差异。 VBM分析基于(高分辨率)MRI脑部扫描,涉及大量处理步骤,主要是空间归一化,分割,平滑和统计分析,最终结果是统计图,显示了各组之间组织类型明显不同的区域[^1]。 参考 [^1] ..

意疏的学习笔记 3万+

Android小技巧之安装程序报错:INSTALL_FAILED_DEXOPT

安装程序时,出现INSTALL_FAILED_DEXOPT的错误,结合网上搜索的,解决办法如下: 1.卸载程序,重新安装 2.检查是否ROM不足引起的,如果是,尝试删掉一些其他程序 3.如果你是一个开发者,检查你的项目是不是很大,因为在Android3.0以前,dex限制了程序的最大方法数是65535,也就是说,如果你的系统是3.0以前的,同时你的程序的代码量太大,方法的数目超过了65535

继续沉淀! 5837

智能座舱(七)——智能音频系统

本文剖析车载智能音频系统的核心技术,聚焦音响、功放、麦克风和广播收音机四大组件。音响系统通过多声道布局(如23扬声器阵列)结合动态声场校准算法,实现三维声场覆盖;功放系统采用高效D类技术,支持OTA音效调整和故障自愈;麦克风阵列运用波束成形技术实现精准拾音,并保障隐私安全;广播系统融合数字与网络技术提升音质。核心在于硬件标准化与算法差异化的协同,未来将朝集成化、AI个性化方向发展。

DC20160101的博客 1575

戴尔G3/AWCC用户必看:揪出WMI Provider Host疯狂占用的元凶,附5.4.35旧版回退保姆级教程

本文针对戴尔G3/AWCC用户遇到的WMI Provider Host异常占用问题,提供了详细的诊断方法和解决方案。通过分析AWCC 5.5.14.0版本的资源占用问题,指导用户回退到稳定版AWCC 5.4.35,并附上保姆级教程和预防措施,帮助用户彻底解决系统卡顿问题。

weixin_30892037的博客 562

安装APP损坏,出现[INSTALL_FAILED_DEXOPT]的解决办法

在android4.0源码里面编译出来apk后,用adb install (或adb install -r 重装)安装时,报错[INSTALL_FAILED_DEXOPT]。 xu@xu-PC:~$ adb install workspace/out/target/product/generic/system/app/xxx.apk 2820 KB/s (225970 bytes in 0

1760

RT-Thread学习笔记(5):SPI驱动框架分析

1、两个设备模型 在spi驱框架中,一般会自己初始化一个总线设备(rt_spi_bus),当我们通过挂载后,会相应注册一个从设备(rt_spi_device)。 1、总线设备模型 struct rt_spi_bus { struct rt_device parent; rt_uint8_t mode; const struct rt_spi_ops *ops; struct rt_mutex lock; struct rt_spi_device *owner; };

BLBQ962464的博客 1万+

Failure [INSTALL_FAILED_DEXOPT]解决方案

在android4.0源码里面编译出来apk后,用adb install (或adb install -r 重装)安装时,报错[INSTALL_FAILED_DEXOPT]。 xu@xu-PC:~$ adb install workspace/out/target/product/generic/system/app/xxx.apk 2820 KB/s (225970 bytes in 0

成长的味道 1562

EMB电子机械制动器夹紧力预估策略分析

本文探讨了电子机械制动器(EMB)夹紧力的四种预估方法:1)基于电机电流的方法简单经济但易受干扰;2)基于位置传感器的方法实时性好但依赖模型精度;3)直接力测量精度最高但成本较高;同时提出未来将结合AI和数字孪生技术提升预估精度。研究显示,准确的夹紧力预估对制动安全性、能效和舒适性至关重要,当前面临温度稳定性、参数漂移等技术挑战。随着智能算法的发展,EMB夹紧力预估将实现更高精度和可靠性。

m0_59012156的博客 854

C和C++Everything教程的简介

C和C++Everything教程的简介 C和C++Everything教程,该专栏目前已有8000博文,订阅该专栏相当于同时订阅以下所有收费专栏

希望我的博客,能帮上你解决学习中工作中所遇到的问题 4394

Android: Failure [INSTALL_FAILED_DEXOPT] and Failure [INSTALL_FAILED_UID_CHANGED] 解决方案

1. 错误:Failure [INSTALL_FAILED_DEXOPT] Android安装App时 D:\WorkSpace\Administrator\workspace\svn\sootOutput>adb install OpenSudoku_1.apk 1032 KB/s (235960 bytes in 0.223s) pkg: /data/local...

weixin_30739595的博客 157

从零开始创建Davinci Configurator配置工程

本文介绍了从零开始搭建达芬奇工程的详细步骤。首先安装Vector的CBD包后,通过DavicCFG.exe新建空白ECU工程。文章提到Postbuild相关概念可参考往期文章《AUTOSAR配置中的PostBuild、Precompile、Linktime》,并预告下期将讲解如何通过导入DBC文件来启用AUTOSAR模块。全文以实操截图为主,步骤清晰简明,适合开发者参考备份。

Xiaowestwind的博客 223

MTC及Testin错误,原因分享

最近在进行兼容性测试时,使用MTC及Testin平台时,遇到了一些错误

j9y6f315的专栏 1830

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android模拟器安装apk报错Failure [INSTALL_FAILED_DEXOPT]

编译没有任何错误,却无法安装 在Run窗口显示如下: pkg: /data/local/tmp/com.huat.hostwithsecond Failure [INSTALL_FAILED_DEXOPT] $ adb shell pm uninstall com.huat.hostwithsecond DELETE_FAILED_INTERNAL_ERROR Error while I...

逸寒 2934

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Failure [INSTALL_FAILED_DEXOPT]

在android4.0源码里面编译出来apk后,用adb install 安装时,报错[INSTALL_FAILED_DEXOPT]。 z:\ics-android\ics-src\out\target\product\generic\system\app>adb install NativeTimer.apk 28 KB/s (10166 bytes in 0.344s)      

aclipse的专栏 836

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

AndroidStudio开发中遇到 Failure [INSTALL_FAILED_DEXOPT]

在AndroidStudio开发中出现Failure [INSTALL_FAILED_DEXOPT]错误,导致无法真机调试程序

彬彬琼语的博客 2704

安装apk时出现错误Failure [INSTALL_FAILED_DEXOPT]问题解决的方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 在android4.0源码里面编译出来apk后,用adb install (或adb install -r 重装)安装时,报错[INSTALL_FAILED_DEXOPT]。 xu@xu-PC:~$ adb install workspace/out/target/product/generic/system/app/xxx.apk

阳光灿烂的日子的博客 1143

安装apk时出现错误Failure [INSTALL_FAILED_DEXOPT]

在android4.0源码里面编译出来apk后,用adb install 安装时,报错[INSTALL_FAILED_DEXOPT]。 z:\ics-android\ics-src\out\target\product\generic\system\app>adb install NativeTimer.apk 28 KB/s (10166 bytes in 0.344s)

编程是一门艺术 1万+

android 5.0 安装APP 出现 Failure [INSTALL_FAILED_DEXOPT]

要将之前一款android4.0 的系统APP安装到 adnroid 5.0的设备中。 在android 5.0的AP端编译完代码后,使用adb install c:\xxxxx.apk 时,会出现 Failure [INSTALL_FAILED_DEXOPT]。 参考了http://blog.youkuaiyun.com/victoryckl/article/details/7858093 这篇文章后,

Armsterlong的专栏 7045

AndroidStudio运行项目出现Failure [INSTALL_FAILED_DEXOPT]

AndroidStudio 运行项目 运行不了 弹出提示框Installation failed since the device possibly has stale dexed jars that don‘t match the current version (dexopt error). In order to proceed, you have to uninstall the exis

Keep Learning , Keep Improving ! 1856
上一篇: 关于系统内置apk签名问题。
下一篇: 关于Parcelable传递时候的异常 Unmarshalling unknown type code。
androideveloper
博客等级 码龄12年 21粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值