In order to access a broader list of installed apps, an app can specify information about apps they need to query and interact with directly. This can be done by adding a <queries> element in the Android manifest.
If you develop an Android library, you can declare your package visibility needs by adding a <queries> element in your AAR manifest file. This <queries> element has the same functionality as the element that apps can declare in their own manifests.
Every project in Android includes a Manifest XML file, which is AndroidManifest. xml, located in the root directory of its project hierarchy. The manifest file is an important part of our app because it defines the structure and metadata of our application, its components, and its requirements.
The Android Gradle Plugin needs to know about new manifest elements, particularly for the manifest merger process. The plugin has a tendency to get confused if it sees elements in the manifest merger that it does not recognize, tossing out build errors like the one in the question.
In this case, Android 11 introduced <queries>
as a manifest element, and older versions of the Android Gradle Plugin do not know about that element.
The fact that this occurs from manifest merger means that simply upgrading a dependency
might bring about this error. For example, if you upgrade to the latest
version of com.awesome:awesome-library
, and it contained a <queries>
element
in its manifest, you might crash with the aforementioned error in your builds,
even without any other changes in your code.
Google released a series of patch versions of the Android Gradle Plugin to address this:
3.3.3
3.4.3
3.5.4
3.6.4
4.0.1
If you are using an existing plugin in the 3.3.*
through 4.0.*
series, upgrade
to the associated patch version (or higher) from that list, and you should no longer
run into that error (e.g., classpath 'com.android.tools.build:gradle:4.0.1'
).
If you are using Android Studio 4.1 or higher, with a matching
Android Gradle Plugin (e.g., in the 4.1.*
series), you should be fine without
any changes. Those plugin versions were already aware of <queries>
.
See this Android Developers Blog post for more.
I had this issue in flutter but i believe this solution will work for both flutter and native android dev.
Follow these steps
Delete the .gradle folder inside the android folder ie android>.gradle
In the project build.gradle file, upgrade ur class path appropriately based on the blog in the link above, e.g i upgraded to classpath 'com.android.tools.build:gradle:4.0.1'
Upgrade the distribution url too. Its in android>gradle>gradle-wrapper.properties file appropriately. e.g i upgraded it to distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
You can invalidate caches and restart your android studio. Make sure you have a good internet connection because it will download the new gradle files.
Thanks.
I also had same issue on Android Studio 4.1.1, suddenly, 2 days ago. I solved the issue by upgrading build gradle version.
previous setting in build.gradle file of project was:
classpath("com.android.tools.build:gradle:3.5.3")
current setting:
classpath("com.android.tools.build:gradle:3.5.4")
The issue was gone immediately. :)
To understanding why this happens see the above @CommonsWare's answer
This is because <queries>
tag was introduced with new package visibility options for Android 11 and upwards (SDK 30+). Because of that, you need to update your build.gradle
with a version that includes this changes. Below is a list of supported gradle options.
The best solution to deal with these errors is to Upgrade your Android Gradle plugin and Update Gradle
You’ll have to update your Gradle version to one of the compatible versions that have the latest query tags (which were introduced with Android 11).
To Update the Android Gradle plugin
Specify the plugin version in the YourAppDirectory/android/build.gradle file. The plugin version applies to all modules built-in that Android Studio project. The following example sets the plugin to version 4.0.1:
buildscript {
repositories {
// Gradle 4.1 and higher include support for Google's Maven repo using
// the google() method. And you need to include this repo to download
// Android Gradle plugin 3.0.0 or higher.
google()
...
}
dependencies {
classpath 'com.android.tools.build:gradle:4.0.1’
}
If the specified plugin version has not been downloaded, Gradle downloads it the next time you build your project or click Tools > Android > Sync Project with Gradle Files from the Android Studio menu bar.
To Update Gradle
Specify the Gradle version by editing the Gradle distribution reference in the YourAppDirectory/android/gradle/wrapper/gradle-wrapper.properties file.
Don't forget to update your ditributionUrl
in your gradle-wrapper.properties
as well. For example, for gradle 4.0.1, you should have:
...
distributionUrl = https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
...
We know that not everyone is ready to upgrade to the latest version, though, and you may be relying on old versions of Gradle or libraries that aren’t compatible with 4.1.
Fixing the error is very simple. Update your android studio to the last version and use the last stable Gradle plugin version. At the current time, I use Android Studio version 4.1.3 with Gradle Plugin 6.8.2
guys please attentions, for use queries you should write queries code in out of application tag not inside application tag
for more info see below photo
I had this error in the react-native-image-crop-picker
library and I solved this problem by updating the gradle version as mentioned above.
It was:
classpath("com.android.tools.build:gradle:3.5.3")
Updated to:
classpath("com.android.tools.build:gradle:3.5.4")
And I ran a:
cd android && ./gradlew clean && cd .. && npx react-native run-android
Then it worked ok.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With