apk、dex、odex梳理

APK(Android package):android安装包,由aapt(Android Assert Packaging Tool)把AndroidManifest.xml、资源文件、dex(二进制字节码)文件组合而成。将apk文件修改扩展名为rar,然后解压可已看到目录如下:


apk、dex、odex梳理_第1张图片

METE-INF:存放应用签名证书等信息

res:存放资源文件

AndroidManifest.xml:应用配置文件

classes.dex:应用程序二进制字节码文件

resources.arsc:二进制资源文件


dex(Dalvik VM Excutors):Dalvik虚拟机执行程序,执行前需要优化。


odex(optimizy Dalvik VM Excutors):Dalvik虚拟机执行程序dex文件前,系统会对dex文件做优化,生成可执行文件odex,保存到data/dalvik-cache目录,最后把apk文件中的dex文件删除。

优点:

1.减少了启动时间(省去了系统第一次启动应用时从apk文件中读取dex文件,并对dex文件做优化的过程。)和对RAM的占用(apk文件中的dex如果不删除,同一个应用就会存在两个dex文件:apk中和data/dalvik-cache目录下)。

2.防止第三方用户反编译系统的软件(odex文件是跟随系统环境变化的,改变环境会无法运行;而apk文件中又不包含dex文件,无法独立运行)。


缺点:

1.占用一定的rom,但不是太大

2.不便修改rom及文件(不是太懂)

3.升级被odex的应用,容易出现FC(弹出提示框“等待”或“关闭”)


deodex:第三方的rom,基本上都是deodex的,即apk中直接包含.dex文件,启动应用时从apk中读取dex文件并对之odex优化。

优点:

1.减少rom的占用(没有保存dex到data/dalvik-cache)

2.便于rom的个性化定制和移植;

3.apk便于反编译和修改(升级时不会因为文件位置问题导致FC)


缺点:

1.启动较慢,每次启动应用都要从apk文件中解析dex文件




你可能感兴趣的:(Android,odex,dex)