Migrating An Existing App to the Amazon Appstore
Depending on your app's code, you may need to make some updates to your code base for your app to successfully run on Fire OS devices. This page discusses the requirements that your app must meet and migration recommendations for submitting a Fire OS app to the Amazon Appstore.
- Overview of the Migration Process
- Supported APIs, Services, and Features
- Supported API Levels
- App Compliance
Overview of the Migration Process
Use the following process to guide you in migrating an existing Android app to be compatible with Fire OS for the Amazon Appstore:
- Migrate any APIs, services, and features to those supported by Fire OS, if necessary.
- If needed, update your minimum API level as required for the Fire OS devices that you plan to support.
- Remove any unsupported features from your app.
- Recompile your app.
- Submit your app to the Amazon Appstore.
Supported APIs, Services, and Features
If your app uses any APIs, services, or features that are not supported by Fire OS, update your code to use the equivalent Amazon supported services and features.
The following table lists APIs, services, and features to modify in your Android app to enable it to work with Fire OS.
|API, Service, or Feature||Action||Migration Documentation|
|Google Play In-App Billing||Use the Amazon In-App Purchasing API.||Migrating from Google Play In-App Billing (IAB) v3.0 to Amazon In-App Purchasing (IAP) v2.0|
|Google Maps||Use the Amazon Maps API.||Migrating an App from Google Maps v2|
|Google Cloud Messaging||Use Amazon Device Messaging.||N/A|
|GPS geo-location on tablets without a mobile data plan||Use Wi-Fi geo-location or code your app to degrade gracefully.||N/A|
|Any phone feature||Code your app to degrade gracefully.||N/A|
|Device orientation||See Device Orientation.||N/A|
|Unsupported intents||See Android Intents Supported on Fire Tablets.||N/A|
|Unsupported screen sizes and layouts||Declare support for screen sizes in the AndroidManifest.xml.||N/A|
If you're using Firebase in your app and are looking to keep using Firebase, you might need to implement some alternatives. The native Firebase SDKs depend on Google Play services, which are not available on Amazon devices. If you're using native Firebase SDKs, you have three main options:
- Disable Firebase on Amazon devices: This might be the minimum viable approach that allows you to learn about your Amazon users and build up the case for investing in an alternative Firebase product.
|Cloud Firestore||The newest NoSQL cloud database to store and sync data for client- and server-side development||Yes|
|Firebase Machine Learning||"A mobile SDK that brings Google's machine learning expertise to Android apps"||No||AWS Amplify Predictions|
|Firebase Authentication||A framework to authenticate users to your app||Yes|
|Cloud Storage||An object storage service (e.g. photos or videos)||Yes||AWS Amplify - Storage|
|Realtime Database||The original NoSQL database for mobile apps that requires synced states across clients in real-time||Yes||AWS Amplify - DataStore|
|Crashlytics||A crash reporter to track app issues||No||Sentry|
|Performance Monitoring||A service to "collect performance data from your app"||Yes|
|Analytics||A Google Analytics integration across Firebase features||Yes||AWS Amplify - Analytics|
|Cloud Messaging (FCM)||"A cross-platform messaging solution to send messages at no cost."||Yes||ADM|
|In-App Messaging||Allows you to send targeted, contextual messages that encourage users to use key app features||No||AirShip|
|Remote Config||A service to "change the behavior and appearance of the App without publishing an app update"||Yes|
AWS Amplify is a set of tools and services that enables developers to build secure, scalable full stack applications. It offers a variety of features that can be a suitable replacement for Firebase. This table below lists those features:
|AWS Amplify Feature||Description||Firebase Equivalent|
|AWS Amplify - Authentication||An interface for authenticating users||Firebase Authentication|
|AWS Amplify - Storage||An interface for managing user content for your app in public, protected, or private storage buckets||Cloud Storage|
|AWS Amplify - DataStore||A way to synchronize and persist online and offline data to the cloud using GraphQL data models||Firebase Realtime Database / Cloud Firestone|
|AWS Amplify - Analytics||Analytics data for your app with built-in support for Amazon Pinpoint||Google Analytics for Firebase|
|AWS Amplify - Predictions||Machine learning into your application||Firebase Machine Learning|
|AWS Amplify API & Functions||An interface for making requests to trigger AWS Lambda functions||Cloud Functions for Firebase|
Check out AWS Amplify Docs for more details.
Amazon Device Messaging (ADM)
ADM is a push-messaging solution that lets you send messages to Amazon devices that run your app, which makes it a potential alternative to Firebase Cloud Messaging (FCM). You can use Amazon Pinpoint as a platform to manage and target your messages. For more details about ADM, see Overview of Amazon Device Messaging.
Sentry, an open-source solution, provides "a cloud-based application monitoring platform that helps you identify issues in real-time." See the Sentry documentation for more details. Sentry "captures data by using an SDK within your application’s runtime. These are platform specific and allow Sentry to have a deep understanding of how your application works" (Getting Started).
Airship is a customer engagement platform that you can use to connect with your users by "push notifications, email, SMS, and in-app messaging." To learn more, see Getting Started.
Supported API Levels
Amazon recommends setting a minimum API level of 10 to ensure compatibility with all Fire tablets. For information about the Android OS versions for the Fire tablets, see Fire Tablet Device Specifications.
If your app uses methods introduced in:
- API levels 11 through 15 - You must modify your implementation such that you do not call those methods on Kindle Fire (1st Gen).
- API level 16 or 17 - You must modify your implementation such that you do not call those methods on Kindle Fire (1st Gen) and Kindle Fire (2nd Gen) tablets.
- API level 18 or later - You must modify your implementation such that you do not call those methods on Kindle Fire (3rd Gen).
For information about specifying API levels in your app, see Specify Minimum and Target API Levels in the Android training guide.
Before submitting your app to the Amazon Appstore, make sure that your app meets all of the requirements.
- Unsupported Features: Your app cannot include any of the following features, all of which are unsupported by the Amazon Appstore:
Note: If your app uses an API or hardware technology not supported on Fire OS, Amazon recommends that you remove or gracefully degrade any feature that requires that service. For example, your app might display a message stating that the feature is not currently available on this device.
- Screen savers
- Custom or third-party onscreen keyboards (use the default onscreen keyboard instead)
- Home screen widgets that manipulate the user interface
- disable_keyguard permissions
- Lock screen customizations
- App Content: Your app must comply with Amazon's Content Guidelines. See Amazon Appstore Content Policy Requirements.
- App Testing: Test your app thoroughly before submitting it to the Amazon Appstore. To review test criteria and recommended test cases, see Test Criteria for Amazon Appstore Apps.