tokenpocket钱包app官网下载地址|odex

作者: tokenpocket钱包app官网下载地址
2024-03-07 20:17:31

ODEX_百度百科

_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心收藏查看我的收藏0有用+10ODEX播报讨论上传视频安卓上的应用程序apk中提取出来的可运行文件ODEX是安卓上的应用程序apk中提取出来的可运行文件,即将APK中的classes.dex文件通过dex优化过程将其优化生成一个·odex文件单独存放,原apk文件中的classes.dex文件可以保留,也可以删除。中文名ODEX类    型可运行文件说    明安卓上的应用程序apk功    能加快软件的启动速度目录1定义2作用3效果4优点5缺点定义播报编辑这样做可以加快软件的启动速度,预先提取,减少对RAM的占用,因为没有odex的话,系统要从apk包中提取dex再运行。作用播报编辑所谓Odex,是由android软件中的classes.dex生成的,Odex化即是把那个文件预先提取出来作用是能加快软件加载速度和开机速度。不过Odex也有缺点,那就是有时候加刷东西会出现问题。简单说,原本系统恢复出厂设置后第一次开机需要先提取classes.dex出来,而Odex化就是你提前把它提取出来了。系统启动或者程序运行加快的原因也就在此。并且将dex变为odex还可以节省空间,因为提取后可以把apk内的dex删除。如果不odex,那么系统还是会自动提取dex,这时不仅apk内有dex,/data/dalvik-cache目录下也有dex,虽然apk内的dex经过压缩了,但是两份dex的总体积已经大于一份odex的体积了。效果播报编辑Odex化后系统启动和程序运行速度大大提高,稳定性不变。因此推荐做Odex化。一般来说官方rom都是odex化的rom(含Odex文件),而定制rom大部分都是deodex化的(无odex文件)。两者应该各有优点吧,貌似也没有统一的说法。官方rom大部分每个apk对应一个.odex文件,而deodex化的rom里面只有一个apk,把.odex转换成classes.dex放到apk包里面了。所以 odex rom的.apk+.odex=deodex化rom的1个.apk (简单地来说,其实就上一个合并的过程)优点播报编辑1.刷完机首次进入系统的时间会缩短一些。文件的运行速度应该也有所提升。2.APK文件不能单独安装,并且如果反编译APK文件,一般也只能得到资源文件。可以说是起到一定的保护作用,避免被肆意修改和使用。这样做可以使其厂商保证一定的反盗版,因为没有dex文件的apk是无法正常安装的。3.会增加一些可安装应用的空间,虽然不是很多。4.某些机身内存太小的手机优化的时候可以删除dex文件来达到制作大内存包的目的,但是这种大内存包会使手机软件启动速度变慢。适合不追求速度,需要更多内存装软件的用户。缺点播报编辑1.不方便修改ROM以及文件本身。2.增加ROM包的体积,虽然不是很多。3.当你升级某个被Odex的应用后,这个应用将会出现故障,最常见的就是FC(在android系统里,运行程序的时候弹出一个对话框,强制关闭)。新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000

Android的.dex、.odex与.oat文件扫盲_base.odex-CSDN博客

>

Android的.dex、.odex与.oat文件扫盲_base.odex-CSDN博客

Android的.dex、.odex与.oat文件扫盲

最新推荐文章于 2021-11-19 15:16:42 发布

林新发

最新推荐文章于 2021-11-19 15:16:42 发布

阅读量1.7w

收藏

60

点赞数

17

分类专栏:

android

java

文章标签:

android

dex

oat

编译

运行

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/linxinfa/article/details/107669242

版权

android

同时被 2 个专栏收录

82 篇文章

12 订阅

订阅专栏

java

15 篇文章

2 订阅

订阅专栏

文章目录

一、前言,发现新玩意二、.dex、.odex与.oat文件介绍1、dex文件2、vdex文件3、odex文件4、oat文件

一、前言,发现新玩意

最近Unity项目打出的Android包在红米Note4真机上运行闪退了,查看日志如下:

07-28 17:56:49.623 7368 7368 D YSDK d.OnSupport: Device OAID loadSuccesstrue

07-28 17:56:49.623 7368 7416 F libc : Fatal signal 11 (SIGSEGV), code 1, fault addr 0x1 in tid 7416 (YSDK_TEMP_THREA)

07-28 17:56:49.624 7368 7368 F libc : Fatal signal 11 (SIGSEGV), code 1, fault addr 0x1 in tid 7368 (mgp.linxinfagame)

07-28 17:56:49.624 7368 7368 I libc : Another thread contacted debuggerd first; not contacting debuggerd.

07-28 17:56:49.646 7368 7418 I MID : >>> queryMatchContentProviders size:1

07-28 17:56:49.647 7368 7418 D MID : >>> appPrivateMidMap size:0,content:

07-28 17:56:49.651 7368 7397 I XgStat : [tpush.working.thread(590): null:-1] - read mid from sharedPreferences, key=__MTA_DEVICE_INFO__1000001

07-28 17:56:49.652 7368 7397 I XgStat : [tpush.working.thread(590): null:-1] - read mid from sharedPreferences, key=__MTA_DEVICE_INFO__3

07-28 17:56:49.677 637 637 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

07-28 17:56:49.677 637 637 F DEBUG : Build fingerprint: 'Xiaomi/prada/prada:6.0.1/MMB29M/V10.2.2.0.MCECNXM:user/release-keys'

07-28 17:56:49.677 637 637 F DEBUG : Revision: '0'

07-28 17:56:49.677 637 637 F DEBUG : ABI: 'arm'

07-28 17:56:49.677 637 637 F DEBUG : pid: 7368, tid: 7416, name: YSDK_TEMP_THREA >>> com.tencent.tmgp.linxinfagame <<<

07-28 17:56:49.677 637 637 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1

07-28 17:56:49.688 3771 3771 E klogd : 6>[45073.921305] type=1400 audit(1595930209.671:1826): avc: denied { search } for pid=637 comm="debuggerd" name="com.tencent.tmgp.linxinfagame" dev="dm-1" ino=81623 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0

07-28 17:56:49.692 637 637 F DEBUG : r0 710f98f8 r1 00000001 r2 ddf6feb4 r3 00000000

07-28 17:56:49.692 637 637 F DEBUG : r4 70a40770 r5 130c27a0 r6 00000001 r7 130c29f0

07-28 17:56:49.693 637 637 F DEBUG : r8 12c5bb00 r9 ab5de3b0 sl 12c7fb00 fp ddf7010c

07-28 17:56:49.693 637 637 F DEBUG : ip 0000f682 sp ddf6fff0 lr e1565349 pc 7479d05c cpsr 000f0030

07-28 17:56:49.693 637 637 F DEBUG :

07-28 17:56:49.693 637 637 F DEBUG : backtrace:

07-28 17:56:49.693 637 637 F DEBUG : #00 pc 7479d05c /data/dalvik-cache/arm/system@framework@boot.oat (offset 0x256a000)

07-28 17:56:49.694 637 637 F DEBUG : #01 pc 01211347 /data/app/com.tencent.tmgp.linxinfagame-1/oat/arm/base.odex (offset 0x9fd000)

07-28 17:56:49.695 3771 3771 E klogd : 6>[45073.937028] type=1400 audit(1595930209.681:1827): avc: denied { search } for pid=637 comm="debuggerd"

name="com.tencent.tmgp.linxinfagame" dev="dm-1" ino=81623 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0

07-28 17:56:49.901 1931 1931 W ResourceType: No package identifier when getting name for resource number 0x00000000

07-28 17:56:49.979 3005 3005 D wpa_supplicant: wlan0: Control interface command 'SIGNAL_POLL'

07-28 17:56:49.994 3005 3005 D wpa_supplicant: CTRL-DEBUG: global_ctrl_sock-sendto: sock=13 sndbuf=229376 outq=0 send_len=48

07-28 17:56:50.320 1512 7424 I am_crash: [1512,0,com.tencent.tmgp.linxinfagame,982040132,Native crash,Segmentation fault,unknown,0]

可以看到触发了一个致命信号SIGSEGV,最终crash闪退了。 日志里输出了闪退时的调用堆栈(backtrace):

07-28 17:56:49.693 637 637 F DEBUG : backtrace:

07-28 17:56:49.693 637 637 F DEBUG : #00 pc 7479d05c /data/dalvik-cache/arm/system@framework@boot.oat (offset 0x256a000)

07-28 17:56:49.694 637 637 F DEBUG : #01 pc 01211347 /data/app/com.tencent.tmgp.linxinfagame-1/oat/arm/base.odex (offset 0x9fd000)

这里出现了两个奇怪的文件:.oat和.odex,我们知道,Unity打出的Android包(.apk),里面是有一个classes.dex文件的,如下 那么,.dex与.odex、.oat有什么联系呢?

二、.dex、.odex与.oat文件介绍

1、dex文件

在我们写Java代码的时候,生成的文件是.java文件。 对于PC上的java虚拟机(JVM)运行的是.class。

.java文件转成.class文件,需要jdk工具,转换命令:

javac xxxx.java

关于JavaEE和JavaSE JavaEE:Java Enterprise Edition,Java企业版,多用于企业级开发,包括web开发等等。企业版本帮助开发和部署可移植、健壮、可伸缩切安全的服务端Java应用。Java EE是在JavaSE的基础上构建的他提供Web 服务、组建模型、管理和通信API.可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和web2.0应用程序。 JavaSE:通常是指Java Standard Edition,Java标准版,就是一般Java程序的开发就可以(如桌面程序),可以看作是JavaEE的子集。它允许开发和部署在桌面、服务器、嵌入式环境和实施环境中使用的Java应用程序。JavaSE 包括支持Java Web服务开发的类,并为Java Platform,Enterprise Edition(Java EE)提供基础。

关于JVM虚拟机 为了使代码和平台无关,JAVA开发了 JVM,即 Java 虚拟机。它为每一个平台开发一个 JVM,也就意味着 JVM 是和平台相关的。Java 编译器将 .java 文件转换成 .class文件,也就是字节码。最终将字节码提供给 JVM,由 JVM 将它转换成机器码。

