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
returns1
. - 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
returns0
. - 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" ]