In some cases when submitting an application through your Developer Portal account, you may encounter an error while uploading a binary, that reads “Failed to upload binary. Higher minimum Android API level requires higher version code. Contact us for more information." and further "The binary you just uploaded with version code: 102 and minSDK version: 10, conflicts with an existing binary with version code: 101 and minSDK version: 17." (version numbers are arbitrary for the sake of illustration, and your app's version values might be different). It’s not immediately obvious what the problem is, however fortunately it is very easy to fix it.
This error condition usually occurs when you have several binaries for your application, for example one binary for Fire TV and one (or more) for other types of devices. The reason for the error message is something that the Android spec mandates for multi-binary submissions (http://developer.android.com/google/play/publishing/multiple-apks.html#Rules). In the error message example above, the new binary that you are trying to upload (as Binary2 in your account for the upcoming version) has a higher versionCode (102) than the previously uploaded Binary1 (that has a versionCode of 101), but at the same time Binary2 has a lower minSdkVersion (10) against the minSdkVersion of the already uploaded Binary1 that has a value of 17.
Binary1 - minSdkVersion:17 - versionCode:101 -- already uploaded Binary2 - minSdkVersion:10 - versionCode:102 -- trying to upload
As you can see, you were trying to upload multiple binaries, where one of them (Binary2) has a lower minSdkVersion than the other (Binary1), but at the same time it has a higher versionCode. As per Android rules, the higher SDK level (in this case Binary1 binary’s SDK level of 17) must also have a higher version code (in this case it must be something higher than 102). To solve this, make sure that the Binary1 binary's versionCode is higher than Binary2 binary's versionCode. You can simply rebuild your Binary1 flavor with a higher versionCode than Binary2 has and then re-submit. In general, in multi-binary scenarios, higher minSdkVersion of a binary also requires its versionCode to be higher than that of other binaries in the same submitted version of the app.
The reason for enforcing that rule is related to how the Android OS chooses which binary to download in the multi-binary scenario, considering the OS versions and supported API levels. If these were APKs in Android, then the client would look at the following:
Version Code 102 : API 10 Version Code 101 : API 17
Android goes in order of version code, starting with the largest one. It would start at version code 102 and see if it matches that APK. If not, it would try the next lowest version code. Here, all APKs that match version code 101 would also match version code 102, which means that version code 101 would actually be orphaned (it can never be downloaded by a client).
Hopefully this article will help you to resolve this issue should you ever encounter it. However, if you still experience any problems or have any further questions -- please use the Contact Us link in your Distribution Portal account: https://developer.amazon.com/help/contact-us.html and we will be glad to help.
Keywords: binary, multi-binary, update, multiple apks, conflict, upload, rules