This is a beginner question, but what are the steps needed to get my app to run on more devices? I noticed that my new update (on beta) is running on fewer devices. Do I just need to update the targetminsdk version in build gradle or is there anything else I need to do? I think I should be aiming for minsdkversion 18?
My versions in gradle are here
compileSdkVersion 23
minSdkVersion 21
targetSdkVersion 22
Min sdk version : Is the earliest release of the Android SDK that your application can run on. So this is what you want to change if you want more devices supported for your app.
Target sdk version : The version your application was targeted to run on. Ideally this is because of some sort of optimal run conditions.
Android Developers forum says :
The dashboard for Platform Versions is updated regularly to show the distribution of active devices running each version of Android, based
on the number of devices that visit the Google Play Store. Generally,
it’s a good practice to support about 90% of the active devices, while
targeting your app to the latest version.
For more details, go through : Supporting Different Platform Versions
For API 18 : your app will run on approximately 76.9% of the devices that are active on Google Play Store.
For API 21 : your app will run on approximately 40.5% of the devices that are active on Google Play Store.
Now that is a huge difference, that you may not really want for your app. So you need to weigh your pros and cons of having Latest API support to getting more users. I would infact recommend you to go for API 18 instead of 21, unless you have some very important functionality that necessitates API 21 and above and can't be done without.
Related
I am new to developing Android apps, just started learning. Deciding to go with a very simple app (game), to start with, for learning purposes, I did some research on the different versions of Android devices, and found as of May 2019, KitKat (Android 4.4 / API 23) still had about 6% of the total devices (which equated at that time to roughly 172.5 million devices). My thought was this would be a good cutoff/target to build this app.
However, I have since learned that (as of August 1, 2019 for new apps, and November 1, 2019 for updates), Google Play requires a minimum level of Pie (Android 9 / API 28) to be used.
Does this mean that I can not publish an App that supports older devices back to KitKat? Or am I not understanding something?
The targetSdkVersion is completely separate from the minSdkVersion you use as per the Picking your compileSdkVersion, minSdkVersion, and targetSdkVersion blog post.
While Google Play requires that you target a recent version of Android, you can set your minSdkVersion to any value.
Something doesn't add up:
According to Google Play’s target API level requirements new apps for Android as of June 2019 cannot target Android versions below 8. Starting with August 2019, nothing below version 9.
Yet, according to Distribution dashboard the 9's version devices share is just a bit above 10% while 9 and 8 combined get you to about 30%.
Am I correct to deduce that anyone thinking of creating a new app today (June 2019)
can only reach 30% of his Android audience (via Play Store) and
if s/he doesn't make it before August, only 10% of the whole Android users can be reached?
Apple has a similarly sounding page here, but: 1. it mentions iOS 12 share being above 80% and 2. I don't think built using iOS 12.1 SDK or later really means targeting iOS 12.1 and above.
Current Xcode still lets you target iOS 8.0 (do they still accept it into the App Store?) which still happily runs on 2011 iPhone 4S despite its minuscule market share.
The targetSdkVersion restriction was introduced to prevent app developers from using old apis like permissions to bypass runtime permissions.
An app targeting older api version was always allowed all required permissions at installation time. With the introduction of run time permissions, user has a better understanding and control of permissions in app.
The minSdkVersion is the one which actually affects from which version of Android your app runs.
API Level 21 would do good as it has near to 85% coverage of devices.
The restrictions that the Play Store imposes is on targetSdkVersion. You are confusing that with minSdkVersion. minSdkVersion controls how old of an Android device can run the code, and this is not affected by the Play Store restrictions.
In August 1, Google Play requires new apps to target at least Android 8.0 (API level 26). But in appgyver, I notice the latest available version is 4.5.3. Is there any way to upgrade it? Thanks!
I having the same issue, which is the maximum API level which appgyver supports is 21 only. GooglePlay required at least API Level 26 on August 2018 onward.
AppGyver just officially answered this question here.
TL;TR AppGyver is using Crosswalk, an Intel product, to build Android apps, and Intel has shut down Crosswalk over a year ago, now it is not possible for AppGyver to update their Build Service without rewriting the entier Android part, which would cost them too much, Supersonic and Steroids being depreciated, Android is officially abandonned by AppGyver, the Build Service will stay as is for apps that are internally distributed but won't allow to build apps destinated for Play Store.
Edit: I found a solution that allow me to get the app accepted on the Play Store, but app will crash on Android 8.
I then tested to install my app from the Play Store on a Android 6 with success but as we could expect it crashes on Android 8, the edited Target SDK number dupes the Play Store so it lets the APK in, but in the end it hasn't been built with Android 8 capabilities, so it won't work on that version.
All I had to do was to import my APK in APK Icon Editor, go in the Properties tab, change the Target SDK value to 26 (be sure to keep a lower value in the Minimum SDK field as it's the one telling what Android version can actually instal your app, if it's high then older phones won't have access to your app), and click on Pack APK to generate a new signed APK that is accepted by the Play Store!
Its as easy as this:
I then tested to install my app from the Play Store on a Android 6 with success but as we could expect it crashes on Android 8, the edited Target SDK number dupes the Play Store so it lets the APK in, but in the end it hasn't been built with Android 8 capabilities, so it won't work on that version.
Edit: it seems like it also crashes on Android 7 :(
Appgyver is constantly working on their platform and bringing latest updates. hopefully soon this issue will be resolved as well.. try contacting their support
As I was developing, I published to SDK 21, Lollipop, and I'm not able to use it on my KitKat device. The applications are really simple and I only used the SDK for the animations and for material design, however two things come up when I try and make changes to the play store.
I'm not sure what to set for my app. There is target SDK, minimum sdk, and such. I set all of these to 21 to 22. Now, if I try and publish an app that uses SDK minimum 11, Play gets mad and says that it cant roll back on devices. I don't care to update the users phones. Its a simple application that doesnt require that, but it won't let me update and replace the primary apk.
What should I do? What should I change? Apps are posted here under Thered Software on Google Play.
You can publish multiple apk's for different api-levels: http://developer.android.com/training/multiple-apks/api.html
First you should make sure you understand the difference between the compile SDK, minimum SDK, and target SDK versions. These are explained well in What is the difference between min SDK version/target SDK version vs. compile SDK version?.
Now, if I try and publish an app that uses SDK minimum 11, Play gets mad and says that it cant roll back on devices.
It would help if you posted the specific error message that the Play Store shows you, but it sounds like you are trying to upload an APK with a lower version code than an existing version of your app.
For example, let's assume you previously uploaded an APK that had a min SDK of 21 and you labeled that APK as version 56 of your application. Any version you upload now needs to have a version code of 57 or higher. This is because Android uses this version code to determine which version of an application is "newer."
This is specified in your build.gradle, as below:
android {
defaultConfig {
versionCode 56
}
}
Change your minsdk requirement in the manifest.
Do a new release (don't forget to increment the version code).
That is all.
What happens to existing users with the app installed when minSdkVersion is raised and their SDK version is less than that?
Do they still get the update from Google Play with a subsequent crash? Or do they stop getting updates from Google Play?
Below happens on minSdkVersion change
On apk upload, Google plays warns you on minSdkVersion telling how many users will be affected.
Existing users lower than minSdkVersion won't get update and cannot
see app in PlayStore
Existing users lower than minSdkVersion, if they uninstall, cannot
reinstall the application.
I suggest you use multiple apk option in PlayStore and continue to update your newer apk. Just keep the old one as it is.
For example, you can publish your application with one APK that
supports API levels 4 - 7 (Android 1.6 - 2.1)—using only APIs
available since API level 4 or lower—and another APK that supports API
levels 8 and above (Android 2.2+)—using APIs available since API level
8 or lower.
For more, read the android documentation on multiple apk support.
They will not get an update and it won't show up on Google Play for them any more. The version they have installed will remain on their device.