在Android 开发中,经常遇到mismatch dep signature 的问题

最初以为是 apk 的签名,后来问了一位对Android 比较资深的同事,终于明白了其中原理

编译系统会对 system/framework/下面的jar 以及 system/app下面的apk 文件优化,生成 odex 文件

由于jars, apks 有依赖关系,odex 文件会记住它所依赖 odex 的 signature

比如 framework.odex 依赖于core.odex, 如果我们改动并重新生成了 core.odex

因为framework.odex 是基于老的 core.odex 做得优化, ( fraemwork.odex 以前计算的偏移可能不对),所以 framework.odex 在已经更新 core.odex 系统中已失效,所以framework.odex 也要重新生成。

这可以解释为何系统更新了,所有apk 都自动升级

系统以前安装 apk 的时候,为 apk 生了了 odex 文件, 系统升级后,这些 odex 文件都失效,因此要重新生成

就是说: 因为 apk 依赖system/framework/ 下的.odex更新了, apk 要基于这些系统.odex 重新生成 odex, 相当于重新安装

如果只是该 C文件,重新生成 system/lib 的so 文件,则不用重新生成odex文件

看来都是odex出的错,要取消,可以

1)编译的时候用:WITH_DEXPREOPT=false

2)在Android.mk中加上:
LOCAL_DEX_PREOPT := false

但系统启动的时候应该就要检验,并生成odex,可能多花些时间

搞懂 mismatch dep signature相关推荐

  1. 一个注解搞懂 Sentinel,@SentinelResource总结

    @SentinelResource可以说是Sentinel学习的突破口,搞懂了这个注解的应用,基本上就搞清楚了 Sentinel 的大部分应用场景. 一.@SentinelResource 解析 Se ...

  2. 一篇文章带你搞懂 DEX 文件的结构

    From:https://blog.csdn.net/sinat_18268881/article/details/55832757 Dex文件格式详解:https://www.jianshu.com ...

  3. data的值 如何初始化vue_Vue原理解析(九):搞懂computed和watch原理,减少使用场景思考时间...

    之前的章节,我们按照流程介绍了vue的初始化.虚拟Dom生成.虚拟Dom转为真实Dom.深入理解响应式以及diff算法等这些核心概念,对它内部的实现做了分析,这些都是偏底层的原理.接下来我们将介绍日常 ...

  4. factorybean 代理类不能按照类型注入_彻底搞懂依赖注入(一)Bean实例创建过程

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 上一章介绍了Bean的加载过程(IOC初始化过程),加载完成后,紧接着就要用到它的依赖注入 ...

  5. 学习Java日志框架之——搞懂日志门面(JCL+SLF4J)

    文章目录 系列文章目录 一.什么是日志门面 1.门面模式(外观模式) 2.日志门面 二.了解JCL 1.JCL组件结构 2.JCL案例 (1)JCL默认实现 (2)导入log4j测试原有程序 三.SL ...

  6. HTTPS 终于搞懂了 !

    点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | ...

  7. zhs16gbk对应mysql_[Oracle] 彻底搞懂Oracle字符集

    基本概念字符集(Character set):是一个系统支持的所有抽象字符的集合.字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.常见的字符集有ASCII,ZHS16GB231 ...

  8. 面试必备|带你彻底搞懂Python生成器

    2019年人工智能系统学: https://edu.csdn.net/topic/ai30?utm_source=ai100_bw 作者 | Rocky0429 转载自 Python空间(ID:Dev ...

  9. 20分钟教你搞懂Git!

    Git 是最流行的版本管理工具,也是程序员必备的技能之一.本文就来教你 20 分钟搞懂 Git! 以下为译文: 尽管每天你都会用到Git,但也有可能搞不懂它的工作原理.为什么Git可以管理版本?基本命 ...

最新文章

  1. AI时代的高科技读心术:算法解码脑中图像
  2. web API简介(二):客户端储存之document.cookie API
  3. Zookeeper分布式一致性原理(五):Zookeeper-Java-API
  4. 只用半小时,只用半小时,只用半小时,给自己一个机会,看完保你web开发一期末不挂科,老师看了都说好
  5. Linq使用Group By 1
  6. sql 查询性能的问题 有order by 和无order by 速度竟然相差百倍
  7. [C++STL]C++实现list容器
  8. 2021牛客OI赛前集训营-交替【生成函数】
  9. 最优化学习笔记(五)牛顿法及拟牛顿法
  10. Spring技术栈系列教程-- SpringMVC 、SpringBoot 、SpringCloud
  11. 编写tcp服务器发送hex格式_Android网络编程-TCP/IP协议
  12. LeetCode 60. 第k个排列(python、c++)
  13. 分布式配置管理平台 - Disconf介绍
  14. 学生信息管理系统源码
  15. 2022最火的一款网盘赚钱系统源码 仿制蓝奏网盘/城通网盘/分享赚钱云盘系统/网盘VIP下载系统
  16. 给数据库中的某个表添加一个字段!!!!!
  17. layui控制文本框只能填写数字
  18. 复现KDL:使用Msnhnet实现串联机器人运动数值逆解(一)
  19. Java 多态练习题之愤怒的小鸟,会飞会叫
  20. 工作中那些让人印象深刻的BUG(1)

热门文章

  1. Django Rest Framework 部分源码剖析
  2. 9.4. Default Gateway
  3. OC基础--block
  4. RAID入门一页通,最全的RAID技术、原理图解
  5. 开始启用51CTO的博客
  6. [译]Razor内幕之介绍
  7. 余世维“沟通的技巧”笔记
  8. 图解 Scala 基本语法 V2018.12.17
  9. Poco官方PPT_020-ErrorHandlingAndDebugging双语对照翻译
  10. html+css做的丝带标签