使用Android Studio 4.2.1,在我的build.gradle文件中将sdk目标更改为Android 12后,我收到一个清单合并失败,有多个错误,请参阅日志
错误。
合并清单
选项卡中显示的错误如下:
Merging Errors:
Error: Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details. My_App.app main manifest (this file)
Error: Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details. My_App.app main manifest (this file)
Error: Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details. My_App.app main manifest (this file)
然而,android:exported
标记已应用于我的AndroidManifest。xml文件。我只有一个活动。没有服务或广播接收器。见下文:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.mydomain.myapp">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:name="com.mydomain.myapp.MyApplication"
android:allowBackup="false"
tools:replace="allowBackup"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name="com.mydomain.myapp.ui.MainActivity"
android:exported="true">
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="preloaded_fonts"
android:resource="@array/preloaded_fonts" />
</application>
</manifest>
我的身材。渐变(:app)文件:
android {
compileSdkVersion("android-S")
buildToolsVersion "30.0.3"
defaultConfig {
...
minSdkVersion 23
targetSdkVersion("S")
...
}
知道我该如何解决这个问题吗?
如果您将android studio升级到Bumblebee 2021.1.1。需要进行以下更改:步骤1:您的targetSdkVersion
必须为30或更高步骤2:将您的appcompat
library更新为implementation'androidx.appcompat:appcompat:1.4.1'
步骤3:在AndroidManifest文件中,将< code > Android:exported = true
添加到您的活动启动器中。
如果您的应用程序针对Android 12或更高版本,并且包含使用意图过滤器的活动、服务或广播接收器,则必须显式声明这些应用程序组件的Android:exported属性。为了解决这个问题,我们需要遵循以下步骤:
人造人
我们必须添加
android: export="
并在这些引号内设置一个布尔值。现在您可能会问,我什么时候需要将android: export="true"
或android: export="false"
添加到使用意图过滤器的活动、服务或广播接收器中。如果应用程序组件包含LAUNCHER类别,则将android: export设置为true。在大多数其他情况下,将android: export设置为false。
这是AndroidManifest.xml中的一个示例
<service android:name="com.example.app.backgroundService"
android:exported="false">
<intent-filter>
<action android:name="com.example.app.START_BACKGROUND" />
</intent-filter>
</service>
该问题是由3个活动在androidx中缺少
libraryversionandroid:exported
属性引起的。测试:核心1.3.0
。升级到版本1.4.0-beta01
修复了此问题。
如果您在针对Android 12后出现错误,最简单的调试方法是:
AndroidManifest.xml
。Merged Manifest
选项卡
如果您想确保这些活动是问题所在,请将它们直接添加到项目的
AndroidManifest中。添加了缺少
file,然后尝试重新构建项目。android:exported
属性的xml
所以如果
<activity
android:name="com.domain.ProblemActivity"
android:exported="true" >
重建针对Android 12,如果它有效,那么你发现了错误!
感谢@MikePenz给我指明了正确的方向。
错误:任务“:app:ProcessDebugManifest”执行失败。 清单合并失败:来自AndroidManifest.xml:13:9-42的属性application@icon value=(@mipmap/appiconnew)也存在于[com.pnikosis:materialish-progress:1.0]AndroidManifest.xml:13:9-45 value=(@d
错误:清单合并失败:属性application@appcomponentFactory value=(Android.support.v4.app.coreComponentFactory)来自[com.android.support:support-compat:28.0.0]AndroidMANIFEST.xml:22:18-91也存在于[AndroidX.core:core:1.0.0]An
我似乎得到了这样的错误:
我已将模拟器版本和 Android SDK 版本更新为 Android S (Android 12)。更新后,我无法运行该项目。我不能运行一个你好,世界!项目(空项目),但我可以构建Gradle以及,但我不能运行该项目。我总是得到错误: 清单合并失败:当相应的组件定义了意图过滤器时,针对Android 12和更高版本的应用程序需要为< code>android: exported指定一个显式值。详
问题内容: 我正在将当前项目的大型应用程序移至Android Studio和Gradle中。我目前陷入以下问题: 我尝试将以下属性添加到主文件: 这些属性定义都不起作用。我究竟做错了什么? 问题答案: 试试看: 将此添加到 将此添加到 基于此,它应该覆盖所有元素。“将低优先级声明替换为带注释的声明。”
清单合并失败:属性Application@AppComponentFactory value=(android.support.v4.app.CoreComponentFactory)来自[com.android.support:support-compat:28.0.0]AndroidManifest.xml:22:18-91 也存在于[androidx.core:core:1.0.0]andr