[Redmi Note 2 Q&A, Help & Troubleshooting] utlex:
Indeed, it looks like this problem is MIUI/Android 5 specific. While upgrading Google Keep from version 5.0.411.10.40 to 5.0.481.05.40 on my Redmi Note 2 (MIUI 9.6.3.0 LHMMIFD Global Stable), I noticed in logcat output that it is dex2oat that fails during update. Here is the relevant log portion:

[2018-12-19 11:25:38.286563] V/ActivityManager( 751): Broadcast: Intent { act=com.android.launcher.action.ACTION_PACKAGE_INSTALLING dat=package:com.google.android.keep flg=0x10 pkg=com.google.android.googlequicksearchbox } ordered=false userid=0 callerApp=ProcessRecord{10909041 17584:com.android.vending/u0a111}
[2018-12-19 11:25:38.982637] D/PackageParser( 751): isLcaROM() return false
[2018-12-19 11:25:39.644396] D/PackageParser( 751): isLcaROM() return false
[2018-12-19 11:25:39.648782] D/PackageParser( 751): isLcaROM() return false
[2018-12-19 11:25:39.707732] I/PackageManager( 751): init_copy idx=0: InstallParams{1b44fe99 file=/data/app/vmdl471118761.tmp cid=null}
[2018-12-19 11:25:39.707869] I/PackageManager( 751): Trying to bind to DefaultContainerService
[2018-12-19 11:25:39.711645] D/ActivityThread(17214): SVC-Creating service: CreateServiceData{token=android.os.BinderProxy@eef0214 className=com.android.defcontainer.DefaultContainerService packageName=com.android.defcontainer intent=null}
[2018-12-19 11:25:39.714370] I/PackageManager( 751): onServiceConnected
[2018-12-19 11:25:39.714518] I/PackageManager( 751): mcs_bound
[2018-12-19 11:25:39.714575] I/PackageManager( 751): onServiceConnected: true, 0
[2018-12-19 11:25:39.714624] I/PackageManager( 751): startCopy UserHandle{0}: InstallParams{1b44fe99 file=/data/app/vmdl471118761.tmp cid=null}
[2018-12-19 11:25:39.718366] D/PackageParser(17214): isLcaROM() return false
[2018-12-19 11:25:39.741921] V/SettingsInterface(17214): from settings cache , name = sys_storage_full_threshold_bytes , value = null
[2018-12-19 11:25:39.742987] V/SettingsInterface( 751): from settings cache , name = package_verifier_enable , value = 1
[2018-12-19 11:25:39.743155] V/ActivityManager( 751): Broadcast: Intent { act=android.intent.action.PACKAGE_NEEDS_VERIFICATION dat=file:///data/app/vmdl471118761.tmp typ=application/vnd.android.package-archive flg=0x10000011 cmp=com.android.vending/com.google.android.finsky.verifier.impl.PackageVerificationReceiver (has extras) } ordered=true userid=0 callerApp=ProcessRecord{ed16274 751:system/1000}
[2018-12-19 11:25:39.743205] I/PackageManager( 751): Apk copy done
[2018-12-19 11:25:39.743250] I/PackageManager( 751): Checking for more work or unbind...
[2018-12-19 11:25:39.743294] I/PackageManager( 751): Posting delayed MCS_UNBIND
[2018-12-19 11:25:39.745158] D/ActivityThread(17584): BDC-Calling onReceive: intent=Intent { act=android.intent.action.PACKAGE_NEEDS_VERIFICATION dat=file:///data/app/vmdl471118761.tmp typ=application/vnd.android.package-archive flg=0x10000011 cmp=com.android.vending/com.google.android.finsky.verifier.impl.PackageVerificationReceiver (has extras) }, receiver=com.google.android.finsky.verifier.impl.PackageVerificationReceiver@3c9eba72
[2018-12-19 11:25:39.746163] I/Finsky (17584): [1] com.google.android.finsky.verifier.impl.PackageVerificationReceiver.onReceive(7): Verification requested, id = 3
[2018-12-19 11:25:39.748915] V/SettingsInterface( 751): from settings cache , name = verifier_timeout , value = 15000
[2018-12-19 11:25:39.749798] D/ActivityThread(17584): SVC-Creating service: CreateServiceData{token=android.os.BinderProxy@12904ec3 className=com.google.android.finsky.verifier.impl.PackageVerificationService packageName=com.android.vending intent=null}
[2018-12-19 11:25:39.749908] D/ActivityThread(17584): SVC-Calling onStartCommand: com.google.android.finsky.verifier.impl.PackageVerificationService@d432340, flags=0, startId=1
[2018-12-19 11:25:39.754797] I/Finsky (17584): [256] com.google.android.finsky.verifier.impl.ea.a(77): Skipping verification because own installation
[2018-12-19 11:25:39.754936] I/Finsky (17584): [256] com.google.android.finsky.verifier.impl.ea.a(44): Skipping anti malware verification due to pre-check failure
[2018-12-19 11:25:39.756407] I/Finsky (17584): [1] com.google.android.finsky.verifier.impl.fs.c(164): Verifying id=3, result=1
[2018-12-19 11:25:39.757199] V/ActivityManager( 751): Broadcast: Intent { act=android.intent.action.PACKAGE_VERIFIED dat=file:///data/app/vmdl471118761.tmp typ=application/vnd.android.package-archive flg=0x11 (has extras) } ordered=false userid=0 callerApp=ProcessRecord{ed16274 751:system/1000}
[2018-12-19 11:25:39.758114] D/PackageManager( 751): /data/app/vmdl471118761.tmp already staged; skipping copy
[2018-12-19 11:25:39.758994] D/PackageManager( 751): installPackageLI: path=/data/app/vmdl471118761.tmp
[2018-12-19 11:25:39.759108] I/PackageManager( 751): Start parsing apk: com.android.vending
[2018-12-19 11:25:39.762732] I/Finsky (17584): [1] com.google.android.finsky.verifier.impl.fs.c(177): Verification complete: id=3, package_name=com.google.android.keep
[2018-12-19 11:25:39.763428] D/ActivityThread(17584): SVC-Destroying service: com.google.android.finsky.verifier.impl.PackageVerificationService@d432340
[2018-12-19 11:25:39.765584] D/PackageParser( 751): isLcaROM() return false
[2018-12-19 11:25:39.771818] D/PackageParser( 751): isLcaROM() return false
[2018-12-19 11:25:39.791483] W/PackageParser( 751): No actions in intent filter at /data/app/vmdl471118761.tmp/base.apk Binary XML file line #682
[2018-12-19 11:25:40.752005] D/PackageManager( 751): manifestDigest was not present, but parser got: ManifestDigest {mDigest=b9,e5,3e,43,a9,ec,c0,f7,68,4c,9e,36,0e,d4,0e,49,f4,7f,81,f2,ff,1f,8d,f4,2f,5b,12,a7,98,93,42,db,}
[2018-12-19 11:25:40.752143] D/PackageManager( 751): Replace existing pacakge: com.google.android.keep
[2018-12-19 11:25:40.752196] D/PackageManager( 751): Existing package: PackageSetting{1c62f852 com.google.android.keep/10143}
[2018-12-19 11:25:40.752243] D/PackageManager( 751): Renaming /data/app/vmdl471118761.tmp to /data/app/com.google.android.keep-2
[2018-12-19 11:25:40.754245] I/PackageManager( 751): Start installation for package: com.android.vending
[2018-12-19 11:25:40.754381] D/PackageManager( 751): replacePackageLI: new=Package{29529dd3 com.google.android.keep}, old=Package{2875ad10 com.google.android.keep}
[2018-12-19 11:25:40.754428] D/PackageManager( 751): replaceNonSystemPackageLI: new=Package{29529dd3 com.google.android.keep}, old=Package{2875ad10 com.google.android.keep}
[2018-12-19 11:25:40.754472] D/PackageManager( 751): deletePackageLI: com.google.android.keep user null
[2018-12-19 11:25:40.754516] D/PackageManager( 751): Removing non-system package:com.google.android.keep
[2018-12-19 11:25:40.754558] D/PackageManager( 751): removePackageDataLI: PackageSetting{1c62f852 com.google.android.keep/10143}
[2018-12-19 11:25:40.755142] I/ActivityManager( 751): Force stopping com.google.android.keep appid=10143 user=-1: uninstall pkg
[2018-12-19 11:25:40.842255] I/PackageManager( 751): args=com.android.server.pm.PackageManagerService$FileInstallArgs@3f35c009
[2018-12-19 11:25:40.843039] D/installd( 281): do_rm_code_cache : com.google.android.keep 0
[2018-12-19 11:25:40.843174] I/PackageManager( 751): Package com.google.android.keep codePath changed from /data/app/com.google.android.keep-1 to /data/app/com.google.android.keep-2; Retaining data and using new
[2018-12-19 11:25:40.848747] D/PackageParser( 751): isLcaROM() return false
[2018-12-19 11:25:40.893137] I/PackageManager( 751): Linking native library dir for /data/app/com.google.android.keep-2
[2018-12-19 11:25:40.893233] I/PackageManager( 751): Perform pre-dex opt for package: com.google.android.keep
[2018-12-19 11:25:40.893731] I/art ( 751): DexFile_isDexOptNeeded failed to open oat file '/data/dalvik-cache/arm64/data@app@com.google.android.keep-2@base.apk@classes.dex' for file location '/data/app/com.google.android.keep-2/base.apk': Failed to open oat filename for reading: No such file or directory
[2018-12-19 11:25:40.893818] I/art ( 751): DexFile_isDexOptNeeded failed to open oat file '/data/app/com.google.android.keep-2/arm64/base.odex' for file location '/data/app/com.google.android.keep-2/base.apk': Failed to open oat filename for reading: No such file or directory
[2018-12-19 11:25:40.893841] I/PackageManager( 751): Running dexopt on: /data/app/com.google.android.keep-2/base.apk pkg=com.google.android.keep isa=arm64 vmSafeMode=false
[2018-12-19 11:25:40.918501] I/dex2oat (17868): /system/bin/dex2oat --zip-fd=5 --zip-location=/data/app/com.google.android.keep-2/base.apk --oat-fd=6 --oat-location=/data/dalvik-cache/arm64/data@app@com.google.android.keep-2@base.apk@classes.dex --instruction-set=arm64 --instruction-set-features=default --runtime-arg -Xms64m --runtime-arg -Xmx512m
[2018-12-19 11:25:41.967942] W/dex2oat (17868): Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
[2018-12-19 11:25:45.830747] W/dex2oat (17868): Verification of void com.google.apps.docs.diagnostics.impressions.proto.ImpressionCode.<clinit>() took 218.806ms
[B][2018-12-19 11:31:40.943960] E/installd( 281): DexInv: --- END '/data/app/com.google.android.keep-2/base.apk' --- status=0x0100, process failed[/B]
[2018-12-19 11:31:40.944483] I/PackageManager( 751): Dexopt done on: com.google.android.keep
[2018-12-19 11:31:40.945339] W/PackageManager( 751): Package couldn't be installed in /data/app/com.google.android.keep-2
[2018-12-19 11:31:40.945500] W/PackageManager( 751): com.android.server.pm.PackageManagerException: scanPackageLI
[2018-12-19 11:31:40.945558] W/PackageManager( 751):	at com.android.server.pm.PackageManagerService.scanPackageDirtyLI(PackageManagerService.java:6544)
[2018-12-19 11:31:40.945607] W/PackageManager( 751):	at com.android.server.pm.PackageManagerService.scanPackageLI(PackageManagerService.java:5779)
[2018-12-19 11:31:40.945652] W/PackageManager( 751):	at com.android.server.pm.PackageManagerService.replaceNonSystemPackageLI(PackageManagerService.java:11146)
[2018-12-19 11:31:40.945697] W/PackageManager( 751):	at com.android.server.pm.PackageManagerService.replacePackageLI(PackageManagerService.java:11097)
[2018-12-19 11:31:40.945741] W/PackageManager( 751):	at com.android.server.pm.PackageManagerService.installPackageLI(PackageManagerService.java:11592)
[2018-12-19 11:31:40.945785] W/PackageManager( 751):	at com.android.server.pm.PackageManagerService.access$2800(PackageManagerService.java:240)
[2018-12-19 11:31:40.945828] W/PackageManager( 751):	at com.android.server.pm.PackageManagerService$6.run(PackageManagerService.java:9460)
[2018-12-19 11:31:40.945872] W/PackageManager( 751):	at android.os.Handler.handleCallback(Handler.java:815)
[2018-12-19 11:31:40.945916] W/PackageManager( 751):	at android.os.Handler.dispatchMessage(Handler.java:104)
[2018-12-19 11:31:40.945961] W/PackageManager( 751):	at android.os.Looper.loop(Looper.java:194)
[2018-12-19 11:31:40.946005] W/PackageManager( 751):	at android.os.HandlerThread.run(HandlerThread.java:61)
[2018-12-19 11:31:40.946049] W/PackageManager( 751):	at com.android.server.ServiceThread.run(ServiceThread.java:46)
[2018-12-19 11:31:40.946092] D/PackageManager( 751): Install failed, reinstalling: Package{2875ad10 com.google.android.keep}
[2018-12-19 11:31:40.946136] D/PackageManager( 751): Parsing: /data/app/com.google.android.keep-1