在Android端,Android上的Davlik虚拟机是运行.dex。所以还得将.class转成dex文件,即dex文件就是Android Dalvik虚拟机运行的程序。 .class转成dex文件 需要使用dx.bat工具,dx.bat工具在Android SDK中build-tools目录中可以找到,转换命令:

dx --dex --output = C:\output.dex C:\test

其中C:\output.dex表示输出文件,C:\test表示原文件的路径名。

关于Dalvik虚拟机 Dalvik是Google公司自己设计用于Android平台的虚拟机,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。 很长时间以来,Dalvik虚拟机一直被用户指责为拖慢安卓系统运行速度不如IOS的根源。 2014年6月25日,Android L 正式亮相于召开的谷歌I/O大会,Android L 改动幅度较大,谷歌将直接删除Dalvik,代替它的是传闻已久的ART。

关于ART Dalvik 使用 JIT(Just in time)编译,而 ART 使用 AOT(Ahead of time)编译。Android 7.0 向 ART 中添加了一个 just-in-time(JIT)编译器,这样就可以在应用运行时持续的提高其性能。 ART 和 Dalvik 一样使用的是相同的 DEX 字节码。编译好的应用如果使用 ART 在安装时需要额外的时间用于编译,同时还需要更多的空间用于存储编译后的代码。 由于 ART 直接运行的是应用的机器码(native execution),它所占用的 CPU 资源要少于 使用 JIT 编译的 Dalvik。由于占用较少的 CPU 资源也就消耗更少的电池资源。

关于JIT (Just In Time ) 使用 Dalvik JIT 编译器,每次应用在运行时,它实时的将一部分 Dalvik 字节码翻译成机器码。在程序的执行过程中,更多的代码被被编译并缓存。由于 JIT 只翻译一部分代码,它消耗的更少的内存,占用的更少的物理存储空间。

关于AOT(Ahead Of Time) ART 内置了一个 Ahead-of-Time 编译器。在应用的安装期间,他就将 DEX 字节码翻译成机器码并存储在设备的存储器上。这个过程只在将应用安装到设备上时发生。由于不再需要 JIT 编译,代码的执行速度要快得多。

常规的反编译dex流程: 1、拿到apk文件,然后解压 ,得到 class.dex 文件 2、用dex2jar 把 class.dex 还原成 classes-dex2jar.jar 文件 3、用 jd-gui.exe 把 classes-dex2jar.jar 文件打开,就可以看到源码了。

2、vdex文件

在讲odex之前,需要先讲vdex(Android O开始加入的) package直接转化的 可执行二进制码 文件: 1.第一次开机就会生成在/system/app//oat/下; 2.在系统运行过程中,虚拟机将其 从“/system/app”下 copy到“/data/davilk-cache/”下

为何要搞出个vdex文件 目的不是为了提升性能,而是为了避免不必要的验证Dex 文件合法性的过程,例如首次安装时进行dex2oat时会校验Dex 文件各个section的合法性,这时候使用的compiler filter 为了照顾安装速度等方面,并没有采用全量编译,当app盘启动后,运行一段时间后,收集了足够多的jit 热点方法信息,Android会在后台重新进行dex2oat, 将热点方法编译成机器代码,这时候就不用再重复做验证Dex文件的过程了,

3、odex文件

odex是优化版的dex。 在Android N之前,Dalvik虚拟机执行程序dex文件前,系统会对dex文件做优化,生成可执行文件odex,保存到data/dalvik-cache目录,最后把apk文件中的dex文件删除。

在Android O之后,odex是从vdex这个文件中 提取了部分模块生成的一个新的 可执行二进制码 文件 , odex从vdex中提取后,vdex的大小就减少了。具体过程: 1.第一次开机就会生成在/system/app//oat/下 2.在系统运行过程中,虚拟机将其 从“/system/app”下 copy到 “/data/davilk-cache/”下 3.odex + vdex = apk的全部源码 (vdex并不是独立于odex的文件,odex + vdex才代表一个apk)

4、oat文件

ART虚拟机使用的是oat文件,oat文件是一种Android私有ELF文件格式,它不仅包含有从DEX文件翻译而来的本地机器指令,还包含有原来的DEX文件内容。APK在安装的过程中,会通过dex2oat工具生成一个OAT文件。对于APK来说,oat文件实际上就是对odex文件的包装,即oat=odex,而对于一些framework中的一些jar包,会生成相应的oat尾缀的文件,如system@framework@boot-telephony-common.oat。

优惠劵

林新发

关注

关注

17

点赞

60

收藏

觉得还不错?

一键收藏

打赏

知道了

0

评论

Android的.dex、.odex与.oat文件扫盲

文章目录一、前言,发现新玩意二、.dex、.odex与.oat文件介绍1、dex文件2、vdex文件3、odex文件4、oat文件一、前言,发现新玩意最近Unity项目打出的Android包在红米Note4真机上运行闪退了,查看日志如下:07-28 17:56:49.623 7368 7368 D YSDK d.OnSupport: Device OAID loadSuccesstrue07-28 17:56:49.623 7368 7416 F libc : Fatal signa

复制链接

扫一扫

专栏目录

android odex文件作用,安卓odex详细介绍

weixin_30798713的博客

05-27

1712

首先解释一下什么是Odex?Odex全称optimize dalvik package,Odex是安卓上的应用程序apk中提取出x来的可运行文件,是通过apk安装包的中的dex优化过的,再把apk包里的dex文件删除。这样做可以加快软件的启动速度,预先提取,减少对RAM的占用,因为没有odex的话,系统要从apk包中提取dex再运行。所谓Odex,是由android软件中的classes.dex生...

最新smali baksmali odex/dex/oat 转换工具,带使用说明。最新参数格式保证可以用

09-16

【dex转smali文件】

framework.dex为要转换的文件 , out为输出目录

运行命令:java.exe -jar baksmali-2.5.2.jar d framework.dex -o out

【odex直接转smali】

解来services.odex,直接转smail文件,如果有boot.art,boot.oat放到services.odex同目录下。services.odex要为转换的文件 ,services为smail文件 输出目录

运行命令:java.exe -jar baksmali-2.5.2.jar x services.odex -o services

【smali文件转dex】

service_new.dex为要打包生成dex的文件名,out/为已经存在的smali文件目录

运行命令:java.exe -jar smali-2.5.2.jar a out/ -o service_new.dex

【解包boot.oat工具】 oat2dex.jar

将boot.oat解包多个dex文件 ,生成到 dex 和 odex 在当前目录下。

运行命令:java.exe -jar oat2dex.jar boot boot.oat

参与评论

您还未登录,请先

登录

后发表或查看评论

ODEX文件转换成DEX文件工具

12-19

一、APK生成odex文件方法:

编译开源GIT上的build/tools/dexpreopt/dexopt-wrapper这个,使用dexopt-wrapper即可,操作步骤

将dexopt-wrapper放到/data/local目录中,使用adb shell执行linux命令行,使用cd命令进入/data/local目录,

cd /data/local

./dexopt-wrapper android123.apk android123.odex

二、合并odex和 少dex的apk 为完整的apk文件

1. 需要odex所在rom中的一些引用类,一般在 /system/framework 目录中

2 . 通过odex生成class文件

java -jar baksmali-1.2.6.jar -x android123.odex

执行完上面这行命令后,会生成一个out 文件夹里面是android123.odex的class文件。主意,最好把odex文件放到framework目录下执行上面的命令,免得报缺少类文件的错误。

3. 通过class生成classes.dex 文件。

java -Xmx512M -jar smali-1.2.6.jar out -o classes.dex

4. 将classes.dex放到apk文件

因为apk是zip的mime编码类型,使用winzip或winrar直接拖入到apk改名为zip的压缩包中即可。

5. 不要忘记了签名,使用jdk中的arsigner和keytool打包重新签名即可。

主意:1.2.2版本的用不起的,会报错。

Frida各种参数构造用需要用gson.dex

最新发布

11-03

这是gson.jar转为gson.dex。

Frida各种参数构造用需要用gson.dex,作用就是把java数据转换成Json数据

注意:将gson.dex放置在 安卓设备/data/local/tmp下. 与frida-server同目录下。

5.x odex合并公斤 oat2dex

01-28

支持安卓5.x odex合并,当前为最新版本

Android[art]-Android dex,odex,oat,vdex,art文件结构学习总结

TaylorPotter的博客

05-05

7674

参考学习博客:

Android Dex文件格式(一):https://blog.csdn.net/p312011150/article/details/80501690

dex文件解析(第三篇) :https://blog.csdn.net/tabactivity/article/details/78950379

Android安全–Dex文件格式详解:https://www.cnblogs.co...

android 应用 cpu和内存简要分析

u010153076的博客

03-30

3783

android cpu和内存简要分析

android studio 关于把图片放在mipmap中的问题

share-learner

02-25

8329

转载请注明原处!

今天写项目的时候试着把图片放在了mipmap-mdpi文件中。如果你问你的项目没有mipmap文件夹,只有mipmap,那么请看图

我想现在你应该明白了。

——————

扯回正题:

当你把图片放在mipmap文件之后,首先要修改的文件的调用。在 .java 文件中的调用更改为(R.mipmap.xxx),不论你是放到了哪一个以mipmap开头的文件中。在 .xml...

.odex文件的反编译

wenrennaoda的专栏

01-09

4409

0x00 问题呈现

在分析某手机自带应用时,为了在JEB中反编译,将其adb pull到了电脑上。解压后发现如下文件:

APK解压目录列表

惊奇的发现该APK包中没有dex文件,一开始特别疑惑没有dex文件,也就是没有代码,那是如何运行的呢?

其实APK文件中的dex文件被odex化了,该处理方式有以下好处:

odex是从apk文件中提取出classes.dex文件,并通过优化生成一个...

Android S中各类dex文件

yun_hen的博客

11-19

3103

