I'm currently developing on an app using:
android {
compileSdkVersion 25
buildToolsVersion "25.0.0"
...
defaultConfig {
...
minSdkVersion 19 // to be 16
targetSdkVersion 19 // to be 25
...
}
}
As you can see my min/max APIs are both 19, but my intention is to build for 16 to 25. (The app has already been developed and used in this range.) At API 19, I get ~200 lint warnings/errors, some for various forms of deprecation. So my question is:
Would fixing all lint errors under API 19 cause app incompatibility problems when changing the API to range from 16 to 25?
PS. No I can't test because I simply have no access to devices of earlier/later AOS's. Or did I miss something?
Related
This question already has answers here:
Android: Get TargetSDKVersion in runtime
(5 answers)
Closed 2 years ago.
I am trying to determine the Build SDK level from within my app. I tried
Log.i( "MYAPP", "SDK="+Build.VERSION.SDK_INT );
I previously had been building for level 28, but recently upgraded to level 30.
My module's current build.gradle file included:
android {
compileSdkVersion 30 // was 28
defaultConfig {
applicationId "com.ramrod.MyApp"
minSdkVersion 23
targetSdkVersion 30 // was 28
more ...
Strangely, logcat still shows level 28.
I've re-synced, did a clean and rebuilt the app but no change.
What's going on
?
As you can see in the documentation here, SDK_INT returns the OS version of the device in which the app is running, and not the targetSdkVersion you're looking for.
public static final int SDK_INT
The SDK version of the software
currently running on this hardware device.
This value never changes
while a device is booted, but it may increase when the hardware
manufacturer provides an OTA update.
To get the targetSdkVersion you need to use ApplicationInfo.targetSdkVersion class:
packageManager.getApplicationInfo(youPackage, 0).targetSdkVersion;
The application I installed on Google Play does not work on android 5 version and android 6 version. What would be the reason ?"The application is closed." error is displayed on the screen. Application Google Play Store Link : link
Gradle Code:
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.frtparlak.EnglishWordTest"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
( A guess since no stacktrace is attached )
While you define 'minSDKVersion 16' you are still allowed to use code in your application incompatible with e.G. sdk 16.
Your compiler warns you but if you ignore these warnings and dont handle them your app will crash on some devices.
To fix it you can use the linter or just review your warnings and or your crash report.
i made android app for minSdkVersion 23 and targetSdkVersion 23.while launching i saw that this can only support 5000 devices in 15000 devices.i want to make this app support for all devices.how can i do?
defaultConfig {
applicationId "com.love.ksr_red_app"
minSdkVersion 23
targetSdkVersion 23
versionCode 2
versionName "2.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
It depends on minSdkVersion and targetSdkVersion.
Try making minSdkVersion to lowest OS version to which you make your app compatible with.
And make targetSdkVersion to the latest OS version available. This will make sure that your application is targeting towards all the devices available in the market and will compatible with them.
i want to make this app support for all devices.how can i do?
Well..., That looks practically impossible. Though you can try below thing... which will make your app support most of the devices that are present in the market
1) Launch android studio and Create new project
2) Name new project
3) select the minimum support version user friendly
Look it will be supporting 96 % of the devices in the market
Things to keep in mind :
Very old devices are no more there in market like android 1.0 to 4.0
By doing this way it ensures you are going to give support to the maximum number of the devices you can
It will make and alter the things necessary for you in the project
Most importantly... you have to manage exceptions and build versions via code..!!
There are some devices like VIVO in india or other countries which takes android and modifies it to FuntouchOS which will not let you start your program ON_BOOT_COMPLETED... Such phones are based on android and not purely android like others.
Thats why it is not practically possible to support all the devices which shows you in Google console in numbers; while uploading an app
Hope it helps you or someone else
Change your buile.gradle with this configration.
**android {
compileSdkVersion 25
defaultConfig {
applicationId "com.websinfotech.apptophonecallexample"
minSdkVersion 15
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
}**
In my code I have the following
PhoneNumberUtils.normalizeNumber(editUserInfosPhone.getText().toString())
But when I inspect the class, the Lint parts of the inspection tells me the following:
Call requires API level 21 (current min is 15): android.telephony.PhoneNumberUtils#normalizeNumber
I have in my app's build.gradle the following :
defaultConfig {
//package and code version parts skipped
minSdkVersion 15
targetSdkVersion 25
renderscriptTargetApi 22
renderscriptSupportModeEnabled true
}
But the codes that requires API level 21 works on a device with Jelly Bean API 16.
Why is it working on that device?
I know this might be a easy question to some people, but i been googling this for this entire afternoon and try to find out how to set up the build.gradle file in my Android project.
I am updating some APIs and making them ready to Android M. Now everything is fine now. However, i got confused about the minSdkversion,targetSdkversion,complieSdkVersion.
My current setup is
android {
compileSdkVersion 'android-MNC' //this was 21
buildToolsVersion "22.0.1"
defaultConfig {
...
minSdkVersion 11
targetSdkVersion 'MNC' //this was 21
...
}
...
}
As you can see from the comments, my app was complied and target API21 before and now i change it to MNC in order to cover the whole range from api11to MNC.
This is my test cases,
Device with Android M(API22)---OK
Device with Android 5.1.1 (API22)---error and FAILED_OLDER_SDK
If i change my setup to
android {
compileSdkVersion 21
buildToolsVersion "22.0.1"
defaultConfig {
...
minSdkVersion 11
targetSdkVersion 21
...
}
Test cases,
Device with Android M(API22)---OK
Device with Android 5.1.1(API22)---OK
Device with Android 4.3.1(API18)---OK //Why is this OK?
if device with API18 can run the project complied against 21, then why the Android 5.1.1(API22) couldn't run the project complied against MNC?
Right now, since Android M is still in developer preview, any app that targets MNC will only run in emulators or devices with the MNC developer preview.