I have a little game application Deal-O-Round in the Google Play Store and I submitted the same APK about 7 years ago (July 6, 2014 https://smile.amazon.com/Csaba-Toth-Deal-O-Round/dp/B00LK8VBLS/) to the Amazon Mobile Marketplace as well. The 2014 version was based on Google PlayN framework which allowed a web-based demo as well besides Android and iOS platforms. A lot of time passed and last year I re-implemented the whole game in Flutter, which also allows the build of a web-based demo besides Android and iOS.
Even more recently I got an email from Amazon with the title "[ACTION REQUIRED] App update required for target API Level compliance" which nudged me to try to refresh the APK in their store again. According to the email the Fire OS 6 releases require minimum API level 25 and Fire OS 7 will require minimum API level 28. That's great news, I refreshed my Flutter project and the Gradle upgrade bumped the min SDK API level to 23. And my current target API level is 29 as seen in my build.gradle. Everything is open source BTW.
android {
compileSdkVersion 29
...
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.dealoround.android"
minSdkVersion 23
targetSdkVersion 29
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
...
I'm not sure if it matters but I have a "Test Item" (SKU12345) In-App item in an Incomplete state under my application developer console, it must have been some fooling around from 2013, but my app doesn't have any in app payment. The Flutter version also doesn't have any advertisement either, the old version had (and I hated some advertisement items).
I understand that with min SDK 23 I'd drop Fire OS 5 support because that would require min SDK 22 (BTW I could revert back to min SDK 16 if needed). But something else is wrong. I suspect that this might not have to do anything with Flutter. I'm signing the APK with V1 and V2 methods. Maybe it's the extra permissions of GET_ACCOUNTS
, USE_CREDENTIALS
, or WAKE_LOCK
? For reference here is the old APK:
Everything is fine in the Google Play store. I'm looking at https://developer.amazon.com/docs/app-submission/supported-filters-on-the-amazon-appstore.html and I don't see indication that I couldn't use GET_ACCOUNTS
, USE_CREDENTIALS
, or WAKE_LOCK
.
I went back to the page I took the screenshot from. On the first ("Amazon Fire Tablets and Phones") and the last ("Non-Amazon Devices") tab all the little question marks show a "Targeted by another APK in the current version." hint. I'll need to research that more because it sounds nonsensical. The "Amazon Fire TV" tab's hints show some minSdkVersion
(for very old devices) and also "android.hardware.touchscreen"
capability hint. My game needs touch screen, so that's not surprising and the old APK wasn't supporting those either.
Reading more about the Targeted by another APK in the current version.
hint I came across https://developer.amazon.com/docs/app-submission/publish-app-upload-apk-files.html#add_multiple_apks
"With the second APK, you can select support for devices not already selected by the first APK.". I'm not sure why the store is not able to serve automatically the more recent APK and why I have to manually toggle things, but well, that's what I'll do.
So the GET_ACCOUTNS
or USE_CREDENTIALS
is not a problem supposedly (so far). If the above doesn't help to you then also check out https://developer.amazon.com/docs/app-submission/troubleshooting-android-manifest-and-device-targeting.html