You uploaded an APK or Android App Bundle which has an activity, activity alias, service or broadcast receiver with intent filter, but without the #39;an(您上传的APK或安卓应用捆绑包具有活动、活动别名、服务或广播接收方,意图为过滤,但没有#39;和) - IT屋-程序员软件开发技术
问题描述
问题:您上传了一个apk或android应用包,其中包含有意使用过滤的活动、活动别名、服务或广播接收器,但没有设置‘android:export’属性。此文件无法安装在Android 12或更高版本上。请参阅:developer.android.com/about/versions/12/behavior-changes-12#exported 我的AndroidManifest.xml文件推荐答案
遵守谷歌新策略如果您的应用程序以android 12或更高版本为目标,并且包含使用意图过滤器的活动、服务或广播接收器,则必须显式声明这些应用程序组件的android:EXPORTED属性。 您可以按照以下步骤操作:
打开AndroidManifest.xml文件,然后在底部选择"合并清单"。 如下所示:
如果您无法预览合并清单,则在build.gradle文件中 设置pileSdkVersion 30和targetSdkVersion 30并同步您的项目,现在再次尝试打开合并的清单,我希望这一次您能正确预览合并的清单。但是,如果没有预览,请不要担心,您仍然可以从项目中使用的不同第三方库导航到各个清单文件。
现在检查所有使用Intent-过滤(不带android:exports标签)的活动、服务、接收方。在主清单文件中,您可以简单地将android:export属性添加到活动标记中,因此添加android:export=&qot;";并在这些引号内设置一个布尔值。现在您可能会问,我何时需要将Android:EXPORTED=&TRUE&QOT;或Android:EXPORTED=&FALSE&QOT;添加到使用意图过滤器的活动、服务或广播接收器中。如果应用程序组件包含Launcher类别,请将android:export设置为true。在大多数其他情况下,将android:export设置为false。
注意:还要检查单个第三方库清单文件。如果使用有任何活动、服务或接收方,则必须使用android:exports属性覆盖主清单文件中的相同活动、服务或接收方。
例如,在我的示例中,我在我的主清单文件中为每个活动、服务或接收者定义了Android:Export,但在我的项目中我使用的是Razorpay依赖项,因此在razorpay的清单中,如果发现有使用属性的活动和接收者,而没有使用android:export属性,则在razorpay清单中声明它们 如下图所示:
注意:在您的情况下,可能需要检查更多文件,检查活动、服务,并在主清单文件中提及它们。
- 完成所有这些操作后,您还可以在build.gradle文件中改回targetSdkVersion 31和编译SdkVersion 31。
这篇关于您上传的APK或安卓应用捆绑包具有活动、活动别名、服务或广播接收方,意图为过滤,但没有';和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!