Step 7: Upload APK (Binary) Files

The documentation here relates to the Binary File(s) tab:

Binary File(s) tab
Binary File(s) tab

On the Binary File(s) tab, you upload your APK files, indicate which devices your app supports, and more.

For more conceptual topics related to APKs, see the following:

If you're uploading a web app, see Upload Web App Files instead of this topic.

Binary File(s) tab

The following table describes each field on the Binary File(s) tab.

Binary File(s) tab fields
Field Description
Apply Amazon DRM?

For each app that you submit to Amazon, you can choose to apply DRM or to make your app available without any rights management constraints. DRM protects your application from unauthorized use. Without DRM, your app can be used without restrictions by any user. If you choose to apply DRM to one of your apps, you must use the DRM system provided by Amazon through the developer portal. See About DRM for more details.

Appstore Certificate Hashes

As part of the ingestion process Amazon removes your developer signature and applies an Amazon signature. This signature is unique to you, does not change, and is the same for all apps in your account. For more details, see Amazon App Signatures.

Binary file

Upload your Android APK file. (Note that the terms "binary file" and "APK" are used interchangeably here.) See Preparing the APK File for Your App. For details on uploading your APK, see Upload Your APK.

Language support

Select at least one language supported by your APK. (The default is English.) Your selection here appears on the app details page in the Appstore to let users know which language is available in the app.

Export Compliance

Accept the export compliance statement by selecting the checkbox to confirm that your app complies with applicable export and import regulations.

Use Amazon Maps Redirection

Amazon devices do not support the Google Maps API. However, the Amazon Maps API provides interface parity with the Google Maps v1 API. By using Amazon Maps Redirection, you can automatically redirect Google Maps v1 API calls from your app to the Amazon Maps API, providing a seamless maps experience in your app with no coding changes. The redirection occurs ONLY on Amazon devices.

Binary alias

Provide a unique name for your APK file, which will be used internally and will not be seen by customers. Amazon automatically provides a default name for this field.

Testing instructions

Use this field to communicate with the Amazon testing team. (If no testing instructions are needed, you can leave this field blank.) Testing instructions might include the following —

  • If your app has difficult-to-discover features, include directions here for finding those features. Also, if you need to resubmit your app based on feedback from Amazon, you can use this field to respond to the test report emails you receive from Amazon.
  • If your app requires users to log in before successfully launching and using the app, include a set of test credentials for the Amazon test team to use. If Amazon cannot successfully launch your app during testing, the app will be rejected.

Preparing Your APK

For general information about preparing your APK and the code wrapper that Amazon uses with your APK, as well as APK size limitations and other details, see Preparing the APK File for Your App. The content here assumes you already have an APK ready to upload to the Amazon Appstore.

Upload Your APK

  1. Go to the Binary File(s) tab, if necessary. (If you landed here out of context of the publishing workflow shown at the top of the screen, see Submitting Apps to the Amazon Appstore.)

    If you've already published your app and are submitting a new version, click Add Upcoming Version below your app's title.

  2. Drag your APK into the UPLOAD BINARY square.

    Where to upload your APK

    After uploading the APK, the Appstore shows the package name, version code, version name, file size, API levels, features, libraries, permissions, localizations, supported screens, and other details that will determine the device compatibility.

    Details identified by APK upload

Adjust Device Support for your APK

With your APK uploaded, the Device Support section shows which devices are supported by (or are compatible with) your APK, based on the attributes in your APK manifest. The attributes in your manifest act as filters that automatically determine which devices are supported.

Device Support

If necessary, you can manually remove support for devices that have known compatibility issues. The supported devices are grouped into three categories:

  • Amazon Fire phones and tablets: Shows the Fire phones and tablet support for your app. See the Tablet Device Specifications for more details. By default, device support for your uploaded APK is turned on for all Amazon Fire Phone and Fire Tablet devices, and for all non-Amazon Android devices.
  • Amazon Fire TV devices: Shows the Fire TV device support for your app. For details on Fire TV devices, see Device Specifications for Fire TV.

    In the Device Support dialog box, the identifiers used for Fire TV devices differ somewhat from the Fire TV naming conventions in the documentation and amazon.com website. Here's what these names in the submission console refer to:

    Device support name Friendly name
    Fire TV (2014)—AFTB Fire TV (Gen 1)
    Fire TV (2015)—AFTS Fire TV (Gen 2)
    Fire TV (Gen 3)—AFTN Fire TV (Gen 3)
    Fire TV Stick—AFTM Fire TV Stick (Gen 1)
    Fire TV Stick with Alexa Voice Remote—AFTT Fire TV Stick (Gen 2)
    Fire TV Edition - Element 4K—AFTRS Fire TV Edition - Element 4K
    Fire TV Edition - Toshiba 4K—AFTKMST12 Fire TV Edition - Toshiba 4K
    Fire TV Cube—AFTA Fire TV Cube
  • Non-Amazon Android devices: Shows Android devices on which your app could be installed through the Amazon Appstore for Android app. This option provides additional avenues of distribution for your app (and is especially helpful if your app is only available in the Amazon Appstore, not on Google Play). Within this non-Amazon Android devices grouping, devices are sorted into three groups: Supported (compatible), Excluded (manually de-selected), and Unsupported (incompatible based on your manifest settings).

