-
Notifications
You must be signed in to change notification settings - Fork 347
Secure mode
AndroidViewClient has two possible back-ends:
- ViewServer
- UiAutomator
UiAutomator works on Android API 16 and higher, so if your device has a previous version your only alternative is ViewServer.
System ViewServer is started only when the device is not considered secure.
private boolean isSystemSecure() {
return "1".equals(SystemProperties.get(SYSTEM_SECURE, "1")) &&
"0".equals(SystemProperties.get(SYSTEM_DEBUGGABLE, "0"));
}
The properties involved to consider a device secure are
private static final String SYSTEM_SECURE = "ro.secure";
private static final String SYSTEM_DEBUGGABLE = "ro.debuggable";
This oneliner can be used to test these properties
$ (eval $(adb shell getprop | dos2unix | egrep '\[ro\.secure]|\[ro\.debuggable]' | sed 's/\./_/g; s/]: /=/g; s/[][]//g'); [[ 1 == $ro_secure && 0 == $ro_debuggable ]] && echo "System is secure: AVC won't work" || echo "System is not secure: AVC will work")
when run, this oneliner will tell you if AndroidViewClient could work on your device:
System is secure: AVC won't work
If you run it against any emulator (which is always not secure) it will return
System is not secure: AVC will work
hierarchyviewer
is one of the standard Android tools (now deprecated in favor of tools/monitor
) and it's described here.
For its operation hierarchyviewer
uses the same ViewServer as AndroidViewClient so if you have doubts about it working on your device just try to run
$ hierarchyviewer
and if you receive a message like this
00:00:00 E/hierarchyviewer: Unable to debug device 0123456789
then neither AndroidViewClient or hierarchyviewer
will work unless you follow (at your own risk) some of the instructions mentioned in Resources.