I love the smell of fresh ports in the morning. Unfortunately for me—but lucky for you—developing for Amazon Appstore is not really "porting." It’s pretty much the same as your Android build for Google Play.
In this blog post, I'll cover the seven basic steps for bringing your Unity app to the Amazon Appstore, quickly and easily.
First, let's establish some assumptions about your game.
We are assuming in this post that you have developed a Unity® game that:
- Works on Android devices.
- Does not include game mechanics that rely on Google Play services.
- Uses the Unity® Purchasing API, or it doesn’t use In-App Purchasing at all.
1. Develop your Android app or game
Amazon Fire TV and Fire tablets run Fire OS, Amazon’s version of Android. Current Amazon devices are running Fire OS 5 based on Android L, with some future devices being released with Fire OS 6 based on Android N. If your game runs on Android L or N, it will run on Fire OS. Know which OS you want to target based on the devices you want to support. The Amazon Appstore developer console supports multiple APKs based on device configuration.
For more information about targeting Fire OS 6 specifically, check out this blog about developing for devices running Fire OS 6.
2. Address Google Play services
Amazon devices do not support Google Play services. If your game utilizes Google Play services, you should check if it is available at runtime and fallback gracefully.
Note: You can still upload a game with Google Play services if you only want to target non-Amazon devices.
3. Remove features that require hardware not available on targeted devices
Amazon’s current first-party devices lack GPS and cellular data, and Amazon Fire TV devices do not support touch screens. Make sure your game doesn’t require support for these features. Learn about Amazon device specs for Fire tablets and Amazon Fire TV.
For more information, visit the targeting Amazon devices with your Android manifest technical documentation.
4. Flip the store switch of the Unity® Purchasing API in your project
You can do this using the editor. Just set the target store using Unity® IAP’s Window > Unity IAP > Android > Target Amazon menu item. This is used to toggle between Google, Amazon, and other Android stores, too.
Alternatively, you can call the API and do it in code with this snippet:
5. Create your Amazon build
Just click the button to build your game as if you were building any Android build.
6. Set up your IAP and DRM support in the Amazon developer console
If you don’t have any - great, skip to the next paragraph. Otherwise, you can follow this guide to create and submit IAP items. For simplicity, you can use the same SKU names as the ones on Google Play, but you don’t have to. Just make sure you change them in your code, too.
7. Test your game, then submit it to the store
You can upload your game to the store and test it with a feature we call Live App Testing on the Amazon developer console. This will help you with testing the In-App Purchasing if you had it. It will also help you see your submission on the Amazon Appstore right before you make it live and have a limited number of beta testers to test it. Follow this guide to get started with Live App Testing.
After you are ready and everything looks great in Live App Testing, you can promote the submission to live.
A note about games developed with older versions of Unity®
If you have a game app developed with an older version of Unity® (such as Unity® 4.5 or 4.6, when
UnityPlayerNativeActivity was the default activity), your game might have a one to two second blank white screen before the game loads for the very first time in the memory. The issue is due to Android N’s cold start while the app loads to memory (and waits for all the work to be completed). This issue happens for all Nougat devices and is not specific to Fire OS 6.
To fix the issue, upgrade to the latest version of Unity®. If upgrading is not an option, you can try updating your Android Manifest file b changing
UnityPlayerActivity, available since Unity® 5.0b12. For more information, see Android Manifest in the Unity® documentation.