Android S中各类dex文件1. Android S中APK(预编译)中的dex文件2. 安装/开机过程中的dex文件3. 出现prof文件后,手动触发重新做一次dex2opt4. system_server的dex文件5. Boot image 文件

1. Android S中APK(预编译)中的dex文件

例如Photos,

26M ./oat/arm/Photos.vdex

5.9M ./oat/arm/Photos.odex

1.4M ./oat/arm/Photos.art

33M ./o

dex.rar_classes.dex下载_dex_lua压缩dex_安卓

09-24

用于安卓手机的classes.dex文件的解压和压缩

oat2dexes:从 Android ART .oat.odex 文件中提取 .dex 文件

07-10

从 Android ART .oat/.odex 文件中提取 .dex 文件 这个怎么运作? DEX 文件嵌入在 Android ART .oat/.odex 文件中。 oat2dexes寻找 DEX 魔法“dex\n035\0”。 如何使用? $ file file.odex file.odex: ELF 32-bit...

android 反编译 逆向 vdex2dex odex2dex

02-23

android 反编译 逆向 vdex2dex odex2dex 查看app源代码

手机设备标识码(IMEI、MEID、UDID、UUID、ANDROID_ID、GAID、IDFA等)

热门推荐

linxinfa的专栏

11-05

6万+

Android篇

1 IMEI和MEID

(1) IMEI

(International Mobile Equipment Identity) 是国际移动设备身份码的缩写,国际移动装备辨识码,只有Android手机才获取的到,是由15位数字组成的"电子串号",比如像这样 359881030314356,它与每台移动电话机一一对应,而且该码是全世界唯一的。

它是GSM设备返回的,并且是写在主板上的,...

apk在手机上的安装路径在哪里,如何拿到程序的本地数据

linxinfa的专栏

03-14

2万+

前言

我们开发手机应用程序的时候,一般会写本地数据在手机上,而Android系统中,应用程序可以读写的目录是应用程序自身的安装目录,假设我们把应用程序的日志文件保存在手机本地数据,我们想要拿到日志文件,就必须先找到应用程序的安装目录。

真机的安装路径

打开文件管理器(手机上默认都有文件管理器),打开本地目录(一般叫"所有文件"),然后对着下面的这个路径找就可以了:

本地目录/Android/da...

unity内置浏览器插件UniWebView的使用(支持Android,ios,Mac)

linxinfa的专栏

08-13

1万+

下载

UniWebView这个插件支持Android、IOS和Mac,不支持Windows。

百度网盘下载链接:

https://pan.baidu.com/s/1wM7frlsW4qdiUA0WHu7exA

提取码:sel8

Unity Asset Store下载链接:

https://assetstore.unity.com/packages/tools/network/uniwebview-...

Unity发布Android时需要的Android SDK/NDK的下载

linxinfa的专栏

03-16

1万+

Unity发布Android时需要的Android SDK/NDK的下载

Android Q设备唯一标识符(Device ID)获取

linxinfa的专栏

10-08

1万+

Android Q也就是 Andriod 10, 对应的api为29

为了更好保护用户隐私,谷歌对安卓Q系统中所有获取设备识别码的接口都增加了新的权限控制:READ_PRIVILEGED_PHONE_STATE,该权限需要系统签名的应用才能申请。同时,系统默认WiFi Mac地址随机化,当设备连上不同的WiFi网络时随机生成Mac地址

通过READ_PHONE_STATE权限获取Devic...

entry name 'classes.dex' collided

08-30

entry name 'classes.dex' collided 意思是“条目名称'classes.dex'冲突”。

当使用Android开发工具构建Android应用时,会生成一个名为classes.dex的文件,它包含了应用的字节码。当构建过程中出现了其他类库或依赖库中也存在同名的classes.dex文件时,就会出现该错误。

这个错误通常发生在以下几种情况下:

1. 重复引入相同版本的依赖库:如果在构建过程中引入了相同版本的依赖库,而这些库中都包含了同名的classes.dex文件,就会发生冲突。

2. 版本不一致的依赖库:如果两个依赖库的版本不同,但都包含了同名的classes.dex文件,也会导致冲突。

为了解决这个问题,可以尝试以下几个方法:

1. 检查依赖库版本:确保所使用的依赖库版本相同,并删除重复引入的依赖。

2. 通过构建工具排除冲突文件:可以在构建脚本中使用exclude命令,排除某个依赖库中的classes.dex文件。例如,在Gradle中可以使用以下代码:

``` groovy

implementation('com.example.library:library-name:1.0.0') {

exclude module: 'dex'

}

```

这样可以避免冲突的发生。

3. 手动解压和合并:如果上述解决方法无效,可以尝试手动解压所有依赖库中的classes.dex文件,并将它们合并为一个文件。然后将合并后的文件添加到应用中。

总之,解决entry name 'classes.dex' collided错误的关键是排除冲突文件或手动合并文件,确保构建过程中只存在一个classes.dex文件。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

林新发

CSDN认证博客专家

CSDN认证企业博客

码龄12年

Unity3D游戏开发领域优质创作者

749

原创

463

周排名

98万+

总排名

517万+

访问

等级

5万+

积分

18万+

粉丝

1万+

获赞

4180

评论

4万+

收藏

私信

关注

热门文章

Unity2019(或2020)个人版如何激活使用(不是破解,正规激活流程)

159657

gitee使用教程,创建项目仓库并上传代码

126829

【游戏开发实战】下载原神模型,PMX转FBX,导入到Unity中,卡通渲染,绑定人形动画(附Demo工程)

104184

手把手教,使用VMware虚拟机安装Windows XP系统,爷青回

100972

Unity动画状态机Animator使用

83828

分类专栏

Unity3D

480篇

git

4篇

github

4篇

Go语言

1篇

windows

20篇

C/C++

18篇

C#

74篇

android

82篇

JavaScript

9篇

web

11篇

lua

17篇

python

56篇

shader

17篇

iOS

48篇

svn

8篇

sdk

33篇

html

10篇

工具

58篇

xcode

6篇

反编译

5篇

java

15篇

系统

14篇

最新评论

手把手教,使用VMware虚拟机安装Windows XP系统,爷青回

m0_74282773:

在xp系统里不显示共享的文件夹

【游戏开发面经】我在阿里HRG面这关跪掉了,游戏客户端开发岗,总结一下(阿里 | 游戏 | 凉面面经)

阳哥大帅:

难以想象阿里想要什么样的人才,还自研游戏引擎,哪来的底气?腾讯做了这么多年还不是用unity和UE,不知道阿里凭啥这么自信。阿里本来也不是啥正经游戏公司,不去是好事。

【游戏开发实战】Unity手游第一人称视角,双摇杆控制,FPS射击游戏Demo(教程 | 含Demo工程源码)

Cv工程师w:

感觉摇杆瞄准很困难。

【游戏开发建模】教你使用Unity ProBuilder制作基础模型,搭建场景原型( 保姆级教程 | Unity 2021最新版)

落落大方.:

发哥 可以根据CAD图纸自动生成模型吗?

.NET Framework高低版本兼容问题解决办法

cs2801963000:

博主,我想请你喝咖啡

大家在看

Java----面向对象

1

Stable-Diffusion的WebUI部署实战

用Java实现五种基础排序方法

kali设置中文界面

63

逻辑代数基础(二)(卡诺图)

353

最新文章

【游戏开发答疑】马里奥派对选面积大作战玩法的功能实现(Unity | 算法 | 四邻域 | 连通块 | 面积比例分割)

【游戏开发环境】Unity使用Mac电脑开发,开发环境的搭建(Mac mini M1 | VSCode | Git | 好用工具)

【游戏开发小技】Unity中实现Dota里的角色技能地面贴花效果(URP | ShaderGraph | Decal)

2022年15篇

2021年139篇

2020年213篇

2019年267篇

2018年49篇

2017年53篇

2016年66篇

2015年54篇

目录

目录

分类专栏

Unity3D

480篇

git

4篇

github

4篇

Go语言

1篇

windows

20篇

C/C++

18篇

C#

74篇

android

82篇

JavaScript

9篇

web

11篇

lua

17篇

python

56篇

shader

17篇

iOS

48篇

svn

8篇

sdk

33篇

html

10篇

工具

58篇

xcode

6篇

反编译

5篇

java

15篇

系统

14篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

打赏作者

林新发

你的鼓励将是我创作的最大动力

¥1

¥2

¥4

¥6

¥10

¥20

扫码支付:¥1

获取中

扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

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

余额充值

不曾熟悉过的odex(编译过程) - 知乎

不曾熟悉过的odex(编译过程) - 知乎首发于Android Framework 研究室切换模式写文章登录/注册不曾熟悉过的odex(编译过程)Kelvin wu欢迎关注我的专栏https://zhuanlan.zhihu.com/kelvin-love-wmy谈到odex,之前对这个的了解:1、编译的时候针对user版本会对apk进行处理,将里面的class.dex文件拿出来单独处理为odex,apk文件中只留下一些资源文件2、第一次开机耗时会比较长,中间有大量的dex2oat的log存在,也是针对每个APK在做dex优化了解比较粗浅和模糊,没有从编译和代码层面进行过研究。从中对虚拟机相关的这块知识也有所欠缺。略去其他博客中提到的dex和odex相关的科普的知识,主要针对android系统中涉及到跟这方面相关的应用场景来分析。一、编译篇Android的编译系统本身就很庞大,弄清楚就很麻烦和吃力。所以这里直接选取一个其中的Makefile文件开始研究,避免其他编译系统知识对这个的影响,避免陷进去。这里我选取的文件是/build/core/dex_preopt.mk,一个89行的mk文件在编译系统里已经算是很精简了,可以做到一行一行来解读了。读完这个mk文件就基本能印证我提到的第一个粗浅认识了。1####################################

2# dexpreopt support - typically used on user builds to run dexopt (for Dalvik) or dex2oat (for ART) ahead of time

3#

4####################################

56# list of boot classpath jars for dexpreopt

7DEXPREOPT_BOOT_JARS := $(subst $(space),:,$(PRODUCT_BOOT_JARS))

