Android编译选项eng、user、userdebug的区别

Android编译选项eng、user、userdebug的区别
https://www.xuebuyuan.com/1408769.html

Android编译选项中eng、user、user-debug主要区别
https://blog.csdn.net/yanghanxing110/article/details/77721007

eng、user、userdebug区别简述
https://blog.csdn.net/dearsq/article/details/52589376


useruserdebugeng
仅安装标签为 user 的模块 安装标签为 user、debug 的模块 安装标签为 user、debug、eng 的模块
设定属性 ro.secure=1,打开安全检查功能 设定属性 ro.secure=1,打开安全检查功能 设定属性 ro.secure=0,关闭安全检查功能
设定属性 ro.debuggable=0,关闭应用调试功能 设定属性 ro.debuggable=1,启用应用调试功能 设定属性 ro.debuggable=1,启用应用调试功能
    设定属性 ro.kernel.android.checkjni=1,启用 JNI 调用检查
默认关闭 adb 功能 默认打开 adb 功能 默认打开 adb 功能
打开 Proguard 混淆器 打开 Proguard 混淆器 关闭 Proguard 混淆器
打开 DEXPREOPT 预先编译优化 打开 DEXPREOPT 预先编译优化 关闭 DEXPREOPT 预先编译优化

如果目标构建变体为 user,则 adb 无法获取 root 权限。

 


eng:debug 版本

user: release 版本

userDebug版本:部分debug版本

 

    要了解Android编译选项eng、user和userdebug的区别,需先了解下LOCAL_MODULE_TAGS这一Android.mk文件里的配置项,一般配置形式为LOCAL_MODULE_TAGS := user eng optional test这个样子。

 

    那么LOCAL_MODULE_TAGS设置为不同值有何作用呢?下面是对应不同值编译的结果:
    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 tagged APKs
      · 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 for APK modules)
      · Sets ro.secure=1
      · Sets ro.debuggable=0
      · adbd is disabled by default
    3、当make userdebug时,此时BuildType为userdebug,那么其编译进去的内容包括:
       the same as user, except:
      · Intended for limited debugging
      · Installs modules tagged with debug
      · Sets ro.debuggable=1
      · adbd is enabled by default 
    参考网址:https://hi.baidu.com/aokikyon/item/194b9bd9a6188ef593a9740e
              http://www.rosoo.net/a/201108/14878.html
              http://www.cnblogs.com/mr-raptor/archive/2012/06/07/2540359.html
posted @ 2019-07-03 10:50  petercao  阅读(9469)  评论(0编辑  收藏  举报