我遇到了问题 * 您上传的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,并且没有要使用的清单合并。我是否遗漏了什么?
2条答案
按热度按时间ddhy6vgd1#
首先,参考官方文档Working with the Android Manifest.,我们应该在
Activity.cs
和Service.cs
文件中使用IntentFilter
属性,而不是修改AndroidManifest.xml。第二,如果错误再次发生,我们应该查看
obj/Debug/Android
文件夹中生成的AndroidManifest,看看实际导出的是什么,如果一些插件不支持Android 12,也会导致这个错误。第三,由于谷歌的新政策如果您的应用面向Android 12或更高版本,并且包含使用Intent过滤器的Activity、服务或广播接收器,则必须显式声明android:exported:这些应用程序组件的true属性。
有关详细信息,请参阅行为更改:面向Android 12的应用
yrwegjxp2#
通常表示在生成过程中,您的某个项目依赖项正在将信息合并到清单中。您需要检查依赖项是否未设置该值。