Message "error: resource android:attr/lStar not found"
Categories:
Resolving 'error: resource android:attr/lStar not found' in Flutter/Android
This article provides a comprehensive guide to understanding and resolving the 'error: resource android:attr/lStar not found' issue commonly encountered in Flutter and Android projects, especially after Gradle or SDK updates.
The error message error: resource android:attr/lStar not found
often appears when building Flutter or native Android applications, particularly after updating Gradle, Android SDK versions, or migrating projects. This issue typically indicates a mismatch or an incompatibility between the Android Gradle Plugin (AGP) version, the target SDK version, and the AndroidX libraries being used. Understanding the root cause is crucial for a swift resolution.
Understanding the 'lStar' Attribute
The android:attr/lStar
attribute is a relatively new addition to the Android platform, introduced in API level 31 (Android 12). It's related to color contrast and accessibility features, specifically for text and UI elements. When your project attempts to compile against a newer AndroidX library version that implicitly uses or references this attribute, but your project's targetSdkVersion
or compileSdkVersion
is set to an API level lower than 31, the build system fails to find the lStar
resource, leading to the error.
Dependency mismatch causing the 'lStar' error
Common Causes and Initial Checks
This error frequently arises from a few common scenarios:
- Outdated
compileSdkVersion
ortargetSdkVersion
: Your project'sbuild.gradle
(app-level) might be configured for an Android API level below 31, while a dependency requires API 31 or higher. - Android Gradle Plugin (AGP) Version Mismatch: An older AGP version might not correctly handle newer AndroidX libraries or SDK features.
- Flutter Version and Dependencies: If you're using Flutter, an outdated Flutter SDK or specific Flutter plugins might be pulling in conflicting AndroidX versions.
- Corrupted Build Cache: Sometimes, a stale or corrupted Gradle cache can lead to unexpected build issues.
Before diving into specific solutions, it's always a good practice to perform a clean build and invalidate caches.
1. Step 1
In your project root, run flutter clean
(for Flutter projects) or ./gradlew clean
(for native Android).
2. Step 2
In Android Studio, go to File
> Invalidate Caches / Restart...
and select Invalidate and Restart
.
3. Step 3
Rebuild your project to see if the error persists.
Resolving the Error: Step-by-Step Guide
The primary solution involves ensuring that your project's Android configuration is aligned with the latest requirements. This typically means updating your compileSdkVersion
, targetSdkVersion
, and potentially your Android Gradle Plugin version.
build.gradle
files or SDK versions.Step 1: Update compileSdkVersion
and targetSdkVersion
Navigate to your app-level build.gradle
file (usually android/app/build.gradle
in Flutter projects or app/build.gradle
in native Android projects) and update the compileSdkVersion
and targetSdkVersion
to at least 31 (or higher, depending on the latest stable API level). For most modern projects, using API 33 or 34 is recommended.
android {
compileSdkVersion 34 // Update this to 31 or higher
defaultConfig {
applicationId "com.example.myapp"
minSdkVersion 21
targetSdkVersion 34 // Update this to 31 or higher
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
// ... other configurations
}
Updating compileSdkVersion
and targetSdkVersion
in build.gradle
Step 2: Update Android Gradle Plugin (AGP) Version
Open your project-level build.gradle
file (usually android/build.gradle
in Flutter projects or the root build.gradle
in native Android projects). Update the com.android.tools.build:gradle
dependency to a version compatible with your compileSdkVersion
.
compileSdkVersion
.buildscript {
ext.kotlin_version = '1.8.20'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.1.0' // Update to a compatible version (e.g., 7.0.0+ for API 31, 8.1.0+ for API 34)
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
Updating Android Gradle Plugin in project-level build.gradle
Step 3: Update Gradle Wrapper Version
Ensure your Gradle wrapper is also up to date. This is done by editing the distributionUrl
in android/gradle/wrapper/gradle-wrapper.properties
.
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip # Update to a version compatible with your AGP
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Updating Gradle wrapper distributionUrl
Step 4: For Flutter Projects - Check Flutter SDK and Plugins
Ensure your Flutter SDK is up to date, as newer versions often come with updated Android dependencies. Also, check for any outdated Flutter plugins that might be pulling in older AndroidX libraries. You can use flutter pub outdated
to identify problematic packages.
flutter upgrade
flutter doctor
flutter pub outdated
Commands to update Flutter and check for outdated packages
Step 5: Sync and Rebuild
After making these changes, save all files, perform another flutter clean
(or ./gradlew clean
), and then rebuild your project. The error should now be resolved as your project's Android configuration is aligned with the required API levels and dependencies.
android/app/src/main/AndroidManifest.xml
to ensure no conflicting targetSdkVersion
attributes are explicitly set there, although build.gradle
usually overrides it.