With the Viewer Builder, you can create an .apk viewer app that you can submit to Google Play (previously Android Market) or Amazon Appstore. Follow the steps below to create the required files for your custom viewer app. The current version of the Viewer Builder is v2.5 (released January 2013).
☐ Application icons (36 x 36, 48 x 48, and 72 x 72 PNG)
☐ Splash images (1280 x 800 and 800 x 1280 or larger 8-bit PNG)
☐ Valid certificate
Note the following:
- You can create only multifolio viewer apps for Google Play. Single-folio apps are not available at this time.
- DPS does not support Google Play subscriptions at this time.
- You can use Google's in-app billing process to sell issues. If you offer retail issues through an enterprise subscription service, set up in-app billing for each retail folio. Otherwise, when your customers click a Buy button, they get an error message.
For information on Google Play app pricing, see Selling Your Apps in Google Play Help.
Note the following:
- You can create only multifolio viewer apps for the Amazon Appstore. Single-folio apps are not available at this time.
- The Amazon Appstore now includes support for in-app purchases and subscriptions. Setup instructions are provided later in this document.
Make sure that every person working on the publication uses the same version of the digital publishing tools throughout the process. For example, don't create and test folios using one version of tools, and then build using a newer version without thoroughly testing. Otherwise, content incompatibility issues can arise.
You cannot use the same Adobe ID to create multiple viewer apps. Create a different Adobe ID for each app. When signing in to publish folios, use the appropriate Adobe ID.
- Register as an Android Market developer or Amazon Appstore developer. It costs $25 to sign up for Android Market (Google Play). Becoming an Amazon Appstore developer is free for the first year. Complete the sign-in process so that you become eligible to submit your apps to the Android Market or Amazon Appstore.
- Create a private key certificate. You can use the same certificate for both platforms.
- Create app icons and startup screens.
- Download Viewer Builder, and create the custom Android Viewer app (.apk file). Specify the appropriate marketplace when you create the app. If you're submitting an app to both Google and Amazon, create two different .apk apps, each with the appropriate Marketplace setting.
- Load .apk file onto mobile device.
- Create and upload .folio files, and download them to the mobile devices.
To use the Viewer Builder to create a custom viewer app, create application icons, startup screens, and a cover.
Create 36 x 36, 48 x 48, and 72 x 72 pixel icons in PNG format.
When you submit the final app to the store, you are required to provide additional application icons. Consider creating a 512 x 512 icon, and then scaling that image down to create the necessary sizes.
Create a pair of startup screens for all Android devices. When the viewer is started, a startup screen appears for approximately 3 seconds. Provide two startup screen 72-ppi 8-bit PNG images with any pair of the following dimensions: 1280 x 800/800 x 1280, 1920 x 1200/1200 x 1920, or 2048 x 1536/1536 x 2048.
All devices use the same horizontal or vertical startup screen. The viewer crops the edges of the images. So, center the design for the smallest Android device you are targeting, such as 800 x 600. For best results, treat the larger area as a bleed. When the startup screen for the device rendition is created, the outside areas of the image are cropped.
Make sure that the startup screen image is different from the cover.
The Android and Amazon systems require that all installed applications are digitally signed with a p12 certificate whose private key is held by the application’s developer. Make sure that all applications are signed. The system can't install an application that is not signed. You can use self-signed certificates to sign your applications. No certificate authority is needed.
It's necessary that the certificate you create expires after October 22 2033.
Several methods for creating certificates are available, including Adobe Flash Professional and Adobe Flash Builder. If you don’t have any developer tools installed, you can use the Keytool utility to create a certificate. Keytool is a Java SDK utility that is already available on Mac OS computers. In Windows, it's necessary to install and configure Java SDK (also called JDK).
The following instructions tell you how to use Keytool to create a certificate. For detailed information, see Signing Your Application on the Android Developers site.
- Download and install Java SDK (JDK). Note the install location.
- (Optional) Set a permanent path to run Java SDK commands. Setting a permanent path lets you type JDK commands such as “keytool” from any path. That way, you don’t have to navigate to the Java SDK directory. To set a permanent path, see step 4 of the JDK site.
A certificate is created in your prompt location, such as your user name folder. Copy this certificate file to a known location. Write down the password as well.
Note: If a certificate file is not created, replace “-keystore myname.keystore” with a target path (such as -keystore c:\users\bob\bobcert.keystore) that you have access to.
Use DPS App Builder to create the custom Android Viewer app (.apk file). See Create a custom viewer for Amazon and Android devices.
Your Android device requires Android 2.2 or later and AIR 2.6 or later, which you can download from the Android Market or Amazon Appstore.
For information on testing the viewer app on the Amazon Fire, see later in this article.
Unlike Apple and Amazon, Google does not require an approval process for submitting apps to Google Play. However, it's a good idea to test your custom viewer app (.apk) file before submitting it to Google.
- Panoramas are not supported.
- Inline videos are not supported.
- Video and audio clips in web views do not work.
- HTML content that works in mobile Safari doesn't always work in browsers of other mobile devices. Make sure that you test HTML web content overlays and HTML articles.
For detailed information on publishing apps in Google Play, go here:
http://developer.android.com/guide/publishing/publishing.html
- If you have not already done so, register as an Android Market developer at http://market.android.com/publish/Home.
- Navigate to https://market.android.com/publish.
For best results, do not delete an app that you accidentally published. Unpublish it instead.
If your Android app includes retail content of any kind, make sure that you specify your public key (shared secret) using the Account Administration tool.
For information on Google Play Store app pricing, see Selling Your Apps in Android Market Help.
You can use Google's In-app Billing service to sell individual folios within your viewer app. DPS does not support Google Play subscriptions at this time.
Make sure that you set up your billing before you make your content available to customers.
Even if you offer retail issues through a subscription service, set up in-app billing for each retail folio. Otherwise, when your customers click a Buy button, they get an error message.
- Use the Android Market developer site to upload your custom viewer (.apk) app as described in the previous section. While submitting your app, click Save instead of publish if you don't yet want your app in the store before you set up your in-app billing.
- Follow the steps in the Administering In-app Billing Help topic. As you go through these steps, note the following:
- Specify the exact same In-app Product ID when setting up Android in-app billing that you use when you publish the folio using the Adobe tools. The Product ID ties the folio to the in-app billing item.
- For Purchase Type, select "Managed," not "Unmanaged." Otherwise, your customers can't restore purchases.
- Adobe does not support the Android Refund feature at this time.
- Remember the information that you provide for "Public Key." Adobe needs this information to enable in-app billing.
- Copy the Public Key into the Android field in the Shared Secrets as described in the DPS online help topics Account Administration tool. Then sign in to the Folio Producer Organizer.
To locate your Public Key value, sign in at https://market.android.com/publish/Home. Click the Edit Profile link, and then copy the text in the Public Key field. Also specify this Public Key value in the Adobe Account Administrator tool that is available on the DPS Dashboard. Add this Public Key value to the "Shared Secret" area of the Application account.
Amazon includes support for In-App Purchases: https://developer.amazon.com/sdk/in-app-purchasing.html
The Amazon Developer Portal provides an SDK and instructions for including in-app purchases in your app. However, this information is mostly irrelevant to DPS publishers because the Viewer Builder includes this information when it builds the app. Do the following actions on the Amazon site:
- Specify banking information so that Amazon can pay you when you sell content. On Amazon developer site, choose Settings > Payment Info.
- Set up entitlement IAPs for each retail folio. On the Amazon developer site, choose My Apps, and then choose In-app Items from the Actions menu next to the app you're preparing to submit. Choose Add In-App Item > Add Entitlement, and then specify the price of each folio you want to sell. (Use Add Entitlement, not Add Consumable.) Use a different IAP SKU for each retail folio. The SKU you specify for each retail folio is the Product ID you specify on the Adobe side when publishing the folio. Use a reverse DNS format such as "com.publisher.publication.issuedate" format. If you're selling this issue in other stores, such as the Apple Store, it's important that you use the same Product ID/SKU for each folio.
- If you're creating a subscription app. Set up a subscription IAP and terms (durations) for each subscription option. You create one parent SKU and individual child SKUs for each subscription duration. Again, use the reverse DNS format such as "com.publisher.publication.subscribe" for the parent and "com.publisher.publication.subscribe.annual." for each child. When you create the app in Viewer Builder, you specify one of the subscription SKUs you create.
- Obtain the shared key (also called the "public key" or "shared secret"). Then, copy and paste the shared key into appropriate field in the Account Administration tool. Obtain the public key from Amazon by choosing SDK > In-App Purchasing. Then, click the "Get your shared key to validate transactions outside your app" link. Copy it. Then sign in to the DPS Dashboard using your Application Adobe ID, open the Account Administration tool, and paste the shared key into the Amazon field.
Amazon requires that the .apk file is wrapped before it can run properly on the Amazon Fire. If you sideload the .apk file to the Amazon Fire, any pre-v25 viewer app crashes when launched. (This crash occurs because the app is enabled for retail content and the app crashes when it cannot find the sandbox.) However, you can go to the Amazon Developer Portal and download a JSON file that lets you test your .apk file in a sandbox environment without crashing. Customizing this JSON file is also useful for testing retail purchases. See Testing Your App on the Amazon Developer site. Edit this JSON file and add it to the root directory of your device. See App crashes on Kindle Fire.
Amazon first evaluates your app for approval in the Appstore, and then it evaluates it for the Fire. Amazon notifies you when your app is approved in the Appstore, but doesn't necessarily notify when it's available for the Fire.
For information about publishing apps in the Amazon Appstore, go here:
Publishers can test direct (third-party) entitlement, but cannot verify In-App Purchasing using the Amazon sandbox at this time. This process cannot be tested end-to-end prior to releasing your app.
What to expect:
Once the .json file is configured and placed at the root level of the device, you can launch the application without crashing. And, you can see your folios in your library and initiate a purchase. The download fails and displays the following error message: "Error During Download - Could not verify this purchase." This error is expected.
Amazon's local sandbox client cannot communicate with their Receipt Verification Server. They have not communicated any plans to implement such a system.
Testing In-App Purchases on Kindle Fire requires Amazon's assistance.

