This post will explain how to create book apps for Android phones and tablets, which can be uploaded to Google Play and the Amazon Appstore, both of which pay 70% of list price per sale. The apps are created using an application called AppOpus Builder. At the time of writing, this costs $99, with a 30-day money-back guarantee. You’ll also need to install the free Java Development Kit (JDK).

AppOpus Builder creates apps that are effectively an ebook with a built-in ebook reader. The reader software includes a search facility and text-to-speech (TTS). It’s not as fully featured as some ebook reader apps, but it has all the essentials, and TTS is a nice addition. My only complaint is that the user has to tap a button to turn pages, instead of swiping. The developers have said that they’ll consider adding swipe page turns in a future version.

Why a Book App?

If you know HTML, CSS, and JavaScript, it’s possible to make ebook apps that are far more interactive than standard ebooks. Depending on your niche, this might be a big advantage. In the Operation Nimrod app, it is possible to display the floor plans at any point in the book, which isn’t possible in the ebooks. This is a useful feature, which isn’t really feasible in a standard ebook, but it’s barely scratching the surface of what is possible.

There is another, less direct, advantage. The Google Play store offers A/B testing of descriptions, something that is not currently offered by any of the ebook or print book vendors. The results could be applied to the book’s other formats, with the caveat that what works for the app won’t necessarily work for other formats.

Ultimately, the only way to be sure whether a book app will sell is to create one and see. So far, I’ve sold very few of the paid versions of my apps. The ad-supported ones do better, but generate very little income. On the other hand, they don’t seem to affect sales of the print and ebook formats. I haven’t tried Amazon Underground yet, but it would be interesting to see how that compares.

KDP Select

It’s not entirely clear to me whether or not a book created with AppOpus is covered by KDP Select’s exclusivity requirement. The Terms and Conditions for KDP Select state that “During this period of exclusivity, you cannot sell or distribute, or give anyone else the right to sell or distribute, your Digital Book (or a book that is substantially similar), in digital format in any territory where you have rights.” An app is certainly a “digital format” and I suspect that it would be considered “substantially similar”, since it is effectively a book with a built-in ereader app. However, I’m not a lawyer and I don’t work for Amazon, so I may be wrong.

Source Files

AppOpus Builder is not a writing tool. Rather, it will take a collection of files (one per chapter), and turn them into an Android app. HTML files are strongly recommended for the source files, but it can also import RTF and plain text files. A basic knowledge of HTML is therefore useful, but not essential. JavaScript can also be included, and can be used to add a level of interactivity to book apps. For the purposes of this post, I’m going to assume a basic knowledge of HTML and CSS. HTML Dog has some good HTML tutorials if you need them.

Images and JavaScript

Put all of your content files in a single folder. Images, JavaScript, and other media should go in a sub-folder. When referencing external files in the HTML, prefix the path with a “./”. For example, where you might normally have an image tag such as:
<img src="foo/bar.png">

In AppOpus Builder you should instead use:
<img src="./foo/bar.png">

Linking to Other Apps

You can include links to web pages or other apps in the app store. To link to an app, you will need to know its Package Name (see the Application section below). Assuming the app’s package name is, the link to the Google Play store would be and the link to the app in the Amazon Appstore would be

These links can be used in web pages as well as in apps.

Running AppOpus Builder

AppOpus Builder consists of two files, AppOpusBuilder_Commercial.jar and AppOpusBuilder_Commercial_Ads.jar, which are delivered in a zip file. Unzip them to a convenient location, then double-click on the relevant one to run the program. Both versions work in the same way, but AppOpusBuilder_Commercial_Ads.jar includes a small advert at the bottom of the screen in the finished book app. This gives the possibility of offering a free version with adverts, and a paid version without adverts. This is a reasonably common option with Android apps.

If adverts are not included, the book app will require no special permissions. If adverts are included, the book app will require some special permissions, so that the app can download and display adverts.


