'android:exported' property

it says this "You uploaded an APK or Android App Bundle which has an activity, activity alias, service or broadcast receiver with intent filter, but without the 'android:exported' property set. This file can't be installed on Android 12 or higher. See: developer.android.com/about/versions/12/behavior-changes-12#exported"
What is this??, I dont know if its because I used this website or because I used enhance.co

This issue should be addressed for all built-in App Inventor components. If you are using any extensions in your project, you will need to contact that extension authors and obtain an updated version of their extension that complies with Google's policies for Android 12 and higher.

I dont know if it from the extension but i think its from app inventor

to find it out, as test remove the enhance extension, build the project and try to upload it to Google Play...

alternatively you also can check the manifest to find that line with the missing android:exported value, see here how to decompile and open the manifest

Taifun

2 Likes

I tried what you said and it change the problem to the bundle is signed with the wrong key, I made this app before the 31 SDK update i think it might be the problem

I tried all of what you said and nothing work.
This is just to me or its a problem in the website because the update?

Build the APK, upload it to Google Drive and post the link.

List all used extensions.

Ok
https://drive.google.com/file/d/1h3BZmHW3rw1gGTAEC5HKx4M2aMw1N-Cr/view?usp=sharing

The GD link should be shared with everyone.

Manifest
<?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:compileSdkVersion="23" android:compileSdkVersionCodename="6.0-2438415" package="appinventor.ai_id_shfv.make_me_laugh" platformBuildVersionCode="23" platformBuildVersionName="6.0-2438415">
    <uses-permission android:name="android.permission.INTERNET"/>
    <application android:debuggable="false" android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:name="com.google.appinventor.components.runtime.multidex.MultiDexApplication" android:networkSecurityConfig="@xml/network_security_config" android:preserveLegacyExternalStorage="true" android:requestLegacyExternalStorage="true" android:roundIcon="@mipmap/ic_launcher" android:theme="@style/AppTheme">
        <uses-library android:name="org.apache.http.legacy" android:required="false"/>
        <activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize" android:exported="true" android:name=".Screen1" android:windowSoftInputMode="stateHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <provider android:authorities="appinventor.ai_id_shfv.make_me_laugh.provider" android:exported="false" android:grantUriPermissions="true" android:name="androidx.core.content.FileProvider">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths"/>
        </provider>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="co.enhance.backfill.webview.EnhanceWebViewAdActivity" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>
        <activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:name="com.google.android.gms.ads.AdActivity" android:theme="@android:style/Theme.Translucent"/>
        <activity android:configChanges="fontScale|keyboard|keyboardHidden|locale|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:hardwareAccelerated="true" android:name="com.unity3d.services.ads.adunit.AdUnitActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
        <activity android:configChanges="fontScale|keyboard|keyboardHidden|locale|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:hardwareAccelerated="true" android:name="com.unity3d.services.ads.adunit.AdUnitTransparentActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
        <activity android:configChanges="fontScale|keyboard|keyboardHidden|locale|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:hardwareAccelerated="false" android:name="com.unity3d.services.ads.adunit.AdUnitTransparentSoftwareActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
        <activity android:configChanges="fontScale|keyboard|keyboardHidden|locale|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:hardwareAccelerated="false" android:name="com.unity3d.services.ads.adunit.AdUnitSoftwareActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:exported="false" android:name="com.facebook.ads.AudienceNetworkActivity"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:exported="false" android:name="com.facebook.ads.internal.ipc.RemoteANActivity" android:process=":adnw"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:hardwareAccelerated="true" android:name="com.adcolony.sdk.AdColonyInterstitialActivity"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:hardwareAccelerated="true" android:name="com.adcolony.sdk.AdColonyAdViewActivity"/>
        <activity android:configChanges="orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:hardwareAccelerated="true" android:name="com.applovin.adview.AppLovinInterstitialActivity" android:screenOrientation="behind"/>
        <activity android:configChanges="keyboard|keyboardHidden|locale|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:exported="false" android:hardwareAccelerated="true" android:launchMode="singleTop" android:name="com.applovin.adview.AppLovinFullscreenActivity" android:screenOrientation="behind"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize|uiMode" android:name="com.applovin.sdk.AppLovinWebViewActivity"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:excludeFromRecents="true" android:hardwareAccelerated="true" android:name="fgl.com.chartboost.sdk.CBImpressionActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
        <activity android:name="com.smaato.soma.interstitial.InterstitialActivity" android:resizeableActivity="false" android:screenOrientation="portrait"/>
        <activity android:name="com.smaato.soma.video.VASTAdActivity" android:resizeableActivity="false" android:screenOrientation="portrait"/>
        <activity android:name="com.smaato.soma.ExpandedBannerActivity" android:resizeableActivity="false" android:screenOrientation="portrait"/>
        <activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:name="com.flurry.android.FlurryFullscreenTakeoverActivity"/>
        <activity android:configChanges="fontScale|keyboard|keyboardHidden|locale|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:hardwareAccelerated="true" android:name="com.inmobi.ads.rendering.InMobiAdActivity" android:theme="@android:style/Theme.NoTitleBar"/>
        <activity android:configChanges="orientation|screenSize" android:hardwareAccelerated="true" android:name="com.ironsource.sdk.controller.ControllerActivity"/>
        <activity android:configChanges="orientation|screenSize" android:hardwareAccelerated="true" android:name="com.ironsource.sdk.controller.InterstitialActivity" android:theme="@android:style/Theme.Translucent"/>
        <activity android:configChanges="orientation|screenSize" android:hardwareAccelerated="true" android:name="com.ironsource.sdk.controller.OpenUrlActivity" android:theme="@android:style/Theme.Translucent"/>
        <activity android:configChanges="layoutDirection|locale" android:label="@string/mmadsdk_app_name" android:name="com.millennialmedia.internal.MMActivity" android:theme="@style/Theme.MMTransparent"/>
        <activity android:configChanges="layoutDirection|locale" android:label="sdk" android:name="com.millennialmedia.internal.MMIntentWrapperActivity"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.mopub.common.MoPubBrowser"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.mopub.mobileads.MoPubActivity"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.mopub.mobileads.MraidActivity"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.mopub.mobileads.RewardedMraidActivity"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.mopub.mobileads.MraidVideoPlayerActivity"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.mopub.common.privacy.ConsentDialogActivity"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:hardwareAccelerated="true" android:name="com.tapjoy.TJAdUnitActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:hardwareAccelerated="true" android:name="com.tapjoy.TJContentActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
        <activity android:configChanges="keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:launchMode="singleTop" android:name="com.vungle.warren.ui.VungleActivity" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
        <activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:hardwareAccelerated="true" android:name="com.kidoz.sdk.api.ui_views.interstitial.KidozAdActivity"/>
        <service android:exported="false" android:name="com.facebook.ads.internal.ipc.AdsProcessPriorityService"/>
        <service android:exported="false" android:name="com.facebook.ads.internal.ipc.AdsMessengerService" android:process=":adnw"/>
        <service android:exported="false" android:name="com.applovin.impl.sdk.utils.AppKilledService" android:stopWithTask="false"/>
        <service android:exported="false" android:name="com.applovin.impl.adview.activity.FullscreenAdService" android:stopWithTask="false"/>
        <service android:exported="true" android:name="com.millennialmedia.internal.task.handshake.HandshakeRequestService" android:permission="android.permission.BIND_JOB_SERVICE"/>
        <service android:exported="true" android:name="com.millennialmedia.internal.task.reporting.PlacementReportingService" android:permission="android.permission.BIND_JOB_SERVICE"/>
        <service android:exported="true" android:name="com.millennialmedia.internal.task.geoipcheck.GeoIpCheckRequestService" android:permission="android.permission.BIND_JOB_SERVICE"/>
        <service android:exported="false" android:name="com.millennialmedia.internal.VolumeChangeService"/>
        <receiver android:name="com.tapjoy.TapjoyReceiver"/>
        <receiver android:enabled="true" android:name="com.kidoz.sdk.api.receivers.SdkReceiver">
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_ADDED"/>
                <data android:scheme="package"/>
            </intent-filter>
        </receiver>
        <receiver android:exported="true" android:name="com.fgl.enhance.referral.ReferralReceiver">
            <intent-filter>
                <action android:name="com.android.vending.INSTALL_REFERRER"/>
            </intent-filter>
        </receiver>
        <receiver android:name="com.fgl.enhance.notification.FGLLocalNotificationReceiver"/>
        <provider android:authorities="appinventor.ai_id_shfv.make_me_laugh.AudienceNetworkContentProvider" android:exported="false" android:name="com.facebook.ads.AudienceNetworkContentProvider"/>
        <provider android:authorities="appinventor.ai_id_shfv.make_me_laugh.applovininitprovider" android:exported="false" android:grantUriPermissions="true" android:initOrder="101" android:name="com.applovin.sdk.AppLovinInitProvider"/>
        <provider android:authorities="appinventor.ai_id_shfv.make_me_laugh.MediaContentProvider" android:exported="false" android:grantUriPermissions="true" android:name="com.millennialmedia.internal.utils.MediaContentProvider"/>
        <provider android:authorities="appinventor.ai_id_shfv.make_me_laugh.vungle-provider" android:exported="false" android:name="com.vungle.warren.utility.VungleProvider"/>
        <meta-data android:name="fgl.is_injected" android:value="true"/>
        <meta-data android:name="co.enhance.backfill_webview.test_mode" android:value="false"/>
        <meta-data android:name="co.enhance.backfill_webview.interstitial.enabled" android:value="false"/>
        <meta-data android:name="co.enhance.backfill_webview.banner.enabled" android:value="false"/>
        <meta-data android:name="enhance.admob.test_devices" android:value="ENHSTR_"/>
        <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-2399915259519222~4617621728"/>
        <meta-data android:name="enhance.admob_mediation.app_id" android:value="ca-app-pub-2399915259519222~4617621728"/>
        <meta-data android:name="enhance.admob_mediation.privacy_policy_url" android:value=""/>
        <meta-data android:name="fgl.admob_mediation.rewarded.ad_unit" android:value="ca-app-pub-2399915259519222/9327308333"/>
        <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
        <meta-data android:name="applovin.sdk.key" android:value=""/>
        <meta-data android:name="co.enhance.backfill_applovin.sdk_key" android:value="ZqyS2XixHe6Qvacb1ZUiib75NnkHbl5C2wDQ98JdhDdNSxHqor9Hd4EWgQcf5eieFO7DiuH21yvCoIDcm2Qczh"/>
        <meta-data android:name="co.enhance.backfill_applovin.rewarded.enabled" android:value="false"/>
        <meta-data android:name="co.enhance.init.delay_time" android:value="L0"/>
        <meta-data android:name="fgl.enhance.debug" android:value="false"/>
        <meta-data android:name="fgl.enhance.prerolls_enable" android:value="false"/>
        <meta-data android:name="fgl.enhance.banners_position" android:value=""/>
        <meta-data android:name="fgl.enhance.custom_vars" android:value=""/>
        <meta-data android:name="fgl.enhance.market" android:value="googleplay"/>
        <meta-data android:name="fgl.enhance.rating_period" android:value="0"/>
        <meta-data android:name="fgl.enhance.waterfall.debug" android:value="false"/>
        <meta-data android:name="fgl.enhance.use_location" android:value="false"/>
        <meta-data android:name="fgl.enhance.injection.id" android:value="6334321786640274cc46d172"/>
        <meta-data android:name="enhance.dataconsent.version" android:value="1"/>
        <meta-data android:name="co.enhance.dataconsent.forceoptout" android:value="false"/>
        <meta-data android:name="co.enhance.dataconsent.forceoptin" android:value="false"/>
        <meta-data android:name="co.enhance.dataconsent.force_always_require" android:value="false"/>
        <meta-data android:name="co.enhance.ad_refresher.banner.enabled" android:value="true"/>
        <meta-data android:name="co.enhance.ad_refresher.banner.refresh_also_to_backfill_ads" android:value="true"/>
        <meta-data android:name="co.enhance.ad_refresher.banner.refresh_delay" android:value="L30000"/>
        <meta-data android:name="co.enhance.sdk.banner.loading_grace_period" android:value="L5000"/>
        <meta-data android:name="co.enhance.defaultAdSdk.enabled" android:value="false"/>
        <meta-data android:name="co.enhance.defaultAdSdk.sdkId" android:value="enhanceads"/>
        <meta-data android:name="co.enhance.defaultAdSdk.impressionAllocation" android:value="0.0"/>
        <meta-data android:name="co.enhance.backfill_webview.rewarded.enabled" android:value="false"/>
        <meta-data android:name="co.enhance.backfill_applovin.banner.enabled" android:value="false"/>
        <meta-data android:name="fgl.admob_mediation.interstitial.ad_unit" android:value="ca-app-pub-2399915259519222/3276619892"/>
        <meta-data android:name="fgl.admob_mediation.banner.ad_unit" android:value="ca-app-pub-2399915259519222/8528946575"/>
        <meta-data android:name="fgl.admob_mediation.banner.ad_size" android:value="BANNER"/>
        <meta-data android:name="fgl.admob_mediation.banner.transparent_bg" android:value="false"/>
        <meta-data android:name="co.enhance.backfill_applovin.interstitial.enabled" android:value="false"/>
    </application>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:maxSdkVersion="18" android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
</manifest>

Btw, what's about this line?

<uses-permission android:maxSdkVersion="18" android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

What settings and components does AI2 use to declare WRITE permission in this way? Neither the File component, nor Canvas, nor SoundRecorder etc. do it.

However, it makes sense if only the ASD is used as the storage location. However, the above components do not declare WRITE in this way.

2 posts were split to a new topic: Android:exported