为什么添加“Android:已导出”属性无法解决Google Play商店上的问题?

wkyowqbh  于 2023-02-02  发布在  Android
关注(0)|答案(2)|浏览(155)

我遇到了问题 * 您上传的APK或Android应用捆绑包包含活动、活动别名、服务或广播接收器(带Intent过滤器),但未设置“android:exported”属性。此文件无法安装在Android 12或更高版本上。请参阅:developer.android.com/about/versions/12/behavior-changes-12#exported*当上传我的APK.
我的manifest.xml如下所示:

<application android:allowBackup="true" android:icon="@drawable/Icon" android:label="@string/application_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme">
        <activity android:name=".MainActivity" android:windowSoftInputMode="adjustPan" android:exported="true" />
        <activity android:name=".DirectoryFragment" android:windowSoftInputMode="adjustPan" android:exported="true"/>
        <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="[API KEY]"  />
        <uses-library android:name="org.apache.http.legacy" android:required="false"/>
        <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
        <meta-data android:name="io.fabric.ApiKey" android:value="[API KEY]" />
        <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
        <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter >
                <action android:name="com.google.android.c2dm.intent.RECEIVE"  />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
                <category android:name="${applicationId}" />
            </intent-filter>
        </receiver>
        <provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths" />
        </provider>
    </application>

我已经对此问题进行了研究,并注意到要在manifiest.xml中添加android:exported属性。但是,添加此属性不能解决此问题。我很难判断何处需要此属性,因为我使用的是Visual Studio,并且没有要使用的清单合并。我是否遗漏了什么?

ddhy6vgd

ddhy6vgd1#

首先,参考官方文档Working with the Android Manifest.,我们应该在Activity.csService.cs文件中使用IntentFilter属性,而不是修改AndroidManifest.xml。
第二,如果错误再次发生,我们应该查看obj/Debug/Android文件夹中生成的AndroidManifest,看看实际导出的是什么,如果一些插件不支持Android 12,也会导致这个错误。
第三,由于谷歌的新政策如果您的应用面向Android 12或更高版本,并且包含使用Intent过滤器的Activity、服务或广播接收器,则必须显式声明android:exported:这些应用程序组件的true属性。
有关详细信息,请参阅行为更改:面向Android 12的应用

yrwegjxp

yrwegjxp2#

通常表示在生成过程中,您的某个项目依赖项正在将信息合并到清单中。您需要检查依赖项是否未设置该值。

相关问题