uses-sdk:minSdkVersion 19 cannot be smaller than version 21 declared in library

2 min read 05-10-2024
uses-sdk:minSdkVersion 19 cannot be smaller than version 21 declared in library


Gradle Error: "uses-sdk:minSdkVersion 19 cannot be smaller than version 21 declared in library"

This error message is a common problem faced by Android developers. It indicates that your project's minSdkVersion is set to a lower version than the minSdkVersion declared by a library you're using. This discrepancy can prevent your app from compiling and running on older Android devices.

Let's break down the situation and provide a clear solution.

Scenario:

Imagine you have an Android project that uses a library, let's say "MyCoolLibrary," with a minSdkVersion of 21. However, your project's minSdkVersion is set to 19. When you try to build your project, Gradle throws the error:

Error: uses-sdk:minSdkVersion 19 cannot be smaller than version 21 declared in library [MyCoolLibrary]

Understanding the Problem:

  • minSdkVersion: This is the minimum Android API level required to run your app.
  • Library Dependencies: Libraries can also specify their own minSdkVersion.
  • Compatibility Issues: Your project's minSdkVersion must be equal to or greater than the minSdkVersion of all the libraries you depend on. This ensures that your app can run on devices that support the necessary features.

Solution:

  1. Update Project minSdkVersion: The simplest fix is to update your project's minSdkVersion to match or exceed the library's minSdkVersion.

    • Navigate to your project's build.gradle (Module: app) file.
    • Locate the minSdkVersion property within the android block and update it to 21 or higher.
    android {
        compileSdkVersion 33 // Replace with your current compileSdkVersion
        buildToolsVersion '33.0.0' // Replace with your current buildToolsVersion
        minSdkVersion 21 // Change this value
        targetSdkVersion 33 // Replace with your current targetSdkVersion
    
        // ... rest of your android block
    }
    
  2. Library Upgrade (Optional): If you need to support devices with a lower minSdkVersion than the library's, you have two options:

    • Find an Alternative Library: Look for a similar library that supports the minSdkVersion you need.
    • Contact Library Developers: Reach out to the library's developers and request support for a lower minSdkVersion. They might be able to provide a version that works for older devices.

Additional Considerations:

  • Backwards Compatibility: Always consider the implications of increasing your project's minSdkVersion on the number of users you can reach.
  • API Level Compatibility: Ensure that the features you use in your app are available in the target API level.
  • Target SDK: Set the targetSdkVersion to the most recent version of Android that you are confident your app works correctly on.

Example:

Imagine your app uses "MyCoolLibrary" for image processing, which requires a minSdkVersion of 23. You want to reach users with Android devices running API level 19 and above. In this scenario, you would have two options:

  1. Upgrade minSdkVersion: Update your project's minSdkVersion to 23. This would restrict your app to devices running API level 23 or higher.
  2. Find an Alternative Library: Search for another image processing library that supports minSdkVersion 19.

By understanding the cause of the "uses-sdk:minSdkVersion" error and implementing the appropriate solutions, you can ensure that your app builds successfully and reaches a wider audience.