It doesn't have to recompile system apps that are shipped with pre-compiled code and don't have an out-of-band update installed. However, it's increasingly uncommon to include pre-compiled code in the OS images for everything but the core privileged code (for verified boot).
Conversation
GrapheneOS ships fully pre-optimized code and we don't have out-of-band updates to any of the bundled apps other than Vanadium (WebView, browser, library), Auditor and PDF Viewer which are signed with their own keys. All other apps share the AOSP release cycle so no reason to.
1
Samsung probably has a huge number of bundled apps and they probably don't ship pre-compiled code, so your device has to go through all of them and recompile them. If they leave AOT compilation on speed-profile, it will only actually AOT compile code being used at runtime.
1
I guess the thing is that it sort of feels like a lot of that work doesn't have to happen strictly offline with my phone off, though perhaps that's done more as a precaution? Obviously at some point the phone is going to have to restart.
1
It doesn't - it happens in the background while you're using the phone. I now realize that Samsung probably isn't using the current official Android update system (A/B updates) yet. Are they still doing updates with a legacy recovery-based system? Not really what Android does.
2
Yeah, that's what it looked like to me, a lot of the time it was sitting in what looks a lot like a recovery screen.
1
Yeah, that's the legacy update system replaced with update_engine on the Nexus 5X / 6P and which other vendors were supposed to have adopted ages ago. Seems Samsung still hasn't adopted it. The OS is designed around the A/B update system for atomic updates in the background.
1
1
Got it, ok so yeah, basically then the legacy system is doing a lot of stuff offline that, in the new system, is done online.
1
Using update_engine launched with the Nexus 5X / 6P in October 2015 so I'm not so sure I would call it the new one, since they've since moved to a more advanced form of it (streaming updates) and are migrating to another revision of it. Samsung still isn't caught up to 2015/2016.
1
The new update system doesn't involve recovery. It does the entire update with update_engine and then boots into the new OS. There's no offline step. The new OS may need to migrate data, etc. if it's a major revision with new revisions of the settings database and so on.
1
I just didn't realize that Samsung STILL wasn't using it so I was describing the way the new system works to you. The old system didn't have support for optimizing apps before booting into the new version of the OS. It predated a lot of how that works today anyway.