To adjust which devices are supported by your app, click Edit device support and update the devices indicated. Toggle device support on (green) or off (gray) as appropriate. Use the tabs at the top of the dialog to move between categories.

For example, if you're uploading a streaming media app designed for Fire TV devices, click Edit device support on the Amazon Fire TV devices row and select the appropriate device support options on the Amazon Fire TV tab:

Device support for Fire TV

To understand why a device isn't supported by your APK, move your mouse over the help icon next to the device name in the Device Support dialog box, as shown in the following image.

Device Support reasons why

For additional information about supported devices for your APK, see the following:

Searching for device support

The All Devices drop-down menu (the upper-left of the previous screenshot) also provides a quick way to review your device support options:

  • All Devices: Shows every possible device
  • Supported Devices: Shows those devices supported by your APK
  • Manually Excluded: Shows devices that have been de-selected
  • Unsupported Devices: Shows devices that have been automatically excluded due to incompatibility issues with your APK. This includes devices supported by another APK.

For non-Amazon devices, at the bottom of the Device Support dialog, there's an option for All other Android devices. The Non-Amazon Android devices can be toggled on or off as a whole, or you can manually adjust device support. This setting allows your app to be distributed to any other Android devices, including future compatible Android devices. New devices are added regularly based on device popularity. Through manifest filtering, the Appstore automatically determines the device's compatibility.

If you turn off "All other Android devices," you change your compatibility strategy from a blacklisting approach to a whitelisting approach for non-Amazon devices.

If you want to add another APK for the same app, see the next section, Add Multiple APKs for the Same App.

Add Multiple APKs for the Same App

More conceptual details about uploading multiple APKs for your app are explained in Multiple APKs for the Same Application Listing. Note that adding multiple APKs for the same app is supported for Amazon devices only. The Amazon Appstore does not support multiple APKs when targeting non-Amazon devices. Make sure each APK has the same package name in the manifest but also has unique versionCode in the Gradle build file.

When you add multiple APKs, because each APK can only be available for a single device, you have to remove support for devices from your first APK that you want to be available for the additional APKs. The following step-by-step instructions and screenshots will clarify this selection process.

To upload multiple APKs:

  1. If you haven't already uploaded your first APK, see Upload Your APK above.
  2. For the first APK you uploaded, click Edit device support and remove support for devices that you plan to target with your second APK.

    For example, suppose you have two APKs for your Fire TV app: "APK-alias1" and "APK-alias2". With APK-alias1, you want to target all Fire TV devices except Fire TV (Gen 3). For APK-alias1, click Edit Device Support next to Amazon Fire TV Devices and clear the check box next to "Fire TV (Gen 3)." This will make this device available for APK-alias2 to select. If you don't remove the device support from the first APK, you won't be able to select it with the second APK.

    Removing device support from the first APK
    In this scenario, we removed support for Fire TV (Gen 3) because we want to select it with our second APK

    Note that if you're updating an existing APK, when you de-select some supported devices, you may see a "Reduced device support" warning. This warning lets you know that you're shrinking the number of supported devices for your app. Customers who previously installed your app on the device that you de-selected, which is now unsupported by your app, won't get the update. You can read more in Warning: Reduced device support. Since you're uploading multiple APKs, you can disregard this notice. After you upload another APK and select support for these de-selected devices, the warning will no longer be applicable.

  3. In the Binary alias field, give your APK a recognizable name to distinguish it from the next APK you upload.
  4. Click the Save and Add a Binary button and upload another APK.

    When you click the "Save and Add a Binary" button, the devices supported by the first APK are unavailable for the second APK — because two APKs can't be installed on the same device. Under the greyed-out devices, you should see the phrase "Targeted by another binary in current or prior version." (Targeted just means that you selected support for the device with your app.) Remember this rule: Multiple APKs cannot be installed on the same device. With the second APK, you can select support for devices not already selected by the first APK.

    Continuing with our previous example, suppose you upload "APK-alias2" and want Fire TV (Gen 3) to support this APK. You already cleared support for this device with the previous APK, so it should now be selectable with this second APK.

    Fire TV (Gen 3) can be selected because you didn't already select support for it with the previous APK. The other devices have a gray X, meaning they are unavailable to be supported by this APK, because they are already supported by the previous APK.

    With multiple APKs, unlike with Google Play the Amazon Appstore does not automatically assign the APK based on the API level or versionCode. You must manually select the supported devices when uploading multiple APKs. This is especially true for Fire TV devices, because automatic manifest filtering for Amazon devices is largely ignored for these devices.

  5. Add a name for the APK in the Binary alias field to distinguish it from the first APK.
  6. When finished, click Save.

    You can add more than two APKs per app. Continue adding more APKs as desired.

