Upon further exploration, I've discovered how to properly add covers to sideloaded MOBI files.
The folder structure of the Kindle app:
The cover for a given MOBI files goes in the LibraryCovers directory. If only it were that simple.
The MOBI file implicitly names the cover that will be displayed in the Home page of the Kindle app. Within the EXTH headers, the value contained in the ASIN field is used as the cover filename fetched from the LibraryCovers directory.
For example, let's say you want to sideload WarOfTheWorlds.MOBI
with its cover WarOfTheWorlds.JPG
into the Kindle for iPad app:
- Modify WarOfTheWorlds.MOBI (using Mobi2Mobi, for example), adding or modifying the ASIN field (in the EXTH block) with the name of the cover jpg, WarOfTheWorlds.JPG. (Since your sideloaded book didn't come from Amazon, you don't need a real ASIN.)
- Copy the modified WarOfTheWorlds.MOBI to Kindle/Documents/eBooks (using iPhone Explorer)
- Copy WarOfTheWorlds.JPG to Kindle/Documents/LibraryCovers (using iPhone Explorer)
When the Kindle for iPad app loads, if the file named in the ASIN field is found in the LibraryCovers folder, it will be displayed in the Home screen of the app. If there is no ASIN field, then a bogus cover will be displayed.
Amazon downloads are stored in the eBooks directory using their ASIN number, and the covers are stored using a filename that is simply the ASIN number (no extension).
You can use any filename you want - so long as the value in the ASIN field is a valid JPG found in the LibraryCovers directory, it will be displayed as the cover.
This works on OSX, but I tried it in Windows using the Win version of iPhone Explorer, and the Kindle app is not shown in the Apps directory. So for the time being, this is only possible under OSX.
Next challenge: If it were possible to mount the Apps/Kindle directory (on a non-jailbroken iDevice), it would be possible to do all this in a program instead of manually.