8DEXPREOPT_BOOT_JARS_MODULES := $(PRODUCT_BOOT_JARS)

9PRODUCT_BOOTCLASSPATH := $(subst $(space),:,$(foreach m,$(DEXPREOPT_BOOT_JARS_MODULES),/system/framework/$(m).jar))

1011PRODUCT_SYSTEM_SERVER_CLASSPATH := $(subst $(space),:,$(foreach m,$(PRODUCT_SYSTEM_SERVER_JARS),/system/framework/$(m).jar))

1213DEXPREOPT_BUILD_DIR := $(OUT_DIR)

14DEXPREOPT_PRODUCT_DIR_FULL_PATH := $(PRODUCT_OUT)/dex_bootjars15DEXPREOPT_PRODUCT_DIR := $(patsubst $(DEXPREOPT_BUILD_DIR)/%,%,$(DEXPREOPT_PRODUCT_DIR_FULL_PATH))

16DEXPREOPT_BOOT_JAR_DIR := system/framework17DEXPREOPT_BOOT_JAR_DIR_FULL_PATH := $(DEXPREOPT_PRODUCT_DIR_FULL_PATH)/$(DEXPREOPT_BOOT_JAR_DIR)

1819# The default value for LOCAL_DEX_PREOPT

20DEX_PREOPT_DEFAULT ?= true2122# The default filter for which files go into the system_other image (if it is

23# being used). To bundle everything one should set this to '%'

24SYSTEM_OTHER_ODEX_FILTER ?= app/% priv-app/%

2526# The default values for pre-opting: always preopt PIC.

27# Conditional to building on linux, as dex2oat currently does not work on darwin.

28ifeq ($(HOST_OS),linux)

29WITH_DEXPREOPT_PIC ?= true30WITH_DEXPREOPT ?= true31# For an eng build only pre-opt the boot image. This gives reasonable performance and still

32# allows a simple workflow: building in frameworks/base and syncing.

33ifeq (eng,$(TARGET_BUILD_VARIANT))

34WITH_DEXPREOPT_BOOT_IMG_ONLY ?= true35endif36# Add mini-debug-info to the boot classpath unless explicitly asked not to.

37ifneq (false,$(WITH_DEXPREOPT_DEBUG_INFO))

38PRODUCT_DEX_PREOPT_BOOT_FLAGS += --generate-mini-debug-info39endif40endif4142GLOBAL_DEXPREOPT_FLAGS :=

43ifeq ($(WITH_DEXPREOPT_PIC),true)

44# Compile boot.oat as position-independent code if WITH_DEXPREOPT_PIC=true

45GLOBAL_DEXPREOPT_FLAGS += --compile-pic46endif4748# $(1): the .jar or .apk to remove classes.dex49definedexpreopt-remove-classes.dex50$(hide) zip --quiet --delete $(1) classes.dex; \

51dex_index=2; \

52whilezip --quiet --delete $(1) classes$${dex_index}.dex > /dev/null; do \

53letdex_index=dex_index+1; \

54done55endef5657# Special rules for building stripped boot jars that override java_library.mk rules

5859# $(1): boot jar module name

60define_dexpreopt-boot-jar-remove-classes.dex61_dbj_jar_no_dex := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$(1)_nodex.jar62_dbj_src_jar := $(callintermediates-dir-for,JAVA_LIBRARIES,$(1),,COMMON)/javalib.jar6364$$(_dbj_jar_no_dex) : $$(_dbj_src_jar) | $(ACP)

65 $$(callcopy-file-to-target)

66ifneq ($(DEX_PREOPT_DEFAULT),nostripping)

67 $$(calldexpreopt-remove-classes.dex,$$@)

68endif6970_dbj_jar_no_dex :=

71_dbj_src_jar :=

72endef7374$(foreach b,$(DEXPREOPT_BOOT_JARS_MODULES),$(eval $(call_dexpreopt-boot-jar-remove-classes.dex,$(b))))

7576include $(BUILD_SYSTEM)/dex_preopt_libart.mk7778# Define dexpreopt-one-file based on current default runtime.

79# $(1): the input .jar or .apk file

80# $(2): the output .odex file

81definedexpreopt-one-file82$(calldex2oat-one-file,$(1),$(2))

83endef8485DEXPREOPT_ONE_FILE_DEPENDENCY_TOOLS := $(DEX2OAT_DEPENDENCY)

86DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT := $(DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME)

87ifdefTARGET_2ND_ARCH88$(TARGET_2ND_ARCH_VAR_PREFIX)DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT := $($(TARGET_2ND_ARCH_VAR_PREFIX)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME)

89endif # TARGET_2ND_ARCH

90第1到11行:开头的注释也说明了这个主要是针对user版本编译,提前使用dexopt(针对dalvik虚拟机做dex2odex)和dex2oat(针对art虚拟机做dexoat)对apk和jar包做优化。DEXPREOPT_BOOT_JARS := $(subst $(space),:,$(PRODUCT_BOOT_JARS))将PRODUCT_BOOT_JARS中的空格替换为:boot jars应该是指开机就会加载的jar包,zygote在做preload的时候就会将这些包中的class load进去,这些jar的定义在/build/target/product/core_minimal.mk中89PRODUCT_BOOT_JARS := \

90core-oj \

91core-libart \

92conscrypt \

93okhttp \

94core-junit \

95bouncycastle \

96ext \

97framework \

98telephony-common \

99voip-common \

100ims-common \

101apache-xml \

102org.apache.http.legacy.boot这些jar包都是在机器的system/framework下的jar包,DEXPREOPT_BOOT_JARS就变为:core-oj:core-libart:conscrypt:...PRODUCT_BOOTCLASSPATH := $(subst $(space),:,$(foreach m,$(DEXPREOPT_BOOT_JARS_MODULES),/system/framework/$(m).jar))得到上面的jar包在image包中的路径PRODUCT_BOOTCLASSPATH为/system/framework/core-oj.jar:/system/framework/core-libart.jar:....PRODUCT_SYSTEM_SERVER_CLASSPATH := $(subst $(space),:,$(foreach m,$(PRODUCT_SYSTEM_SERVER_JARS),/system/framework/$(m).jar))这个是系统中承载service的jar包路径 /system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/wifi-service.jar13到17行设定了一些文件夹路径DEXPREOPT_BUILD_DIR := outDEXPREOPT_PRODUCT_DIR_FULL_PATH := out/target/product/xxx/dex_bootjarsDEXPREOPT_PRODUCT_DIR :=target/product/xxx/dex_bootjarsDEXPREOPT_BOOT_JAR_DIR := system/frameworkDEXPREOPT_BOOT_JAR_DIR_FULL_PATH := out/target/product/xxx/dex_bootjars/system/framework在编译出来结果的时候可以去最后一个文件夹路径去看看里面有什么东东19到24行默认DEX_PREOPT_DEFAULT为trueSYSTEM_OTHER_ODEX_FILTER默认为app/和priv-app/,还会进入到system分区的两个文件夹26到40行针对编译主机是linux的情况,给下面两个变量默认为trueWITH_DEXPREOPT_PIC ?= trueWITH_DEXPREOPT ?= true如果编译的是eng版本,也就是在lunch的时候得到的TARGET_BUILD_VARIANT是eng的话,就默认变量WITH_DEXPREOPT_BOOT_IMG_ONLY为true42到46行暂时略过48到55行定义的一个makefile函数:dexpreopt-remove-classes.dex注释中也很明白,去掉jar包和apk包中的classes.dex文件。这里有个dex_index,主要是针对有些apk项目过大,需要做dex分包的情况,将所有的dex全部移除掉57行到72行定义函数_dexpreopt-boot-jar-remove-classes.dex入参是boot jar的module名,例如module就是framework那么_dbj_jar_no_dex为out/target/product/xxx/dex_bootjars/system/framework/framework_nodex.jar这里还涉及到一个makefile函数 intermediates-dir-for,计算编译中间文件夹_dbj_src_jar为这些jar包在out下的中间编译目录下的javalib.jar文件然后将这些javalib.jar文件拷贝到out/target/product/xxx/dex_bootjars/system/framework/xxx_nodex.jar只要DEX_PREOPT_DEFAULT不为nostripping的话都会调用签名定义的函数,将此时这些jar包中的dex都抽离出来,使其名副其实的成为nodex.jar74行对所有的boot jar从中间文件夹中拷出来然后,抽离dex/*****************************************************************/到此,这些boot jar包的空壳子都已经就位了,但是真正的dex们都没了还玩毛线啊接下来肯定会把这些jar包中的所有dex再从中间目录中抽出来,整合为一个大的oat格式的文件/*****************************************************************/76行include了一个另外的mk文件/build/core/dex_preopt_libart.mk其内部还会include一个文件dex_preopt_libart_boot.mk,完成的就是将各个jar包的dex合成一个oat包。分析类似于这里,读者可自行分析78行到83行定义dexpreopt-one-file优化一个jar包或者apk文件85到89行关于64/32位编译相关,暂时不考虑到此就了解针对所有版本的image中的对boot jar进行odex化的操作基本原理,后续会分析针对apk的odex的预先编译优化和开机自动优化两种情况,以及apk启动时的相关加载方面的原理知识。发布于 2017-03-09 02:29Android 开发​赞同 17​​3 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录Android Framework 研究室专注研究Android Framework主

ODeX

>

ODeX

INDIA

UAE

GHANA

QATAR

BAHRAIN

KUWAIT

Nigeria

Senegal

USA

Singapore

South Africa

INDIA

UAE

USA

+ 91 9863 122 122

support@odex.co

Login

Registration

Home

Company

About Us

Careers

Company Records

Services

ODeX Export

ODeX Import

ODeX Pay Later

ODeX Integrations

ODeX Weighbridge Integration

News & Media

Blogs

News

Advisories

White Paper

ODeX Survey Report

Contact

Login

About Us

We are the first Online Document Exchange platform in the shipping industry,

hence the name OdeX. Seems pretty obvious right?

We thought so too when we up came with the idea of OdeX- A platform to make

