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