Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between eng and user-debug build in Android

I would like to know the difference between the two build_flavor's viz.

eng & user-debug

The difference between eng and user build flavors is quiet evident. But eng and user-debug is confusing me somewhat. What are the additional Debug facilities provided in eng that are not present in user-debug?

For eg.

If I take only the Kernel being built: 

Will the Debugging levels differ for the eng and user-debug builds?

I am facing an issue where the user-debug build is booting up on the android phone. But the eng build is not and the build_flavor is the only difference between the two builds.

Any help/pointers is appreciated. Thanks!

like image 470
spitfire88 Avatar asked Dec 19 '12 10:12

spitfire88


People also ask

What is Eng build in android?

The eng build prioritizes engineering productivity for engineers who work on the platform. The eng build turns off various optimizations used to provide a good user experience.

What does build type user mean?

Build Type refers to build and packaging settings like signing configuration for a project. For example, debug and release build types. The debug will use android debug certificate for packaging the APK file. While, release build type will use user-defined release certificate for signing and packaging the APK.

What is Userdebug?

userdebug are meant to be as close as possible to user builds, with just the minimum amount of changes to be able to debug things, whereas eng builds include some much heavier checking.

What is production build in android?

There are two different types of android framework build (the entire system image) user (aka production) and userdebug. All standard device maker release their device with "user" build. Userdebug is meant for development and typically only built for in-house use.


2 Answers

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.  

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. 

userdebug : make userdebug

The same as user, except:

Also installs modules tagged with debug. - ro.debuggable=1 - adb is enabled by default.  

Documentation: https://source.android.com/source/add-device.html#build-variants

like image 67
rmdroid Avatar answered Oct 08 '22 12:10

rmdroid


Well the difference between the three builds viz. eng, user and user-debug is as follows:

eng - Engineering build comes with default root access.

user - User build is the one flashed on production phones. Has no root access.

user-debug - User debug build does not come with default root access but can be rooted. It also contains extra logging.

One thing to note here is although an eng build might suggest extra logging it is not so. The user-debug will contain maximum logging and should be used during development

like image 25
spitfire88 Avatar answered Oct 08 '22 12:10

spitfire88