documentation and payments easy. Sounds Easy – until reality set in– when we

almost drowned – in the sea0 of documents that needed to be managed by any

person trying to ship. In trying to build a coherent workflow that would connect

multiple stakeholders exchanging a multitude of documents. In the challenges of

ensuring that payments reach the right beneficiary, at the right time, in the right

places.

Additional Links

Log In

Registration

FAQ

Logout

Contact Info

Address

606,607, Damji Shamji Corporate Square, Ghatkopar(East), Mumbai 400 075, MH, India

Email

support@odex.co

Phone

+ 91 9863 122 122

Connect With Us

×

Search



Centralized Platform for the EXIM Community

ELectronic & Hassle-Free Way of Paying your Invoices

Our Stakeholders

Multiple Stakeholders: Single Platform

LIVE with All Major Shipping Lines, Port Terminals, CFS’s, Banks, & Weighbridges

Our Services

Discover the Power of our Integration Framework

Avoid Multiple Entry of Data for ease of transacting with Banks, ERPS, etc.

ODeX Integration

Export

Simplified Way of Processing Exports Information, Documentation & Payments

Import

Discover Simple Way of Processing Imports Information, Documents & Payments.

ERP Integration

Avoid Multiple Data Entry for Seamless Data Flow...

ODeX Pay Later

Powered by DBS

Enjoy Seamless & Hassle-Free Credit for your Import Invoices...

Weighbridge Integration

Effortless way of capturing the VGM Data under SOLAS regulation

Our Banking Partner

Our Stakeholders

00 +

Document Releasing Everyday

00 +

Shipping Lines

00 +

Freight Forwarders

00 +

Custom House Agents

00 +

Exporters & Importers

00 +

Weighbridges

Client’s Testimonials

What they say about us

- Adil Sheikh

M.D. BOX Smart Shipping Pvt. Ltd.

ODeX has made all are work automated. Everything is done Online with status update.

We are extremely happy working on ODeX

- Erric

Imports Global Cargo & Commodities Ltd. Tema, Ghana

ODeX Platform helped us to manage shipping documentation in more efficient way. Within minutes we receive our Invoices from Shipping Lines

- Joerg Sonne

Joerg Sonne Managing Director, Arabian Gulf and Pakistan, HAPAG LlYOD

We used to release hundreds of hard copies, which are now being digitized. ODeX provides an easy workflow for shipping lines and their customers with multiple payment solutions.

- Ganpat Korade

M.D, K Star Shipping Agency Pvt. Ltd.

Before ODeX, we did all of our work manually, which used to take a whole day. By addressing all concerns in less than an hour, ODeX saved our firm time and money on travel.

- Manikandan C.

Director, Afford Group

ODeX gives great support to Industry. I d like to thank Odex for their assistance in extending the digital platform, which has saved a lot of time and energy.

- M. Prema

Sr. Executive, Beekeyen Freight Services Pvt. Ltd.

ODeX made our document process easier and faster. Prior to ODeX, our work took 2 to 3 days to complete, but after ODeX, our work began to be completed in an hour.

- Rajiv Karia

Mohanlal Devji & Sons

ODeX is not just a software but a part of daily work with good customer support. ODeX made our lives easier with a single click. ODeX is the one-stop solution if you want your life to be streamlined, efficient, and more productive.

- Mahesh

Finance Department, Capeline Shipping LLC

We are happy to use ODeX as it has simplified the process. It is easy to use and reduces the waiting time from 2-3 days to 4 hours. We would recommend other lines to use ODeX

Subscribe to our latest Blogs

Subscribe

Trade Associations

AMTOI

CSLA

EIC

NISAA

WISTA

FFFAI

MaritimeSheEO

NACFS

BCCI

BCBA

DCBA

CCBA

FIEO

What We Do

Integrations

Exports

Imports

Weighbridge Integrations

Company

Blogs

ODeX Pay Later

Terms & Conditions

Privacy & Policy

Copyright 2018-2024 EA Technologies All rights reserved

An ISO 9001:2015, ISO/IEC 20000-1:2011, ISO/IEC 27001:2013 Certified Company

×

Android 系统应用解析之——odex - 九鼎煮鸡蛋 - 博客园

Android 系统应用解析之——odex - 九鼎煮鸡蛋 - 博客园

会员

周边

新闻

博问

AI培训

云市场

所有博客

当前博客

我的博客

我的园子

账号设置

简洁模式 ...

退出登录

注册

登录

九鼎煮鸡蛋

博客园

首页

新随笔

联系

订阅

管理

Android 系统应用解析之——odex

 强大的工具ES文件浏览器

 首先介绍一款比较实用的工具——ES文件浏览器(小映子推荐),当需要破解某些系统软件,而该系统还无法root时,这个软件可以轻松的获取源文件:

 它类似与文件管理器,但可以显示那些系统想隐藏而不让你看到你文件,且无需root权限。一般系统软件都存放在 system/app中,当然别忘了还有system/priv-app等,从内存中将想要的文件进行拷贝,然后黏贴到sdcard,接着通过USB调试就可以直接获取这些文件,简单易用

 优化的可运行dex——odex

 odex是从apk文件中提取出classes.dex文件,并通过优化生成一个可运行的文件单独存放

 原apk文件中的classes.dex文件可以保留,也可以删除,有时候为了混淆视听,甚至会留下残破的dex文件

 所以odex的目的一般有两个:

 1. 加快软件的启动速度,odex可预先提取(提前存储于缓存,优先级高于对应apk中的dex,有odex的情况下不会再加载其对应的dex),一般常见于系统ROM

 2. 应用保护,一般情况下有odex的应用,其对应的apk文件中只存留资源文件,或者破损的dex文件,这样在反编译的情况下得不到正确的应用数据,同时也无法安装使用

 odex的编译(odex-->smali)

 这里使用到的工具是baksmali,我下的是最新版2.2.2,首先看一下使用:

D:\baksmali>java -jar baksmali-2.2.2.jar

usage: baksmali [--version] [--help] []]

Options:

--help,-h,-? - Show usage information

--version,-v - Print the version of baksmali and then exit

Commands:

deodex(de,x) - Deodexes an odex/oat file

disassemble(dis,d) - Disassembles a dex file.

dump(du) - Prints an annotated hex dump for the given dex file

help(h) - Shows usage information

list(l) - Lists various objects in a dex file.

See baksmali help for more information about a specific command

 这里我们需要用到的就是 deodex(de,x),解析一个odex文件,下面以oppo的CloudService为例,CloudService文件夹下有一个应用程序apk,同样有一个可运行文件odex。

 用压缩软件打开apk文件可以发现,apk中并没有dex文件,当我们安装这个apk时会发生INSTALL_FAILED_DEXOPT错误,即安装包破损(这里就是缺少dex文件)

 下面首先看下解析odex:

D:\baksmali>java -jar baksmali-2.2.2.jar de C:\Users\xk\Desktop\jebpath\CloudService.odex

Error occurred while loading class path files. Aborting.

org.jf.dexlib2.analysis.ClassPathResolver$ResolveException: org.jf.dexlib2.analysis.ClassPathResolver$NotFoundException: Could not find classpath entry boot.oat

at org.jf.dexlib2.analysis.ClassPathResolver.(ClassPathResolver.java:145)

at org.jf.dexlib2.analysis.ClassPathResolver.(ClassPathResolver.java:105)

at org.jf.baksmali.AnalysisArguments.loadClassPathForDexFile(AnalysisArguments.java:129)

at org.jf.baksmali.AnalysisArguments.loadClassPathForDexFile(AnalysisArguments.java:86)

at org.jf.baksmali.DisassembleCommand.getOptions(DisassembleCommand.java:207)

at org.jf.baksmali.DeodexCommand.getOptions(DeodexCommand.java:71)

at org.jf.baksmali.DisassembleCommand.run(DisassembleCommand.java:181)

at org.jf.baksmali.Main.main(Main.java:102)

Caused by: org.jf.dexlib2.analysis.ClassPathResolver$NotFoundException: Could not find classpath entry boot.oat

at org.jf.dexlib2.analysis.ClassPathResolver.loadLocalOrDeviceBootClassPathEntry(ClassPathResolver.java:216)

at org.jf.dexlib2.analysis.ClassPathResolver.(ClassPathResolver.java:120)

... 7 more

 出错了。。。正常,看日志可以发现,是缺少boot.oat这个文件,这个文件在手机系统的system/framework/arm中,拿出这个文件,放到baksmali文件同目录下,再次执行

D:\baksmali>java -jar baksmali-2.2.2.jar de C:\Users\xk\Desktop\jebpath\CloudService.odex

D:\baksmali>

 在baksmali同目录下有一个out文件夹,里面存放的就是对应的smali文件

 1. 如果是根据smali进行静态分析,到这一步就可以了

 2. 如果需要分析Java代码,首先利用smali软件将out文件夹中的smali文件转换成dex文件,之后可以使用dex2jar或jeb等软件进行分析(jeb的话将dex直接塞到apk中替换原dex即可)

  D:\baksmali>java -jar smali-2.2.2.jar a out -o classes.dex 

 3. 如果是需要安装apk,光把dex塞入apk还不行,会产生INSTALL_PARSE_FAILED_NO_CERTIFICATES错误,需要利用signapk来重新进行签名

  D:\signapk>signapk CloudService.apk 111.apk 

 4. 如果你安装的apk出现闪退,报错,卡死等等,那么恭喜你,你遇到反调了,这个就不再本文讲述范围了

 

 

 

 

posted @

2017-11-10 09:55 

九鼎煮鸡蛋 

阅读(6723) 

评论(0) 

编辑 

收藏 

举报

会员力量,点亮园子希望

刷新页面返回顶部

公告

Copyright © 2024 九鼎煮鸡蛋

Powered by .NET 8.0 on Kubernetes

odextools 优化过的Android 的 Odex 、Apk 合并工具 - 『精品软件区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

odextools 优化过的Android 的 Odex 、Apk 合并工具 - 『精品软件区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