Replace the APK of a Published App

To replace the APK of an app that is already published, follow these steps.

  1. Build your new APK, giving it a new versionCode in the app's Gradle build file.
  2. Sign in to the Developer Portal, and click the name of the app you want to modify.
  3. Near the top of the page, in the area below the name of your app, click Add Upcoming Version, and click OK. You use the Upcoming Version feature both for updating existing APKs and adding new APKs.
  4. Go to the Binary File(s) tab and click the Edit button. The existing APKs are listed on this page.
  5. In the Binary file section, click the X next to your APK file. This removes the APK without requiring you to re-select device support.
  6. Drag and drop the new APK file onto the Upload Binary box. (If you're adding multiple APKs, see Add Multiple APKs for the Same App above.)
  7. Click Save.
  8. Choose the Release Notes tab. Each update you make to your original app requires release notes.
  9. Click Save and then Submit App.

Troubleshooting Common Errors

This section provides troubleshooting information related to APK submissions on the Binary File(s) tab.

Error: Duplicate package name

When uploading an APK, you see the following error:

"Failed to upload binary. The package name of the uploaded binary, com.amazon.android.yourapp, is already in use by an app owned by a different developer. Please contact us for more information.

First check to make sure that you have not uploaded this APK file on another Amazon developer account as either an app submission or Live App Test. If you haven't uploaded this same APK under another account, go to Support > Contact Us and report the issue, noting the package name.

Note that when using development environments such as Unity or pre-existing manifest files, it's possible that your app’s package name will have a placeholder value that should be changed prior to submission. The package name of your APK file must be unique to the app you are publishing and is usually in the format of com.companyname.appname.

If you have an association with a developer or publishing company that might have uploaded your app for Live App Testing, contact your development partner to confirm that they have not submitted your app’s APK file on their account. If they have, ask them to end the current Live App Test. Then contact us with the package name to resolve the issue.

Warning: Reduced device support

When adjusting device support for an APK, you see a warning that says the following:

Device support has been reduced from the previous version. Some existing customers will not be able to upgrade. To resolve manifest conflicts, Amazon recommends editing the manifest to retain your current device support.

This message means that, with your newly uploaded APK, you have introduced new attributes in your manifest or build.gradle file that shrink the number of compatible devices. Most commonly, you may have incremented the API level, which reduces the number of devices that can support the update. As such, the Appstore is warning you that some devices may not be able to install this update.

For example, suppose you publish an APK with manifest attributes that require at minimum API level 19, and customers with a device supporting API level 19 (but not support for any level greater) install the app. Later, you update the app with new features or permissions requiring APK level 22 as a minimum. This new update will be incompatible with the previous version of the app the customer (with API level 19) installed. As a result, the customer will not see that an update is available.

Target device not available

When uploading a new APK, you see a message that says a particular device is not supported for your APK. The message might be as follows:

Your APK manifest requires capabilities not present on this device.
android:minSdkVersion = '22'; device requires '15'

To see the reason the device isn't supported, move your mouse over the help icon next to the device name in the Device Support dialog box. See Adjust Device Support for your APK above for more details. The incompatibility could be due to the API level, OpenGL compression format, CPU, screen size and density, device features, or even other factors about your app such as lack of availability in the geographic locale.

Targeted by another binary in the current version

If you're uploading multiple APKs, the device might already be supported by another APK. If so, when you move your mouse over the unsupported device, it says:

Targeted by another binary in the current version.

Multiple APKs cannot support the same device. You'll need to edit the device support for one APK so that you can select support for the device with the other APK. See Add Multiple APKs for the Same App for step-by-step details. See Multiple APKs for the Same Application Listing for a more conceptual background.

Next Steps

Go to the next step: Step 8: Submit Your App and Check Status.