【问题标题】:I get android:exported error even though I set all我得到 android:exported 错误,即使我设置了所有
【发布时间】:2021-11-19 02:22:31
【问题描述】:

错误是这样的。

Manifest merger failed : android:exported needs to be explicitly specified for <activity>. 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.

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.example">

    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission
        android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"
        tools:ignore="ProtectedPermissions" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />

    <queries>
        <package android:name="com.kakao.talk" />
    </queries>

    <application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="${appLabel}"
        android:largeHeap="true"
        android:networkSecurityConfig="@xml/network_security_config"
        android:resizeableActivity="true"
        android:roundIcon="@mipmap/ic_launcher"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:replace="android:label">

        <meta-data
            android:name="android.allow_multiple_resumed_activities"
            android:configChanges="screenSize|smallestScreenSize|screenLayout"
            android:value="true" />
        <meta-data
            android:name="com.google.android.gms.vision.DEPENDENCIES"
            android:value="barcode" />
        <meta-data
            android:name="com.kakao.sdk.AppKey"
            android:value="@string/kakao_native_app_key" />

        <activity
            android:name=".components.ui.entry.EntryActivity"
            android:screenOrientation="landscape"
            android:theme="@style/AppTheme"
            android:windowSoftInputMode="stateAlwaysHidden"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

我不明白为什么会出现这个错误。

【问题讨论】:

  • 所有你实现的库也需要指定android:exported。你检查了吗?
  • 是的,我解决了这个问题。谢谢。

标签: android android-manifest android-12


【解决方案1】:

这是因为我使用的一些库在 31 中处理得不好。所以,一些库没有在它们的 AndriodManifest.xml 中指定 exported 属性

在我的情况下,这些库没有被使用,我只是在项目中删除了它们,我解决了这个问题。

要查看库 manifests.xml,首先,您需要转到 AndroidManifest.xml,然后在底部有两个选项卡 - textMerged Manifest

文本用于当前项目。而Merged Manifest 是所有库合并后的整个清单。

因此,您可以检查您的某些库是否在其清单文件中遗漏了 exported 属性。

发现后,如果库没用了,可以删除或更改版本。否则,让这个问题给作者。

【讨论】:

  • 也可以覆盖清单值。这样,您可以为依赖项中的条目添加 exported 值。
  • @AlexanderHoffmann 我不明白。你能编辑我的答案吗?
  • 我明白了。它可以被覆盖。我不需要删除。
猜你喜欢
  • 1970-01-01
  • 2016-11-12
  • 2011-10-04
  • 2022-06-30
  • 2020-09-12
  • 2022-01-18
  • 2015-07-13
  • 2018-04-19
  • 2022-10-08
相关资源
最近更新 更多