编译源代码的时候会要执行下面的命令:
1.source build/envsetup.sh
envsetup.sh这个编译脚本就位于/build/envsetup.sh中
2.choosecombo根据这个脚本中会让用户选择user/eng模式。
要了解Android编译选项eng、user和userdebug的区别,需先了解下LOCAL_MODULE_TAGS这个配置项,在之前的博客中有提到过,该配置项处于Android.mk文件中,一般配置形式为LOCAL_MODULE_TAGS := user eng optional test那么LOCAL_MODULE_TAGS设置为不同的值有什么作用呢?
user:只有在user版本时该模块才被编译进去;
eng:只有在eng版本时该模块才被编译进去;
test:只有在test版本时该模块才被编译进去; ——用得很少
optional:在所有版本中该模块都被编译进去。
当然其中的值也可以设置多选,那么eng、user、userdebug它们的区别在哪里呢?
选择不同的模式,编译到系统中的内容会有所区别,一般user模式下,一个应用模块会被打包成apk和odex;在eng模式下,只会生成一个apk文件。那么odex文件很明显是被优化过的文件,但有时候优化之后也会产生一些异常,通常可以在配置文件envsetup.sh中set_stuff_for_environment()函数中添加export DISABLE_DEXPREOPT=true来避免
function set_stuff_for_environment()
{
settitle
setpaths
set_sequence_number
# Don't try to do preoptimization until it works better on OSX.
export DISABLE_DEXPREOPT=true
export ANDROID_BUILD_TOP=$(gettop)
}
odex是同名apk经系统优化后的dex文件,原生ROM中apk和odex文件是配对的,对应的apk文件中没有了dex(比正常可安装的apk小)。
这样的好处:
1.加快程序的装载与运行
2.防止系统程序的简单复制,针对不同的ROM,odex文件是变化的,不可混用的,否则程序就不能政策运行。与odex配对的apk文件又因为缺少dex无法单独安装和使用。
3.节省data分区资源(这个我的理解是原始apk解压需要占用data分区资源,odex可直接执行)
分享到:
相关推荐
在Android系统中,Dalvik虚拟机执行的字节码文件通常是.dex格式,而优化后的.dex文件则被称为.odex文件。这种文件格式优化了代码执行效率,但同时也使得直接阅读和理解代码变得更加困难。这时,我们就需要用到反编译...
在Android系统中,`odex`(Optimized Dalvik Executable)文件是Dalvik虚拟机执行的优化后的字节码,它是对`.dex`(Dalvik Executable)文件的进一步处理结果。`odex`文件通常包含应用程序的类定义、方法体和其他...
在Android系统中,`.odex`(Optimized Dalvik Executable)文件是Dalvik虚拟机执行的优化后的字节码,它包含了应用的类、方法和数据。`.odex`文件通常位于系统的`/data/dalvik-cache`目录下,用于提高应用程序的运行...
Odex文件包含了预编译的机器码,使其能在设备上更快地执行。 3. **Vdex文件**:自Android 6.0(Marshmallow)引入,VDex(Virtual DEX)是为了加速首次应用启动时的预编译过程。它存储了应用的主要DEX文件的快速...
在Android系统中,`odex`(Optimized Dalvik Executable)文件是Dalvik虚拟机执行的优化后的字节码,它对APK中的`.dex`文件进行了编译和优化,目的是提高应用程序的运行速度和启动效率。`odex`文件的制作是一个涉及...
【vdexExtractor:Android系统中的vdex与odex反编译利器】 在Android系统中,为了提高应用程序的启动速度和运行效率,系统引入了vdex(Virtual Device Execution)和odex(Optimized Dex)文件。这些文件是Dalvik...
Dalvik虚拟机在设备上首次运行APK时会即时编译(JIT)代码,而ART则在安装时就进行了预先编译(AOT),生成了ODEX文件,这样在运行时可以更快地执行。 **1. ODEX文件结构:** ODEX文件包含了优化过的Dalvik字节码,...
在Android系统中,`odex`(Optimized Dalvik Executable)文件是Dalvik虚拟机执行的优化代码格式。它们是Dalvik字节码(`.dex`文件)经过编译和优化后的产物,用于提高应用程序的运行速度。`odex`文件通常存储在设备...
在Android系统中,ODEX(Optimized Dalvik Executable)文件是Dalvik虚拟机执行的优化后的字节码,它是Dalvik VM为了提高应用程序运行效率而进行的一种预编译处理。`check_odex.tar.gz`这个压缩包显然是为了帮助用户...
在Android系统中,"odex"(Optimized Dalvik Executable)是Dalvik虚拟机执行的优化过的字节码文件,它将Dalvik字节码(.dex)进行了预编译,以提高应用程序的启动速度和运行效率。"android手机端odex化"指的是将...
这种工具会将APK中的DEX文件(包含Dalvik字节码)与设备上的ODEX文件合并,使得应用程序在运行时可以直接使用已优化的代码,无需再进行即时编译。这个过程可以减少启动时间,并可能提高整体性能。但需要注意的是,这...
在Android系统中,`.odex`(Optimized Dalvik Executable)文件是Dalvik虚拟机执行的优化代码,它是从`.dex`(Dalvik Executable)文件经过优化处理后的产物,通常包含有编译后的字节码和一些元数据。`.odex`文件的...
在Android系统中,Odex(Optimized Dalvik Executable)文件是Dalvik虚拟机执行的优化过的字节码,它将DEX(Dalvik Executable)文件预先编译为机器码,以便提高应用的启动速度和运行效率。Android 5.0(Lollipop)...
在Android系统中,`.odex`(Optimized Dalvik Executable)文件是Dalvik虚拟机执行的优化后的字节码,而`.dex`(Dalvik Executable)文件则是未优化的字节码,通常用于APK安装包。`.odex`文件体积更小,运行速度更快...
然而,为了提升性能,Android系统会在首次运行应用程序时将D EX文件编译为本地机器代码,存储为ODEX文件,后续运行时可以直接加载,减少了运行时的解析开销。 **ODEX 文件结构** ODEX文件是Dalvik虚拟机优化后的二...
1. **预编译**:通过ART(Android RunTime)环境,可以在安装时预编译DEX为ODEX,使得应用在首次启动时无需再进行JIT(Just-In-Time)编译。 2. **多DEX处理**:当应用DEX文件超过64K方法限制时,需要拆分为多个DEX...
本篇文章将深入探讨一套用于从odex文件到Java代码的反编译工具,帮助你了解这一过程以及相关技术。 首先,我们来解释一下"odex"文件。在Android系统中,Dalvik虚拟机执行的字节码通常以.dex格式存储。为了提高应用...
在这个版本中进行ODEX合并,需要对安卓系统的编译和打包流程有深入的理解。通常,这个过程包括以下步骤: 1. **获取APK源代码**:首先,你需要拥有应用的源代码或者APK文件,因为ODEX文件是从DEX文件中生成的,而...
在Android系统中,APK和ODEX文件是两个关键组件,它们关系到应用程序的安装和运行。APK文件是Android应用程序的打包格式,包含了代码、资源、清单文件等所有必要的元素,用户通常通过Google Play或其他应用商店下载...
在Android系统中,`odex`(Optimized Dalvik Executable)文件是Dalvik虚拟机执行的优化后的字节码,它将`.dex`(Dalvik Executable)文件中的类和方法进行了预编译,以提高应用的启动速度和运行效率。`odex`文件...