[Description]

Android USER 版本与ENG 版本的差异

 

[Keyword]

USER ENG user eng 用户版本 工程版本 差异

 

[Solution]

Google 官方描述: USER/USERDEBUG/ENG 版本的差异, 参考alps/build/core/build-system.html 的详细说明

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 make 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 make 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

USER 版本与ENG 版本差异的更多相关文章

  1. Android USER 版本与ENG 版本的差异--MTK官方解释

     分类: Android(4)  Description]Android USER 版本与ENG 版本的差异 [Keyword]USER ENG user eng 用户版本 工程版本 差异 [Solu ...

  2. Android USER 版本与ENG 版本的差异

    Android USER 版本与ENG 版本的差异 [Keyword] USER ENG user eng 用户版本 工程版本 差异 [Solution] Google 官方描述: USER/USER ...

  3. MongoDB社区版本和企业版本差别

    MongoDB社区版本和企业版本差异主要体现在安全认证.系统认证等方面,具体信息参考下表: 版本特性 社区版本 企业版本 JSON数据模型.自由模式 支持 支持 水平扩展的自动分片功能 支持 支持 内 ...

  4. OGG-01332 ogg高版本向低版本传输

    Neo君遇到的ogg版本问题,在ggserr.log中的错误信息如下: 2018-10-12 09:55:10 ERROR OGG-01332 Oracle GoldenGate Delivery, ...

  5. PouchContainer 开源版本及内部版本一致性实践

    PouchContainer 开源版本及内部版本一致性实践 为什么要做内外版本一致 对外开源是提升影响力.共建生态的有力手段.在项目对外开源的过程中,首先是将可以开源的部分抽离出来,发布一个“开源版本 ...

  6. 理解Maven中的SNAPSHOT版本和正式版本

    Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...

  7. 安装MYSQL详细教程 版本:mysql-installer-community-5.7.16.0 免安装版本和安装版本出现错误的解决

    一.版本的选择 之前安装的Mysql,现在才来总结,好像有点晚,后台换系统了,现在从新装上Mysql,感觉好多坑,我是来踩坑,大家看到坑就别跳了,这样可以省点安装时间,这个折腾了两天,安装了好多个版本 ...

  8. git版本回退, github版本回退

    上周提交了更改,过了周末回来说要撤销上个story.于是,需要找到上周提交的版本,rollback回来. git版本管理命令,自从习惯使用管理工具之后就很少接触了,当突然寻找其他指令的时候就成浆糊了, ...

  9. .NET 获取客户端的操作系统版本、浏览器版本和IP地址

    我们在使用.NET做网站的时候,很多情况下需要需要知道客户端的操作系统版本和浏览器版本,怎样获取客户端的操作系统和浏览器版本呢?我们可以通过分析UserAgent来获取. .NET 获取客户端的操作系 ...

随机推荐

  1. Hibernate 由实体类与配置文件的配置关系生成数据库中的表

    import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; public class ...

  2. Docker 容器十诫

    [编者按]本文作者为 Rafael Benevides,主要介绍使用 Docker 容器时应该注意的十个陷阱. Docker 容器十诫 当你刚开始使用容器时,会发现容器能解决许多问题,而且好处很多: ...

  3. Lua---执行

    1.交互式: 2.脚本式(在命令行不要启动lua解释器,直接输): Testlua.lua 的内容: print("Hello World!")

  4. NHibernate 映射关系

    基本映射关系如下: NHibernate类型 .NET类型 Database类型 备注 AnsiChar System.Char DbType.AnsiStringFixedLength - 1 ch ...

  5. SVN同步版本库与网站目录2

    定义: SVN版本库  = /home/svn/repos  网站目录     = /var/www/web 1.检出一个项目到网站目录 #svn checkout file:///home/svn/ ...

  6. 在centos7上安装gcc、node.js(源码下载)

    一.在centos7中安装node.js https://www.cnblogs.com/lpbottle/p/7733397.html 1.从源码下载Nodejs cd /usr/local/src ...

  7. hdu3068 manacher模板题

    给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如aba, abba等 Input输入有多组case,不超过120组,每组输入为 ...

  8. python-day8-循环补充

    # msg='hello'# msg=[1,2,3,4,5,6]# msg=(1,2,3,4,5,6) # index=0# while index < len(msg):# print(msg ...

  9. windows下进程与线程剖析

    进程与线程的解析 进程:一个正在运行的程序的实例,由两部分组成: 1.一个内核对象,操作系统用它来管理进程.内核对象也是系统保存进程统计信息的地方. 2.一个地址空间,其中包含所有可执行文件或DLL模 ...

  10. SecureCRT 7.2.0 Mac版密码无法保存的解决办法

    参考:http://jingyan.baidu.com/article/915fc414fda5fb51394b20bd.html 我之前在网上找的解决办法都是SecureCRT 7.2.0 Mac ...