android eng 版本,Android编译eng、user、userdebug区别

一、各选项简要说明

eng:工程版本

user:发行版本

userdebug:部分调试版本

二、Android官网的解释

eng

This is the default flavor. A plain make is the same as make eng.

* Installs modules tagged with: eng, debug, user, and/or development.

* Installs non-APK modules that have no tags specified.

* Installs APKs according to the product definition files, in addition to tagged APKs.

* ro.secure=0

* ro.debuggable=1

* ro.kernel.android.checkjni=1

* adb is enabled by default.

* Setupwizard is optional

user

This is the flavor intended to be the final release bits.

* Installs modules tagged with user.

* Installs non-APK modules that have no tags specified.

* Installs APKs according to the product definition files; tags are ignored for APK modules.

* ro.secure=1

* ro.debuggable=0

* adb is disabled by default.

* Enable dex pre-optimization for all TARGET projects in default to speed up device first boot-up

userdebug

The same as user, except:

* Also installs modules tagged with debug.

* ro.debuggable=1

* adb is enabled by default.

三、对编译版本MTK的补充说明

(1) Debug/LOG 方面,原则上user 版本只能抓到有限的资讯,eng 可以抓到更多的资讯,Debug 能力更强,推崇使用eng 版本开发测试

因user/eng 版本设置ro.secure不同,导致user 版本adb 只拥有shell 权限,而eng 版本具有root 权限

MTK System LOG 在ICS 以后,在user 版本默认关闭全部LOG, 在eng 版本中默认打开,以便抓到完整的资讯

在eng 版本上,LOG 量 >= user 版本的log 量,一些地方会直接check eng/user 版本来确认是否打印LOG

user 版本默认关闭uart, eng 版本默认开启uart

在eng 版本上,开启ANR 的predump, 会抓取ftrace,可以得到更多ANR的资讯

在eng 版本上,可用rtt 抓取backtrace,可开启kdb 进行kernel debug, 可用ftrace 抓取cpu 执行场景

MTK aee 在ENG 版本抓取更多的异常资讯,比如native exception 会抓取core dump 信息

(2) 性能方面,原则上进行性能测试请使用user 版本测试

user 版本为提高第一次开机速度,使用了DVM 的预优化,将dex 文件分解成可直接load 运行的odex 文件,ENG 版本不会开启这项优化

更少的LOG 打印,uart 的关闭,原则上user 版本的性能要优于eng 版本

(3) 如何确认user/eng 版本

Java 层,check android.os.Build 类中的TYPE 值

native 层,property_get("ro.build.type", char* value, "eng"); 然后check value 值

Debug 时, adb shell getprop ro.build.type 返回值如果是user 即user 版本,eng 即eng 版本

Log 确认, mobile log/Aplog_xxxxx/versions 中查看ro.build.type 属性

(4) 如何编译user/eng 版本

默认编译是eng 版本,如果需要编译user 版本,请加入参数 -o=TARGET_BUILD_VARIANT=user 如:

./mk -o=TARGET_BUILD_VARIANT=user mt6577_phone new

default.prop和/system/build.prop

四、详细说明

Android源码编译选项eng、user、userdebug是由Android.mk文件中的LOCAL_MODULE_TAGS配置项来决定的。其一般形式如下:

LOCAL_MODULE_TAGS := user eng optional test

各项具体说明如下:

1、user:只有在user版本时该模块才被编译进去;

2、eng:只有在eng版本时该模块才被编译进去;

3、test:只有在tests版本时该模块才被编译进去;

4、optional:在所有版本中都编译该模块进去。

其中的值可设置为1个或多个,分别对应编译选项的同一个或多个。

eng、user、userdebug的区别如下:

1、当make eng时,也即相当于make。此时BuildType为eng,那么其编译进去的内容包括:

·Intended for platform-level debugging

·Installs modules tagged with: eng, debug, user, and/or development

·Installs non-APK modules that have no tags specified

·Installs APKs according to the product definition files, in addition to taggedAPKs

·Sets ro.secure=1

·Sets ro.debuggable=0

·Sets ro.kernel.android.checkjni=1

·adbd is enabled by default

2、当make user时,此时BuildType为user,那么其编译进去的内容包括:

·Intended to be the final release

·Installs modules tagged as user

·Installs non-APK modules that have no tags specified

·Installs APKs according to the product definition files (tags are ignored forAPK modules)

·Sets ro.secure=1

·Sets ro.debuggable=0

·adbd is disabled by default

3、当make userdebug时,此时BuildType为userdebug,那么其编译进去的内容包括:

thesame as user, except:

·Intended for limited debugging

·Installs modules tagged with debug

·Sets ro.debuggable=1

·adbd is enabled by default

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值