Which compileSdkVersion should I use in my android project? - android

I'm using latest dependencies in my project. My minSdkVersion is set as 15 and targetSdkVersion is 26. Which build tools and compileSdkVersion should I use so that the app can be run even in Adnroid 5.
Here are the details-
compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
applicationId "com.app.shoppingbull"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
}
Will these work fine in all devices or I have to reduce the CompileSdkVersion?

Always follow this,
minSdkVersion <= targetSdkVersion <= compileSdkVersion
Because, when you develop app always target the latest SDK so that you provide the latest features of Google to your user.

According to source.android.com if you want to make your App can be run in Adnroid 5 and newer, you should set the minSdkVersion to 21
tip: don't make your minSdkVersion lower than 21

Your application will work in the range of minSdkVersion and targetSdkVersion api level.
You should target your app to the latest version of Android SDK version (see SDK Platform release notes) to make sure you've covered all the Android version. It also force you to check if your code is working correctly with the latest version.
So, change your app build.gradle to something like this:
compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
applicationId "com.app.shoppingbull"
minSdkVersion 15
targetSdkVersion 28 // latest stdk
versionCode 1
versionName "1.0"

Ideally, your targetSdkVersion and compileSdkVersion should be the same, and the latest. That's 28 at the current time of writing.
minSdkVersion dictates the minimum version your app will support, so having a compile/target of 28 will still let you run on 15.

Related

Compiling for multiple sdk versions

I have installed SDK 16 (android 4.1), 20 (android 4.4) and 27 (android 8.1) and the code is configured with the following specs
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.test.android"
minSdkVersion 16
targetSdkVersion 25
versionCode 25
versionName "2.6.7"
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
I want to make sure that the app is fine when installing on an android 4.1. Is that enough to modify compileSdkVersion to 16? Or I have to change buildToolsVersion accordingly?
target and compile level should be the highest possible and you must do so as Google will happen to reject low targets in the future.
Incompatible code will be noted in the IDE as red warnings as you develop. Usually with such a warning as: "Code XX need a newer version (22) and minSdk is 16"
Those errors make your app incompatible for older for versions.

Minimum Sdk support doesn't work for my app. How to resolve this?

I've just developed an app. I set API23 while creating project. Now I changed Min Sdk version to API 16 via File>Project Structure > app>flavors. But app won't run other than API 23 (Marshmallows).... What do I do now??
Did you change the minSdk to 16 in the build.gradle?
Try to add minSdkVersion to 16 in your app>build.gradle file:
android {
defaultConfig {
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
}

Running different version in Android library versus your app

I have the following in my main app:
...
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
minSdkVersion 8
targetSdkVersion 23
versionCode 19
versionName "1.0.5"
}
...
In a library I use, this is defined:
...
android {
compileSdkVersion 17
buildToolsVersion "19.1.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 7
}
...
I have uppgraded my API target etc. in my app. The library I have, use the same API target etc. (haven't changed the code). If I upgrade my app and use libraries, can I leave them as is? Or do I need to sync the two in respect with compileSdkVersion, buildToolsVersion, minSdkVersion and targetSdkVersion?

How to set android target level 21

I recently finished developing my app. and I want to change the target API level of the app to 21. Should I change it to 21 or leave it at 19?
Also what changes would I have to make to the gradle file to make the target set to 21?
Thanks
Go to the module's build.gradle file (NOT the one for the project) and replace 19 with 21. It should look similar to below
compileSdkVersion 21
buildToolsVersion '21.1.2'
defaultConfig {
minSdkVersion 8
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
Also change this in the manifest
<uses-sdk android:targetSdkVersion="21"></uses-sdk>

My app's minSdkVersion is 14 and targetSdkVersion is 21 but Google Play judge it just support Android 4.0~4.4

compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "me.drakeet.seashell"
minSdkVersion 14
targetSdkVersion 21
versionCode 80
versionName "2.2"
}
Above code is in my gradle.build, and my app run perfectly in Android Lollipop (5.0), so I am puzzled that why Play judge and limit it just support Android 4.0~4.4, why not 5.0+?
Thanks!
I have fix it.
just add:
maxSdkVersion 21
in the gradle.build nearby minSdkVersion.

Categories

Resources