官方bilibiliWindows破解入门Android逆向入门

【清理未活跃会员】【网络诊断修复工具】切换到窄版

请 登录 后使用快捷导航没有帐号?注册[Register]

帐号

自动登录

 找回密码

密码

登录

 注册[Register]

只需一步,快速开始

快捷导航

门户Portal网站www新帖论坛最新帖子一览无余!搜索站内搜索专辑Collection排行榜Ranklist总版规爱盘在线破解工具包,实时提供最新逆向资源!帮助Help

关注人的新帖技术新帖合集最新软件合集原创发布新贴脱壳破解新帖移动安全新帖病毒分析新帖软件调试新贴动画发布新帖编程语言新帖邀请好友注册Tools吾爱破解Logo吾爱破解桌面壁纸吾爱破解视频教程吾爱破解论坛精华集吾爱破解专用版Ollydbg处理举报贴处理站务贴处理福利贴处理水区贴办公区证据区

原创发布区

精品软件区

逆向资源区

水漫金山区

病毒救援区

福利经验区

脱壳破解区

移动安全区

病毒分析区

编程语言区

动画发布区

安全工具区

站点公告

站点导航

站点总版规

申请专区

招聘求职

违规怎么办

站点帮助

站务处理

搜索

搜索

热搜:

ctf

新手

脱壳

教程

Crackme

本版用户

挣悬赏

未完结

撤销悬赏

吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn»网站 › 【 软件安全 】 › 『精品软件区』 › odextools 优化过的Android 的 Odex 、Apk 合并工具

返回列表

查看: 5796|回复: 1

[Windows]

odextools 优化过的Android 的 Odex 、Apk 合并工具

 

[复制链接]

zfaidz

zfaidz

当前离线

好友

阅读权限10

听众

最后登录1970-1-1

电梯直达

楼主

zfaidz

发表于 2020-2-26 18:44

一、序言

目前网络上存在大量的 odex 和 apk 的合并工具,PC端常用的也就以下几种:baksmali.jar、SVADeodexerForArt。

不过,对于Android 5.1来产,baksmali.jar 不支持,提示“Unsupported oat version: 45”,其作者JesusFreke回应“I don't have a solution.”。而对于宣称支持Android 5.0 ~ 7.0 的 SVADeodexerForArt 5.5 来说,表现也不尽如人意,在已经安装 java 1.8 的情况下,出现错误提示“ 32-bit Deodexer for Android Runtime"。

我的操作系统是 WIN10 LTSB 2016的,要合并的 odex 和 Apk来自 Android TV,能找的到的工具,没有一个能够成功合并的。于是,我把找到的工具 odextools 作了修改。感谢”一键odex批量合并工具odextools“、oat2dex 及相关的作者的工作,我在他们的基础上对批处理脚本做了修改。

二、修改的地方

(1)把原来的odex 变换成 dex 的核心,从 baksmali.jar 换成了 oat2dex.jar

(2)批处理脚本里面,原来的只能重 apk 和 odex 在同一目录的情况下,这种处理方法会漏掉带有 so 动态链接库的 apk。比如下面这种情况,原来的脚本就没有办法处理:

      Bluetooth

      │  Bluetooth.apk

      │  

      ├─arm

      │      Bluetooth.odex

      │      

      └─lib

          └─arm

                  libbluetooth_jni.so            

(3)修改后的批处理脚本,不需要手动把 apk 和 odex 剪切到 romdir/system/app 目录下

三、运行示例:

(1)odex 和 apk 合并

Snipaste_2020-02-25_13-13-27.png (18.64 KB, 下载次数: 3)

下载附件

2020-2-26 17:43 上传

Snipaste_2020-02-25_13-13-16.png (24.91 KB, 下载次数: 1)

下载附件

2020-2-26 17:43 上传

Snipaste_2020-02-25_13-13-48.png (16.05 KB, 下载次数: 0)

下载附件

2020-2-26 17:44 上传

Snipaste_2020-02-25_13-14-03.png (36.3 KB, 下载次数: 0)

下载附件

2020-2-26 17:44 上传

(2)bluetooth 合并前、合并后分别打开的目录结构

Snipaste_2020-02-25_13-16-54.png (65.54 KB, 下载次数: 1)

下载附件

2020-2-26 17:44 上传

Snipaste_2020-02-26_12-28-22.png (15.66 KB, 下载次数: 0)

下载附件

2020-2-26 17:44 上传

Snipaste_2020-02-26_12-28-49.png (18.38 KB, 下载次数: 1)

下载附件

2020-2-26 17:44 上传

(2)AndoridKiller 反编译

改动后的脚本,经过 AndroidKiller 反编译,是正常的。

Snipaste_2020-02-26_17-43-33.png (90.13 KB, 下载次数: 0)

下载附件

2020-2-26 17:49 上传

四、odextools 下载链接

百度云 链接: https://pan.baidu.com/s/1_L6sUmNRTtkzo-AQyGM7iw 提取码: qhab

OneDrive 链接: https://1drv.ms/u/s!Ak-U0csUCLFdg1DjMBPSjPyHS4-H

如果谁愿意,请帮我放在蓝奏云。

Snipaste_2020-02-25_13-14-18.png

(42.88 KB, 下载次数: 1)

下载附件

2020-2-26 17:44 上传

Snipaste_2020-02-25_13-14-48.png

(42.06 KB, 下载次数: 3)

下载附件

2020-2-26 17:44 上传

Snipaste_2020-02-26_12-28-21.png

(15.38 KB, 下载次数: 2)

下载附件

2020-2-26 17:44 上传

Snipaste_2020-02-26_17-43-33.png

(90.13 KB, 下载次数: 3)

下载附件

2020-2-26 17:44 上传

免费评分

参与人数 2吾爱币 +1

热心值 +2

收起

理由

MockingJay

+ 1

谢谢@Thanks!

chenfilkman

+ 1

+ 1

谢谢@Thanks!

查看全部评分

收藏10

淘帖0

有用1

分享到朋友圈

发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

回复

举报

wangtc2009

wangtc2009

当前离线

好友

阅读权限10

听众

最后登录1970-1-1

沙发

wangtc2009

发表于 2020-2-27 23:40

谢谢分享。。

【吾爱破解论坛总版规】 - [让你充分了解吾爱破解论坛行为规则]

回复

支持

举报

返回列表

高级模式

B

Color

Image

Link

Quote

Code

Smilies

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

发表回复

提醒:禁止复制他人回复等『恶意灌水』行为,违者重罚!

回帖并转播

回帖后跳转到最后一页

免责声明:吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Service@52pojie.cn

快速回复

收藏帖子

返回列表

搜索

关注微信

微信签到每天都送论坛币!

个人中心

个人中心

登录或注册

返回顶部

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG

( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-3-7 19:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复

返回顶部

返回列表

第四章 常见的 Android 文件格式(六)(ODEX)_android 手动生成vdex和odex-CSDN博客

>

第四章 常见的 Android 文件格式(六)(ODEX)_android 手动生成vdex和odex-CSDN博客

第四章 常见的 Android 文件格式(六)(ODEX)

最新推荐文章于 2022-09-27 18:11:46 发布

VIP文章

zlmm741

最新推荐文章于 2022-09-27 18:11:46 发布

阅读量1k

收藏

1

点赞数

1

分类专栏:

《Android 软件安全权威指南》学习笔记

文章标签:

android

安全

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/zlmm741/article/details/104758848

版权

文章目录

ODEX

生成 ODEX 文件

ODEX 文件格式

将 ODEX 文件转换成 DEX 文件

ODEX

在 Android 5.0 前,主要使用的虚拟机是 Dalvik。当 APK 首次安装,或系统升级、重新启动时,为提高 DEX 的执行效率,Dalvik 会对 APK 中的 DEX 进行一定程度的优化。具体做法:解析 DEX 并生成一个 ODEX 文件,将其存放在 Android 设备的 /data/dalvikcache 目录下。以后在运行这个程序时,就不会读取 APK 中的 DEX,而是直接加载这个优化过的 ODEX,从而大大节省每次运行程序时在优化上花费的时间

生成 ODEX 文件

系统生成 ODEX 的方法是内部调用系统命令 dexopt。此命令不允许直接调用生成 ODEX,但 Android 在 Dalvik 时代的早期版本中,会在系统源码的 build/tools/dexpreopt/dexopt-wrapper 目录下提供 dexopt-wrapper 工具,可用于手动生成 ODEX

以 Crackme0201 为例,除了在 /data/dalvik-cache 目录下直接拿到 ODEX,也可执

最低0.47元/天 解锁文章

优惠劵

zlmm741

关注

关注

1

点赞

1

收藏

觉得还不错?

一键收藏

知道了

0

评论

第四章 常见的 Android 文件格式(六)(ODEX)

文章目录ODEX生成 ODEX 文件ODEX 文件格式将 ODEX 文件转换成 DEX 文件ODEX在 Android 5.0 前,主要使用的虚拟机是 Dalvik。当 APK 首次安装,或系统升级、重新启动时,为提高 DEX 的执行效率,Dalvik 会对 APK 中的 DEX 进行一定程度的优化。具体做法:解析 DEX 并生成一个 ODEX 文件,将其存放在 Android 设备的 /d...

复制链接

扫一扫

专栏目录

dex和odex文件格式详解资料

09-23

dex和odex文件格式详解资料

odex生成器

12-09

自制ROM,生成与apk文件对应的odex文件,让Rom更稳定,运行更快,更省电!

参与评论

您还未登录,请先

登录

后发表或查看评论

Android杂项

jinganggiao的博客

09-27

638

当java程序编译成class后,还需要使用dx工具将所有的class文件整合到一个dex文件,目的是其中各个类能够共享数据,在一定程度上降低了冗余,同时也是文件结构更加经凑,实验表明,dex文件是传统jar文件大小的50%左右。最开始ART只采用AOT编译,在App安装时就编译所有代码存储在本地,打开App直接运行,这样做的优点是应用运行速度变快,缺点也很明显,App安装时间明显变长,而且占用存储空间较大。1.作用:初始化时间,时区,语言等;第一页为0,第二页为10,第三页为20,类推。

5.2 odex文件

weixin_30907523的博客

06-03

228

odex是OptimizedDEX的缩写,是优化过的dex文件

odex两种存在方式:

1.从apk程序中提取,和apk文件放在一起,后缀odex,此类文件多是AndroidRom系统文件

2.在cache/dalvik-cache缓存文件,后缀dex

a)Eg:system@app@calcuator.apk@classes.dex安装在/system/a...

