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

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

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

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

  2. USER 版本与ENG 版本差异

    [Description] Android USER 版本与ENG 版本的差异   [Keyword] USER ENG user eng 用户版本 工程版本 差异   [Solution] Goog ...

  3. Android P(9.0) userdebug版本执行adb remount失败

    [DESCRIPTION]      在android P版本上如果按照“FAQ18076 android 6.0 M userdebug版本执行adb remount失败”的做法在userdebug ...

  4. android中如何在低版本(5.0之前)上使用tint(着色)属性

    1. 使用app前缀(app:backgroundTint,app:backgroundTintMode),如果使用android前缀,在低版本上是拿不到值的,因为这些属性是5.0以后才加入的. 2. ...

  5. Android SDK版本和ADT版本

    Android SDK版本和ADT版本   Android早期的版本号有点“混乱”,比如Android 2.2对应的ADT版本为ADT-0.9.9而Android 2.3对应的的ADT版本则突然“跃迁 ...

  6. Android 6.0 M userdebug版本执行adb remount失败

    [FAQ18076]Android 6.0 M版本默认会打开system verified boot,即在userdebug和user版本会把system映射到dm-0设备,然后再挂载.挂载前会检查s ...

  7. 【Android 应用开发】 Android 各种版本简介 ( Support 支持库版本 | Android Studio 版本 | Gradle 版本 | jcenter 库版本 )

    初学者遇到 Android Studio, 导入工程后, 会出现各种奇葩错误, 如果管理好各个插件, gradle, SDK, SDK Tools, 各种官方依赖库 的版本, 会将错误大大的减少; 这 ...

  8. 【Android Studio安装部署系列】二十四、Android studio中Gradle插件版本和Gradle版本关系

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 在从Android Studio3.0.0版本升级到Android Studio3.0.1版本的时候,出现了一个问题,需要升级Gra ...

  9. Android Studio之回退Gradle版本方法

    Android Studio之回退Gradle版本方法 (Minimum supported Gradle version is 4.10.1. Current version is 4.6.)   ...

随机推荐

  1. python cython 模块(2)

    cython 的主要用途是加速python 代码的执行速度,手段有很多种,最简单的一种就是将变量声明成静态类型: 比如用python 代码写的计算素数的函数,最大计算1000个: def primes ...

  2. 【Java面试题】42 TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常!

    应该是没有针对问题的确切的答案,当前的add方法放入的是哪个对象,就调用哪个对象的compareTo方法,至于这个compareTo方法怎么做,就看当前这个对象的类中是如何编写这个方法的 试验如下: ...

  3. 浅谈cookie测试

    Cookie 提供了一种在Web 应用程序中存储用户特定信息的方法,例如存储用户的上次 访问时间等信息.假如不进行cookie存储一个网站的用户行为,那么可能会造成以下问题:用户进行购买几件商品转到结 ...

  4. js简单的弹出框有关闭按钮

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. ajax 同步

    Ajax请求默认的都是异步的如果想同步 async设置为false就可以(默认是true) var html = $.ajax({  url: "some.php",  async ...

  6. 一些laravel博文

    人比人比死人系列 https://www.insp.top/tag/laravel http://www.iwanli.me/

  7. YARN应用程序开发和设计流程

    从业务的角度看,一个应用需要分两部分进行开发,一个是接入YARN平台,实现3个协议,通过YARN实现对集群资源的访问和利用:另一个是业务功能的实现,这个与YARN本身没有太大关系.下面主要阐述如何将一 ...

  8. linux命令之scp

    两个主机之间copy数据经常用到命令 1.copy文件命令 scp /home/test/1.mp3 root@192.168.1.20:/home/test/music 2.copy文件目录命令 s ...

  9. canvas二:绘制圆和其他曲线

    1.绘制圆 绘制圆是canvas里面不可缺少的功课,而且绘制圆在canvas中的用处很多,好嘞,开扯 绘制圆需要用到arc这个方法: arc(X坐标,Y坐标,半径,起始弧度,结束弧度,旋转方向): 弧 ...

  10. 价格战拉上了Android平板电脑

    自从苹果iPad成功以来,平板电脑一直是人们争相追捧的热门产品.其中Android平板电脑已是遍地开花.去年,在移动行业,主流厂商已推出了太多各种款型的Android平板电脑,它们留给2014年的创新 ...