Difference between eng and user-debug build in 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.
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
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