.odex文件的反编译

wenrennaoda的专栏

01-09

4409

0x00 问题呈现

在分析某手机自带应用时,为了在JEB中反编译,将其adb pull到了电脑上。解压后发现如下文件:

APK解压目录列表

惊奇的发现该APK包中没有dex文件,一开始特别疑惑没有dex文件,也就是没有代码,那是如何运行的呢?

其实APK文件中的dex文件被odex化了,该处理方式有以下好处:

odex是从apk文件中提取出classes.dex文件,并通过优化生成一个...

【Android安全】vdex、odex文件

Juruo@Security

08-14

2711

Android中的ODEX文件

android odex版本调试_Android开发调试工具ADB的使用

weixin_39831170的博客

12-19

126

ADB(Android Debug Bridge)是Android SDK中的一个工具, 使用ADB可以直接操作管理Android模拟器或者真实的Andriod设备。ADB主要功能有:1、在Android设备上运行Shell(命令行)2、管理模拟器或设备的端口映射3、在计算机和设备之间上传/下载文件4、将电脑上的本地APK软件安装至Android模拟器或设备上1、在使用ADB之前首先看看你的Ecl...

android odex 作用,Android ROM中Odex文件的作用及介绍

weixin_36448411的博客

05-26

780

细心的网友可能发现Android的ROM中有很多odex文件,相对于 APK中的dex文件而言这个odex有什么作用呢?Android123提示大家,如果你仔细观察会发现文件名时一一对应的,同时那些对应的apk文件中没有dex文件。这样做可以使其厂商保证一定的反盗版,因为没有没有dex文件的apk是无法正常安装的,而厂商直接将odex和不完整的apk文件放到手机rom固化到/system/bin中...

Android dex、odex、oat、vdex、art区别

Android系统攻城狮

11-30

6098

1.dex

java程序编译成class后,dx工具将所有class文件合成一个dex文件,dex文件是jar文件大小的50%左右.

2.odex(Android5.0之前)全称:Optimized DEX;即优化过的DEX.

Android5.0之前APP在安装时会进行验证和优化,为了校验代码合法性及优化代码执行速度,验证和优化后,会

产生ODEX文件,运行Apk的时候,直接加载ODEX,避...

Android的.dex、.odex与.oat文件扫盲

热门推荐

linxinfa的专栏

07-29

1万+

文章目录一、前言,发现新玩意二、.dex、.odex与.oat文件介绍1、dex文件2、vdex文件3、odex文件4、oat文件

一、前言,发现新玩意

最近Unity项目打出的Android包在红米Note4真机上运行闪退了,查看日志如下:

07-28 17:56:49.623 7368 7368 D YSDK d.OnSupport: Device OAID loadSuccesstrue

07-28 17:56:49.623 7368 7416 F libc : Fatal signa

android 反编译 逆向 vdex2dex odex2dex

02-23

android 反编译 逆向 vdex2dex odex2dex 查看app源代码

Android 5.0 odex合并apk

10-30

提取ROM内 framework 、app 、priv-app 存于一个文件夹内 打开软件,点击Browse 选择该文件夹 Start Process 耐心等待软件自动完成

android8.0 odex2dex.rar

05-14

安卓8.0之后odex转dex命令转不出文件,报错缺失vdex文件,这里需将命令修改之后可实现odex转dex

基于odex文件结构的Android程序逆向分析方法.pdf

09-21

基于odex文件结构的Android程序逆向分析方法.pdf

Android安卓 系统ODEX优化代码

08-21

Android系统中运行的程序包主要分framework,system/app,data/app,三个路径,开机的时候启动内核后,就会逐个启动framework里的jar框架程序,再启动system/app的开机自启程序。 如果你想把整个ROM都odex化,就必须先...

关于android中odex与apk 的合并

11-21

关于android中odex与apk 的合并,反编译下别人的apk来学习学习

ODEX格式全解析图

11-22

ODEX格式全解析图,留做存档~~~~~。。。。。。。。。。。。。。

oat2dexes:从 Android ART .oat.odex 文件中提取 .dex 文件

07-10

从 Android ART .oat/.odex 文件中提取 .dex 文件 这个怎么运作? DEX 文件嵌入在 Android ART .oat/.odex 文件中。 oat2dexes寻找 DEX 魔法“dex\n035\0”。 如何使用? $ file file.odex file.odex: ELF 32-bit...

check_odex.tar.gz_android

09-21

检查 Android ODEX 文件是否正确

android odex vdex

最新发布

06-09

在 Android 中,应用程序的代码通常是以 dex 文件(Dalvik Executable)的形式存在的。dex 文件是一种专门用于 Android 平台的可执行文件格式,它是由 Java 编译器编译出的 Java 字节码经过转换后得到的。在 Android 系统中,应用程序安装后,系统会对应用程序的 dex 文件进行优化,以提高应用程序的运行效率和启动速度。这个优化过程就是 odex(Optimized DEX)。

odex 是指优化后的 dex 文件,它会被转换成一种专门用于 Android 平台的二进制文件格式。在这个过程中,系统会对 dex 文件进行预处理、优化和打包,生成对应的 odex 文件。odex 文件包含了 dex 文件中的指令和数据,并且根据不同的 CPU 架构生成了对应的本地机器指令。

另一方面,vdex 格式是 Android Oreo 引入的新的 dex 优化格式,相比之前的 odex 格式,vdex 格式具有更好的兼容性和可扩展性。vdex 文件包含了 dex 文件的元信息和优化后的指令,同时也支持多个 dex 文件共享一个 vdex 文件。这样,每个应用程序只需要保存一个 vdex 文件和多个 dex 文件,就可以在不同的 Android 设备上进行兼容和迁移。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

zlmm741

CSDN认证博客专家

CSDN认证企业博客

码龄5年

暂无认证

58

原创

4万+

周排名

179万+

总排名

10万+

访问

等级

1675

积分

174

粉丝

85

获赞

25

评论

231

收藏

私信

关注

热门文章

第四章 常见 Android 文件格式(二)(classes.dex)

5358

第七章 ARM 反汇编基础(四)(ARM 汇编语言)

5010

第七章 ARM 反汇编基础(七)(AArch64 汇编指令集)

4189

第十章 Hook 与注入(五)(注入框架 Frida)

4024

第七章 ARM 反汇编基础(六)(Thumb 汇编指令集)

3853

分类专栏

病毒分析

1篇

《Android 软件安全权威指南》学习笔记

52篇

Android 逆向学习笔记

1篇

环境或工具配置

2篇

最新评论

第五章 静态分析 Android 程序(五)(使用 IDA Pro 进行静态分析)

risuxx:

大佬,这个代码是怎么编译成功呀,我gradle-3.3-all.zip和jdk8,编译疯狂报错

第四章 常见的 Android 文件格式(七)(OAT)

17231:

请问multidex对dex2oat有影响么

第九章 Android 原生程序动态调试(二)(lldb 调试器)

cengdong:

系统app想要debug 里面的so代码,但是Android studio又没法编译,能有什么办法?

第八章 Android 原生程序开发与逆向分析(五)(原生 C 程序逆向分析)

「已注销」:

这三条指令的第一条和第三条相同,sp 的值没变化,怎么看都是重复了

这三条命令应该是i=0,s=0,以及for循环里面的i=0吧,这里有两个i=0,所以重复了两次第一和第三 条指令

第七章 ARM 反汇编基础(四)(ARM 汇编语言)

「已注销」:

我当初以为你是机器人,没想到你有其他话说的

最新文章

熊猫烧香病毒分析

第十二章 软件壳(五)(代码混淆壳)

第十二章 软件壳(四)(代码抽取型壳)

2020年58篇

目录

目录

分类专栏

病毒分析

1篇

《Android 软件安全权威指南》学习笔记

52篇

Android 逆向学习笔记

1篇

环境或工具配置

2篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

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

余额充值

ODEX格式及生成过程-腾讯云开发者社区-腾讯云

格式及生成过程-腾讯云开发者社区-腾讯云用户2930595ODEX格式及生成过程关注作者腾讯云开发者社区文档建议反馈控制台首页学习活动专区工具TVP最新优惠活动文章/答案/技术大牛搜索搜索关闭发布登录/注册首页学习活动专区工具TVP最新优惠活动返回腾讯云官网用户2930595首页学习活动专区工具TVP最新优惠活动返回腾讯云官网社区首页 >专栏 >ODEX格式及生成过程ODEX格式及生成过程用户2930595关注发布于 2018-08-23 10:07:311.5K0发布于 2018-08-23 10:07:31举报文章被收录于专栏:difcareer的技术笔记difcareer的技术笔记Apk在安装(installer)时,就会进行验证和优化,目的是为了校验代码合法性及优化代码执行速度,参见Dalvik Optimization and Verification Withdexopt。验证和优化后,会产生ODEX文件,运行Apk的时候,直接加载ODEX,避免重复验证和优化,加快了Apk的响应时间。先来看一张ODEX文件的结构图:ODEX文件的结构图下面将围绕这张图,结合dexopt的代码,说明ODEX的生成过程。一. 首先将一个空的DexOptHeader写入ODEX文件dexOptCreateEmptyHeader(cacheFd)复制二. 从Apk中提取classes.dex,追加到ODEX文件dexZipExtractEntryToFile(&zippy, zipEntry, cacheFd)复制此时文件结构是这样的:三. 修改Dex内容rewriteDex(((u1*) mapAddr) + dexOffset, dexLength, doVerify, doOpt, &pClassLookup, NULL)复制这一步是验证和优化的核心,具体见:verifyAndOptimizeClasses(pDvmDex->pDexFile, doVerify, doOpt)