Screenshot Cover
Chances are that you’ve already got a cover, and hopefully it was designed by a professional. You can use this in AppOpus, but there are other options. As you move your cursor around the display on the Cover tab, different parts are highlighted. If you want to just use your existing ebook cover, click when the edge of the rectangle is highlighted. In the dialogue box that appears, click foreground-image and select your file. Then, click foreground-scale-type and select either “fit” or “fill”. “Fit” will scale the image to fit in the screen without changing the aspect ratio. If the aspect ratio of the image doesn’t match that of the screen, there will be blank space around the image. “Fill” will stretch the image to fill the screen, avoiding blank space, but stretching (and distorting) the image out of shape if the screen’s aspect ratio doesn’t match that of the image. Remember that the user may turn the device onto its side, so that the width is larger than the height, so the distortion may be significant.

If you don’t want a fixed image that will either have blank space or be distorted, the cover can be configured to automatically adjust to the screen size and orientation. In this case, you can set images and text separately. Two images can be chosen, a background image (which will always be stretched to fill the screen) and a foreground image. In addition to the two scaling options mentioned above, there is also “center” and “pack”. “Center” will position the image in the centre of the screen. Any parts of the image too large to fit on the screen will not be displayed. “Pack” positions the image below the title text. The text can be split into header, title, and footer sections. Simply click on the relevant area, then specify the font, size, colour, and text to display.


Screenshot Contents

Rather confusingly (to me at least), the Contents tab does not define the table of contents for the book. Rather, it is used to determine how the table of contents is presented.

Click on the table of contents to see the options dialogue. Most of it is self-explanatory. If the disable-tts box is ticked, there will be no text-to-speech option in the finished app.

If the show-about box is ticked, an extra “About AppOpus” entry will be added to the bottom of the book app’s table of contents. When tapped, this entry will display a “Powered by AppOpus” screen. I disable this screen, but it includes a message at the bottom directing the user to for help and troubleshooting, so you may wish to leave it enabled.

If you wish to display ads in your book app, you’ll need an AdMob account, which in turn requires an AdSense account and an AdWords account. These can be created during the AdMob sign up process. In order to set up ads in your app, add the app under the Monetise tab of AdMob, then create an Ad Unit for it. In AppOpus, enter the Ad unit ID in the admob-id box in the options dialogue on the Contents tab. Once the app is available in Google Play, link the ad to the app on the AdMob home page.


Screenshot ChaptersOn the Chapters tab, click the folder icon in the bottom-right corner. In the dialogue box that appears, select the folder containing the content files and click Open. All of the files will be listed in the table.

Drag and drop the chapters into the correct order. Click on a chapter name to edit it. The chapters will appear in the table of contents as they are listed on this tab. If a file is renamed, click the refresh button at the bottom of the screen to reload the list.

Note: if you re-open a saved file, the chapters may not be in the correct order. Make sure you check them before creating a new .apk file.


Screenshot App

Signing and Keystores

Android apps need to be digitally signed. AppOpus Builder signs the app file, but it needs a keystore file in order to do so.

If you already have a keystore file, click on the Keystore… button to select it, then fill in the Keypass, Storepass and Alias boxes.

If you don’t have a keystore file, click on the Generate Key… button. This opens the Key Certificate Tool, which is used to create the keystore file. Click the Output As… button to select a file to save the keystore as. It is very important to keep the keystore file, alias, and passwords safe. If you wish to update an app, you will need the keystore file that you used to create it.

Fill in the text boxes using the following as a guide:

  • Common Name: Your name
  • Organizational Unit: Put something like “Apps” or “Mobile apps”
  • Organization: If you have a publishing company name, use that. If not, use your name
  • City, state, country: The city, state and country where you live
  • Alias: Leave this blank
  • Key password, store password: The passwords. You will need these if you have to update the app later

Key Certificate ToolClick Generate Key to create the keystore file. The Keystore, Keypass (Key password) and Storepass (Store password) fields in AppOpus Builder will be automatically filled in.


To select the launch icon (displayed on the phone/tablet) click Launch Icon PNG… and select a .png image file. I use the same icon as in the Google and Android app stores. I haven’t been able to determine what the splash icon is used for, and so I use the same image file for that.

Title is the title that will appear on the phone/tablet, under the launch icon. I suggest you use the same title as you set in the app stores, but note that the Google Play store won’t allow titles longer than 30 characters.

The Package Name must be unique among your apps, and should be in com.domain.appname format. For instance, if your website is and your app is called Awesome Book, the package name would be If, like me, you have a domain, just use instead of com, eg

