Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content

Is it possible to provide `user` builds instead of `userdebug`?

  • /e/ version: Any
  • Device model: All (probably)
  • Reproducible with the last /e/ version: yes
  • Reproducible with LineageOS: yes

Summary

As far as I can tell all the shipped builds are created using the userdebug variant. This causes among other things the ro.debuggable prop to be set, which is causing at least some root-check libraries (i.e. RootBeer) to flag the device as rooted, even if it is not. This in turn makes some important apps unusable. In my case the app in question is vipps, but I expect there are others.

I expect that there could be security concerns with running a build that allows a debugger to connect and access internal state as well. I don't have the necessary competence to make a judgement on that however.

I believe producing builds of the user variant would resolve this issue, although I realize that there may be good reasons why userdebug is currently chosen both by /e/ and LineageOs. I have not been able to find any discussions that could shed light on this though, so I'm hoping that this issue might spark a discussion.

This improvement concerns

  • UI
  • Behavior
  • Privacy

Description

What is the current behavior?

  • Shipped builds are of the userdebug variant.
  • $ getprop ro.debuggable returns 1.
  • Certain apps claim that the device is rooted even if it is not.

What is the improved behavior?

  • Shipped builds of the user variant.
  • $ getprop ro.debuggable returns 0.
  • A larger set of apps (particularly banking apps etc.) that work well out of the box.

What does it bring?

  • Improved experience for users that don't know how or don't want to root their device.
  • Maybe more secure devices?

Examples

For example users in Norway will be able to use Vipps, which is practically mandatory in order to participate in the second hand market here.

Validation

[ $(getprop ro.debuggable) -eq 0 ]
[ $(getprop ro.build.type) -eq "user" ]