Android Studio,更新build.gradle TargetSdkVersion 31问题。

4
我们正在使用targetSdkVersion 30,我试图将其更新为31。
当我将targetSdkVersion设置为31时,由于manifest.xml中的构建错误导致我无法运行/编译应用程序,错误提示为:
android:exported需要明确指定。针对Android 12及更高版本的应用程序在相关组件定义了意图过滤器时必须指定android:exported的显式值。有关详细信息,请参见https://developer.android.com/guide/topics/manifest/activity-element#exported。src/main/AndroidManifest.xml
我检查了我的清单文件,我为每个activity、receiver添加了android:exported = true/false
如果我将目标SDK版本设置为30,则没有问题,但是31则出现问题。我确定在清单中添加了适用组件的android:exported。
请帮助我。

4
前往AndroiManifest.xml,点击底部的Merged Manifest - Darshan
谢谢@DarShan,你节省了我的时间!我发现问题出在我的一个库里。 - India
很高兴能帮忙! :) - Darshan
4个回答

7
如果还没有更新build.gradle文件中的所有库,请先更新它们。其中一个库很可能是导致此问题的原因。如果不是这种情况,您需要手动检查合并清单,如@DarShan所提到的。 我几天前也遇到了这个问题。

2
谢谢 @DarShan!你帮我节省了时间!我发现问题出在我的一个库里。 - India

0

针对您的Flutter项目, 请前往:*your_project*/android/app/main/AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" //add this line
    package="com.example.***your_app_name***">

在同一個 AndroidManifest.xml 檔案中,搜尋 application 內的 activity 類型的項目。
        <application
            android:name="${applicationName}"
            ...
            ...
            
    
            <meta-data 
              ...
              ... />
    
            <meta-data
              ...
              ... />
    
            <activity
                android:name=".MainActivity"
                android:exported="true"    //add this line
                tools:node="merge"         //add this line
                android:launchMode=
                ...
                ...
                ...

0

很有可能是你的gradle文件中的库引起的问题。以下是我解决这个问题的方法。

  1. 在gradle文件中注释掉一个库,然后清理项目并重新构建项目。
  2. 如果它显示相同的错误,请取消注释,并重复步骤1。
  3. 对于每个库都要这样做,最终你会发现错误会改变或者构建将成功。
  4. 当发生这种情况时,你注释的最后一个库就是问题所在。尝试更新该库或使用其他库。

0
  1. 在Windows/user/.gradle目录下

删除 .gradle 文件,删除整个文件夹

  1. 重新打开Android Studio并进入项目结构/Gradle

    更改Gradle版本

  2. 在项目的build.gradle中更新依赖项


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接