The Version Number is used by Android to determine if an app has been updated, so make sure that every time you update an app, you increase the version number before creating the .apk file.

Finally, click Output As… to select the destination .apk file and click Create App to create the app.

Testing the App

You now have an Android app, packaged as a .apk file. If you wish to install it on your Android phone or tablet for testing before uploading, you will need to go to Settings and tick the Unknown sources box (depending on your device, that will be under Applications or Security). Once that is done, copy the file to your phone or tablet and tap on it to install.

If you don’t have an Android phone or tablet, and don’t want to buy one (a cheap one should be sufficient, as long as it’s running Android v2.3.3 or later), you can install an emulator. The Google and Amazon app markets both require screenshots to be uploaded when listing a new app, so you will need something to run your app on.

Both app stores have a facility for sending test versions to specific users before releasing the app to the general public. When uploading a .apk to Google, select the Beta or Alpha tab. On Amazon, select Live App Testing. For Google Play, the testers have to be members of a Google+ community or a Google Group. On Amazon, you simply enter a list of names and email addresses. In both cases, only the testers will be able to access the test version of the file. In both cases, you can add yourself as a tester. I strongly recommend doing this so that you can try the app on your own phone or tablet before submitting it for sale.

App Stores

To sell on the app stores, you will need to register. It’s free to register on the Amazon Appstore, while Google Play charges a one-off registration fee of $25. Once registered, uploading a new app is reasonably straightforward and similar to uploading an ebook to the various stores.

Both stores require certain images to be uploaded along with a description, etc. There is some commonality in the images they require. I suggest creating the following images, so that you have everything required for both stores:

  • Icon, 114 x 114 pixels. PNG, with transparency
  • Icon, 512 x 512 pixels. PNG, with transparency
  • Promotional graphic, 1024 pixels wide x 500 pixels high. JPEG or PNG, no transparency
  • At least three screenshots, JPEG or PNG.

Make sure that all of your screenshots are one of the following resolutions: 800 x 480px, 1024 x 600px, 1280 x 720px, 1280 x 800px, 1920 x 1080px, 1920 x 1200px, or 2560 x 1600px.

Both stores will accept videos, too. For Google Play the video will need to be hosted on YouTube, whereas for Amazon the video file is uploaded directly.

There are a few differences between the two app stores, explained below.

Google Play

Once an app is on sale at Google Play, it is possible to A/B test the graphics and description. Under Store Listing click Experiments to get started. The graphics (icons, screenshots, etc) and description can both be tested in this way. Although the test results are only directly relevant to the app, they also provide an indirect way of testing descriptions to be used on ebook and print book stores.

The Amazon Appstore doesn’t appear to have an equivalent of Amazon’s Author Pages, but Google Play does: Developer Pages. Once an app has been published, click Settings then Developer page to set yours up. A short description, developer icon and header image are compulsory. You can also enter your website’s URL and choose one app to be featured, giving it pride of place on the page.

A recent addition is the User Acquisition Performance report, which gives details of the number of visitors to the Google Play store listing, and how many of those people installed the app.

Amazon Appstore

Neither store allows pre-orders, but Amazon does allow availability to be set for a date in the future. This does, at least, allow you to set a date for the app to become available, making it easier to release it on the same date as other formats.

The Amazon Appstore now has Amazon Underground, which is similar to KDP Select for ebooks. Users install the Amazon Underground app, which gives them access to the apps enrolled into Amazon Underground for free. Developers are paid for the time that users spend in the app, currently at the rate of $0.0020/£0.0013/€0.0018 per minute.

Amazon Underground doesn’t require exclusivity, but it does require some slight changes to the app. It must have a unique package name. Amazon recommends appending “.underground”. For instance, an app with the package name would have the package name on Amazon Underground. The app must also have the Amazon Underground branding added to the launch icon. This page has full details of all the required changes.

About The Author

Russell Phillips is a computer geek and an award-winning author of military technology and history. Born and brought up in a mining village in South Yorkshire, he has lived and worked in South Yorkshire, Lincolnshire, Cumbria and Staffordshire. His articles have been published in several magazines, and he has been interviewed for the American edition of The Voice of Russia. He currently lives in Stoke-on-Trent with his wife and two children.

If you like this blog post, you’ll love all the content available for our members. Learn more about joining the Nonfiction Authors Association!