I've asked this question before. After checking out logcat
, it seems that the OS is looking for the odex
files. I've checked the odex
files of other system apps on my ROM, and it turns out they're ELF
files.
For the ones asking, these are bytecode files produced by ART (dex2oat
, I'm not sure).
I've observed that these files get generated on boot (Android is Starting: Optimizing App XXX of XXX
).
For some reason, my phone's ROM doesn't run the optimization part. Instead, the oat
files are already pre-generated and stored on the system partition. As a result, the apps that I want to pre-install don't get the oat
treatment and crashes when I launch them (ClassNotFoundException
since the oat
files don't exist.)
How do I manually run the app optimizer? If it comes down to using the command line, how do I use dex2oat
without root access/on a Linux PC?