您上传的APK或安卓应用捆绑包具有活动、活动别名、服务或广播接收方,意图为过滤,但没有'和 [英] You uploaded an APK or Android App Bundle which has an activity, activity alias, service or broadcast receiver with intent filter, but without the 'an

查看:59
本文介绍了您上传的APK或安卓应用捆绑包具有活动、活动别名、服务或广播接收方,意图为过滤,但没有'和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题:您上传了一个apk或android应用包,其中包含有意使用过滤的活动、活动别名、服务或广播接收器,但没有设置‘android:export’属性。此文件无法安装在Android 12或更高版本上。请参阅:developer.android.com/about/versions/12/behavior-changes-12#exported 我的AndroidManifest.xml文件

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.c4life.guardianangel">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>


<application
   tools:replace="android:label"
   android:label="GA"
   android:exported="true"
   android:icon="@mipmap/ic_launcher">
   <meta-data android:name="com.google.android.geo.API_KEY"
       android:value=""/>
    <activity
        android:name=".MainActivity"
        android:exported="true"
        android:launchMode="singleTop"
        android:theme="@style/LaunchTheme"
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
        android:hardwareAccelerated="true"
        android:windowSoftInputMode="adjustResize">
        <meta-data
          android:name="io.flutter.embedding.android.NormalTheme"
          android:resource="@style/NormalTheme"
          />
        <meta-data
          android:name="io.flutter.embedding.android.SplashScreenDrawable"
          android:resource="@drawable/launch_background"
          />
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
   <service android:name="changjoopark.com.flutter_foreground_plugin.FlutterForegroundService" android:exported="false"/>
    <meta-data
        android:name="flutterEmbedding"
        android:value="2" />


</application>

<uses-sdk
    android:targetSdkVersion="30"
    tools:overrideLibrary="changjoopark.com.flutter_foreground_plugin" />

推荐答案

遵守谷歌新策略如果您的应用程序以android 12或更高版本为目标,并且包含使用意图过滤器的活动、服务或广播接收器,则必须显式声明这些应用程序组件的android:EXPORTED属性。 您可以按照以下步骤操作:

  • 打开AndroidManifest.xml文件,然后在底部选择"合并清单"。 如下所示:

  • 如果您无法预览合并清单,则在build.gradle文件中 设置pileSdkVersion 30targetSdkVersion 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清单中声明它们 如下图所示:

 <activity
        android:name="com.razorpay.CheckoutActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:theme="@style/CheckoutTheme"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <data
                android:host="rzp.io"
                android:scheme="io.rzp" />
        </intent-filter>
    </activity>

    <receiver android:name="com.razorpay.RzpTokenReceiver"
        android:exported="true"
        android:permission="android.permission.INTERNET">
        <intent-filter>
            <action android:name="rzp.device_token.share" />
        </intent-filter>
    </receiver>

注意:在您的情况下,可能需要检查更多文件,检查活动、服务,并在主清单文件中提及它们。

  • 完成所有这些操作后,您还可以在build.gradle文件中改回targetSdkVersion 31编译SdkVersion 31

这篇关于您上传的APK或安卓应用捆绑包具有活动、活动别名、服务或广播接收方,意图为过滤,但没有&#39;和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