This isn't true, as anybody who sees bugs on the iPhone that don't show up on the Simulator will be happy to tell you. You test on an emulator when you have the option because it's the hardware you're actually deploying against.
And, again, Android does not run Java and characterizing it as such is ignorance of the environment involved.
... and the hardware can vary greatly from chipset to chipset and from phone to phone. There are a number of drivers that work directly with the underlying chip and hardware. You can never emulate that.
The actual CPU (ARM, x86) is a small part of the overall emulation equation and almost inconsequential to uncovering these bugs you talk about. There will be bugs that will exist solely on the hardware. You can't replicate it unless you are fully replicating that hardware, with those system level drivers.
IMHO, In the context of the app development what Apple did is the better way in this case.
And, again, Android does not run Java and characterizing it as such is ignorance of the environment involved.