...

verifyAndOptimizeClass(pDexFile, clazz, pClassDef, doVerify, doOpt)

...

dvmVerifyClass(clazz)

...

dvmOptimizeClass(clazz, false)复制其中dvmVerifyClass和dvmOptimizeClass都是针对类中的方法,具体做了哪些事情参考源码。四. 因为3修改了Dex内容,所以要重新计算Dex的checksumupdateChecksum(dexAddr, dexLength, pHeader)复制五. 往ODEX文件后面追加Dependenices内容writeDependencies(fd, modWhen, crc)复制所谓的Dependenicies,是指Dex文件之间的依赖,比如App会依赖于framework的Dex。当framework的Dex发生变化时,App的ODEX文件将失效,需要重新生成。

writeDependencies中将bootclasspath下的dex文件都加入到依赖中。

此时文件结构是这样的:六. 将优化的其他内容追加到ODEX文件writeOptData(fd, pClassLookup, pRegMapBuilder)复制其中按照不同类型的内容,分为三个chunk写入:writeChunk(fd, (u4) kDexChunkClassLookup, pClassLookup, pClassLookup->size)

writeChunk(fd, (u4) kDexChunkRegisterMaps, pRegMapBuilder->data, pRegMapBuilder->size)

writeChunk(fd, (u4) kDexChunkEnd, NULL, 0)复制此时的文件结构是这样的:其中:dexCreateClassLookup(pDvmDex->pDexFile)复制此处根据Dex生成了pClassLookup,pClassLookup你可以简单理解为一张hash表,里面保存了classDescriptor到classDef的映射。dvmGenerateRegisterMaps(pDvmDex)复制此处根据DvmDex生成了RegisterMaps,RegisterMaps的作用是为了标记方法中寄存器引用的对象,在快速GC时,不会释放这些对象。具体参考Dalvik虚拟机中RegisterMap结构解析七. 根据所有的内容,改写第一步中DexOptHeader的相关字段值。至此,ODEX文件完整生成。参考资料:Dalvik Optimization and Verification WithdexoptAndroid系统ODEX文件格式解析Dalvik虚拟机中RegisterMap结构解析本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。 原始发表:2016.06.12 ,如有侵权请联系 cloudcommunity@tencent.com 删除前往查看其他本文分享自 作者个人站点/博客 前往查看如有侵权,请联系 cloudcommunity@tencent.com 删除。本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!其他评论登录后参与评论0 条评论热度最新登录 后参与评论推荐阅读LV.关注文章0获赞0领券社区专栏文章阅读清单互动问答技术沙龙技术视频团队主页腾讯云TI平台活动自媒体分享计划邀请作者入驻自荐上首页技术竞赛资源技术周刊社区标签开发者手册开发者实验室关于社区规范免责声明联系我们友情链接腾讯云开发者扫码关注腾讯云开发者领取腾讯云代金券热门产品域名注册云服务器区块链服务消息队列网络加速云数据库域名解析云存储视频直播热门推荐人脸识别腾讯会议企业云CDN加速视频通话图像分析MySQL 数据库SSL 证书语音识别更多推荐数据安全负载均衡短信文字识别云点播商标注册小程序开发网站监控数据迁移Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有 深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569腾讯云计算(北京)有限责任公司 京ICP证150476号 |  京ICP备11018762号 | 京公网安备号11010802020287问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档Copyright © 2013 - 2024 Tencent Cloud.All Rights Reserved. 腾讯云 版权所有登录 后参与评论00

ODEX_百度百科

ODEX_百度百科

Beta

進入詞條

清除歷史記錄關閉

反饋

分享

複製鏈接

請複製以下鏈接發送給好友

https://baike.baidu.hk/item/ODEX/10322643

複製

複製成功

ODEX

鎖定

ODEX是安卓上的應用程序apk中提取出來的可運行文件,即將APK中的classes.dex文件通過dex優化過程將其優化生成一個·odex文件單獨存放,原apk文件中的classes.dex文件可以保留,也可以刪除。

中文名

ODEX

類    型

可運行文件

説    明

安卓上的應用程序apk

功    能

加快軟件的啓動速度

目錄

1

定義

2

作用

3

效果

4

優點

5

缺點

ODEX定義

這樣做可以加快軟件的啓動速度,預先提取,減少對RAM的佔用,因為沒有odex的話,系統要從apk包中提取dex再運行。

ODEX作用

所謂Odex,是由android軟件中的classes.dex生成的,Odex化即是把那個文件預先提取出來作用是能加快軟件加載速度和開機速度。不過Odex也有缺點,那就是有時候加刷東西會出現問題。簡單説,原本系統恢復出廠設置後第一次開機需要先提取classes.dex出來,而Odex化就是你提前把它提取出來了。系統啓動或者程序運行加快的原因也就在此。並且將dex變為odex還可以節省空間,因為提取後可以把apk內的dex刪除。如果不odex,那麼系統還是會自動提取dex,這時不僅apk內有dex,/data/dalvik-cache目錄下也有dex,雖然apk內的dex經過壓縮了,但是兩份dex的總體積已經大於一份odex的體積了。

ODEX效果

Odex化後系統啓動和程序運行速度大大提高,穩定性不變。因此推薦做Odex化。一般來説官方rom都是odex化的rom(含Odex文件),而定製rom大部分都是deodex化的(無odex文件)。兩者應該各有優點吧,貌似也沒有統一的説法。官方rom大部分每個apk對應一個.odex文件,而deodex化的rom裏面只有一個apk,把.odex轉換成classes.dex放到apk包裏面了。所以 odex rom的.apk+.odex=deodex化rom的1個.apk (簡單地來説,其實就上一個合併的過程)

ODEX優點

1.刷完機首次進入系統的時間會縮短一些。文件的運行速度應該也有所提升。2.APK文件不能單獨安裝,並且如果反編譯APK文件,一般也只能得到資源文件。可以説是起到一定的保護作用,避免被肆意修改和使用。這樣做可以使其廠商保證一定的反盜版,因為沒有dex文件的apk是無法正常安裝的。3.會增加一些可安裝應用的空間,雖然不是很多。4.某些機身內存太小的手機優化的時候可以刪除dex文件來達到製作大內存包的目的,但是這種大內存包會使手機軟件啓動速度變慢。適合不追求速度,需要更多內存裝軟件的用户。

ODEX缺點

1.不方便修改ROM以及文件本身。2.增加ROM包的體積,雖然不是很多。3.當你升級某個被Odex的應用後,這個應用將會出現故障,最常見的就是FC(在android系統裏,運行程序的時候彈出一個對話框,強制關閉)。

圖集

ODEX的概述圖(2張)

詞條統計

瀏覽次數:次

編輯次數:32次歷史版本

最近更新:

D阳光明媚J

(2022-05-24)

1

定義

2

作用

3

效果

4

優點

5

缺點

百科協議    隱私協議    意見反饋

Beta

進入詞條

清除歷史記錄關閉

反饋

登錄

Home - ODEX - 堂島取引所 Osaka Dojima Exchange

Home - ODEX - 堂島取引所 Osaka Dojima Exchange

堂島取引所について

会社情報

ビジョン

デリバティブ発祥の地“堂島”

電子公告

先物取引のご案内

商品先物取引ガイド

取引をはじめるには

取引資格の取得について

取引参加者名簿

公式アカウント一覧

上場商品について

白金

とうもろこし50

米国産大豆

小豆

粗糖

主要規則等

取引関連データ

相場情報

ヒストリカルデータ

取引所日報

価格調整表

指定倉庫一覧

日程一覧表

立会によらない取引

制限幅

受渡明細

有料会員専用情報

採用情報

新卒採用

キャリア採用

お問い合わせ

English

Connect The Future

世界に伍する総合取引所への挑戦

堂島取引所のビジョン

Vision

会社情報

About Us

インフォメーション

Information

ODEXからのお知らせ

マーケットニュース

サイト更新情報

2024.02.21

Press

米の先物取引の本上場に係る認可申請について

2024.01.04

Press

令和6年能登半島地震にかかる災害等に遭われた皆さまへ

2024.01.01

Press

年頭所感

2023.12.22

Press

年末年始営業日のご案内

2023.11.22

Press

貴金属市場価格情報の日本経済新聞への掲載開始について

一覧を見る

2024.02.26

Info

小豆、米国産大豆の2月限受渡明細を更新しました

2024.02.15

Info

とうもろこし50の2024年3月限受渡明細を更新しました

2024.01.26

Info

小豆の1月限受渡明細を更新しました

2023.12.20

Info

小豆、米国産大豆の12月限受渡明細を更新しました

2023.12.15

Info

とうもろこし50の2024年1月限受渡明細を更新しました

一覧を見る

2024.01.18

Update

「取引参加者名簿」のページを更新しました

2023.11.22

Update

11月20日の立会をもちまして、「新潟コシEXW」は取引終了となりましたので、関連情報掲載ページを削除、変更致しました。

2023.11.22

Update

「主要規則等」のページを更新しました

2023.11.22

Update

「取引参加者名簿」のページを更新しました

2023.07.03

Update

「取引参加者名簿」のページを更新しました

一覧を見る

上場商品のご案内

Service

上場商品について

取引資格の取得について

主要規則等

取引関連データ

相場情報

ヒストリカルデータ

Home

堂島取引所について

先物取引のご案内

上場商品について

主要規則等

取引関連データ

採用情報

取引参加者専用ページ

ザラバシステム資料室

関連リンク

個人情報保護

免責事項

サイトマップ

お問い合わせ

English

先物相場情報

堂島取引所公式X (旧Twitter)

堂島取引所公式Facebook

本社

〒550-0011 大阪府大阪市西区阿波座1丁目10番14号

TEL:06-6531-7931(代表)

東京支社

〒103-0025 東京都中央区日本橋茅場町2丁目7番4号Aster茅場町4F

TEL:03-5847-7002(代表)

© 株式会社堂島取引所