Android 的eng、user、userdebug版本的主要区别在于它们的用途、调试级别和功能特性。
eng版本:
**用途:**主要用于平台级调试。
**调试级别:**包含最高级别的调试信息,适合开发者在开发过程中使用。
**特性:**安装模块包括eng、debug、user和development标记的模块,以及没有指定标记的非APK模块。默认情况下,ro.secure设置为1,ro.debuggable设置为0,ro.kernel.android.checkjni设置为1,adbd默认启用12。
user版本:
**用途:**主要用于最终发布版本。
**调试级别:**调试信息较少,适合普通用户使用。
**特性:**安装模块包括user标记的模块,不包含eng或debug标记的模块12。
userdebug版本:
**用途:**结合了user和eng版本的特点,适合开发者在开发过程中进行调试,同时也可以用于最终发布。
调试级别:包含部分调试信息,适合开发者在开发过程中进行调试,同时也适合普通用户使用。
**特性:**安装模块包括user和debug标记的模块,但不包含eng标记的模块12。
可以通过设置进行选择:
LOCAL_MODEL_TAGS := user eng optional test
1. user:只有在user版本时该模块才被编译进去;
2. eng:只有在eng版本时该模块才被编译进去;
3. test:只有在tests版本时该模块才被编译进去;
4. optional:在所有版本中都编译该模块进去。
在进行整编时可以通过选择一下选项进行编译:
lunch sdk-eng
lunch sdk-user
lunch sdk-debug