The Huawei Mate 20 Pro is solid enough of a phone that it made me switch from the iPhone XS after years on iOS. The last time I tried to switch to Android with a Galaxy S8, I gave up after 2 days.
With a ~60% larger sensor, the camera is amazing with better optical bokeh, way better computational bokeh than the still-ridiculous iPhone portrait mode and way better low light performance. Despite Android phones being traditionally plagued with unreliable camera launch and shutter response times, taking unplanned quick snaps is surprisingly pleasant and usable without edits.
Other general pros: the battery is undepletable even if I try to during full day trips and it doesn’t suddenly become unusable with the slightest temperature fluctuation like iPhone X/XS. And as Android generalities, the screen is better and despite jankier animations and lower single core performance, it’s faster in practice since there’s less event blocking animation fillers.
But like most non-stock Androids, the software has a lot of annoyances. Luckily many, many are low hanging fruits. And after a few weeks, I got it to a point where it’s fairly peasant and the jagged corners are worn off without doing anything too hacky.
Some context/assumptions before we start: no rooting, custom ROMS or any of that, you have adb and know how to use it, and at time of publishing, this is based on EMUI 9/Android P.
Get the Right Device
This is a first if you’re still in the buying stage. It’ll save you tons of headaches. Between LYA-AL00, LYA-AL00P, LYA-L0C, LYA-L09, LYA-L29, LYA-TL00, make sure to get the LYA-L0C (single SIM) or LYA-L29 (dual SIM) which are the international versions. The other Chinese variants can have Google Play Services put onto them but they’re not GMS certified (for latest list, consult the PDF in the help page) so you’ll have trouble with Google Pay and depending on your device policy admin, you might have trouble with work profile.
Once you’re on the LYA-LXX hardware, there’s also a dozen firmware versions for various markets/carriers/region codes. They dictate smaller features like whether your launcher gets the Google Now feed or their own HiBoard, some camera features and when you get OS updates. For our purposes, it doesn’t matter too too much.
Also note that unlike things like the GSM iPhone X etc, this phone will mostly not work on Verizon. VoLTE won’t be available and you can’t make calls on CDMA at all. Also it won’t function well as a data only device since the LTE 13 band is one of Verizon’s primary frequencies and 2 and 4 only serve as auxiliaries in urban centers. So you’ll struggle getting data even in cities.
Next, onto cleaning up our actual EMUI annoyances.
Get Rid of Those Annoying Status Bar Icons
I don’t know how they decided it was ok to ship with those defaults. There’s already not much room with the notch and those icons are so useless.
Luckily, you don’t need root or anything special to get rid of them. But the Android M System UI Tuner isn’t easily accessible in EMUI nor does it work for that matter. So we use adb instead.
adb shell settings put secure icon_blacklist [the icons you don't want]
There’s a list of options here
I opted for
adb shell settings put secure icon_blacklist eyes_protect,managed_profile,nfc,vpn,bluetooth,zen
Everything will still show when you bring down the notification overlay (at which point all the status bar icons will show below the notch) so you can get a bit more aggressive here.
I forget if it’s on by default but remove the carrier name and network speed too via
Settings → Display → More display settings → Display carrier name / network speed
Turn Off Knuckle Gestures
It’s not a bad idea and their implementations are almost there. But there’s still ~3 false positives per day in my experience and that reduced confidence in every normal swipe/pan you make makes it not worth it.
Settings → Smart assistance → Motion control → Knuckle Gestures
Turn those off. Then back in Smart assistance → HiTouch. Turn that off too.
Turn Off EMUI’s System Navigation Gestures
This one too. It’s not necessarily a bad idea but the implementation is definitely not there yet. They’re also trying too hard to mimic iOS without either bringing something uniquely Android to the table or get the iOS gestures right. For instance, the iOS’s side home bar swipes for recent apps and the normal back gesture edge swipes are extremely powerful because you can see the previous app/page right aways. EMUI doesn’t do anything that frictionless. On the uniquely Android side, the new Android P’s rotate screen on demand button on the navigation bar is way better than what’s on iOS. The age old back button (though not always predictable) is a far less costly, muscle-memory-able way of dismissing modal dialogs/keyboards/overlays/menus/anything than iOS. Though the EMUI 9 gestures lost all that.
It’s also really buggy. Do the home swipe too quickly and the animation restarts.
Just turn the whole thing off via
Settings → System → System navigation → Three-key navigation
Turn On Always On Display
It’s a pretty neat non-obstructive, efficient feature.
Settings → Home screen & wallpaper → Always on display
You’re not crazy. It does move around by itself all the time to avoid OLED burn-ins.
Get Rid of Bloatware
Luckily, the extra junk are all mostly optional.
First, go through all the apps the normal way in settings and try to uninstall them.
If you can’t, they’re nevertheless uninstallable or disablable for your user without root in adb.
adb shell pm uninstall -k --user 0 [package name]
Though you can’t bring it back without a factory reset. So if you’re not sure, disable instead.
adb shell pm disable-user --user 0 [package name]
For instance, I’m not huge on SwiftKeys, so you can
adb shell pm disable-user --user 0 com.touchtype.swiftkey
after you install something else like GBoard.
For everything you don’t uninstall, make sure to remove locations, background data, phone permissions and most importantly settings write and draw over other app permissions (which annoyingly is not in the same list as the normal permissions).
Get Ad Block
This one’s a slightly surprising one coming from iOS. I guess Google has a fairly different revenue source than Apple. So there’s no mobile browser extensions the way Safari can have since iOS 9 (except embedded webviews which is definitely still a problem in iOS).
If you’re ok with not using Chrome, Firefox works with ad block extensions.
Otherwise, something like DNS66 or AdGuard Android/DNS/Home can potentially be better that iOS but at a slightly higher cost/potential invasiveness.
The easiest is DNS since nothing needs to run locally, it’s configurable in the stock system settings since Android P and you have to hit DNS regardless anyway. AdGuard DNS seems to have comparable response time to 18.104.22.168 or CloudFlare.
Since Android P now supports DNS-over-TLS, use
Settings → Wireless & networks → Private DNS → Configure Private DNS → paste dns.adguard.com
instead of just putting in an IP address like before.
If you don’t trust them (and you shouldn’t), you can build the same DNS server they have and host it at home via https://github.com/AdguardTeam/AdGuardHome (it’s open source).
The second class of blockers is via a local VPN server such as AdGuard Android (it’s blocked on the Play Store so you have to download it yourself). The filtering then happens against a cached blacklist locally so your device does slightly more work per request but it’s a more complete coverage since app don’t have to use the system DNS settings and since VPN can respond with specific HTTP responses instead of just dropping the DNS request, holes left by ads can be cleaner.
If you do go for the local VPN option like AdGuard Android, monitor the various pre-installed apps’ network traffic once in a while and disable / remove network permissions on more stuff if they try to phone home.
Change the Launcher
The stock Huawei launcher isn’t all that bad. But it’s not that customizable. The EMUI theming mechanism isn’t as mainstream. And the recent apps switcher is both visually janky and broken in other launchers. Since the stock launcher interferes with other launchers in recent apps, you’d have to disable it after you install something else like Nova Launcher.
adb shell pm disable-user --user 0 com.huawei.android.launcher
After you uninstall/disable the launcher, you also get back the normal (vertical) Android stock app switcher instead of Huawei’s wonky horizontal switcher and its inferior split-screen setup mechanism.
Get Icon Packs
Now that you’re on a mainstream launcher, get new icons!
In the screenshot above, I’m using H2O. Just install from Play Store and change the icons either in Nova Launcher’s settings on in the H2O app.
Get Google Now Feed on the Left of Home
This one’s unfortunately also not in the Play Store. You’d have to get the Nova Google Companion here. Once it’s installed, Nova recognizes it in its Integrations mechanism and you can swipe right.
Add Gestures Back
I still prefer the traditional 3 button Android navigation bar. But to add more options and efficiency (for instance, your finger is already in the middle of the screen vertically), you can add back the edge back swipe gesture with something like Fluid Gesture Navigation.
It (ab)uses the Android accessibility APIs like most similar apps. So you have to
adb shell pm grant com.fb.fluid android.permission.WRITE_SECURE_SETTINGS
for it to work. This might conflict with your company/school/network’s device policies if you have any.
Turn On Camera Quick Launch
This is extremely important and a huge plus vs iOS. Open the OEM camera app, then the settings cog, scroll down. Ultra snapshot. Set it to ‘Open camera’ (or whatever you want). It’s extremely reliable and key for quickly getting snaps.
960 FPS Slow-Mo
I don’t know what the hell is their marketing team doing. I don’t even recall this being marketed anywhere. But it’s 4 times more frames than iPhone XS. The AI also does a good job of putting the time dilation at the right time when the action is happening so you don’t have to post-edit.