Hi everyone,
I am facing an issue with my app when targeting Android version 14 and SDK 34. The app crashes on Android 14 devices but works well on Android 13 and below. From the Play Store, I received the following crash log:
SourceFile - com.google.appinventor.components.runtime.Download.<init>
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:4014)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:4167)
at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:103)
at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:149)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:99)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2612)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loopOnce (Looper.java:222)
at android.os.Looper.loop (Looper.java:314)
at android.app.ActivityThread.main (ActivityThread.java:8671)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:565)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1081)
Caused by java.lang.SecurityException: com.octocore.appname: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
at android.os.Parcel.createExceptionOrNull (Parcel.java:3057)
at android.os.Parcel.createException (Parcel.java:3041)
at android.os.Parcel.readException (Parcel.java:3024)
at android.os.Parcel.readException (Parcel.java:2966)
at android.app.IActivityManager$Stub$Proxy.registerReceiverWithFeature (IActivityManager.java:6205)
at android.app.ContextImpl.registerReceiverInternal (ContextImpl.java:1863)
at android.app.ContextImpl.registerReceiver (ContextImpl.java:1803)
at android.app.ContextImpl.registerReceiver (ContextImpl.java:1791)
at android.content.ContextWrapper.registerReceiver (ContextWrapper.java:766)
at com.google.appinventor.components.runtime.Download.<init> (SourceFile:76)
at java.lang.reflect.Constructor.newInstance0
at java.lang.reflect.Constructor.newInstance (Constructor.java:343)
at gnu.expr.PrimProcedure.apply (PrimProcedure.java:272)
at gnu.mapping.CallContext.runUntilDone (CallContext.java:234)
at gnu.mapping.CallContext.runUntilValue (CallContext.java:298)
at gnu.kawa.reflect.Invoke.applyN (Invoke.java:209)
at gnu.mapping.ProcedureN.apply2 (ProcedureN.java:39)
at io.kodular.dev_octocore.AppName.Screen1.$define (Screen1.yail:10254)
at com.google.appinventor.components.runtime.Form.onCreateFinish (SourceFile:483)
at com.google.appinventor.components.runtime.Form.onCreate (SourceFile:394)
at android.app.Activity.performCreate (Activity.java:8886)
at android.app.Activity.performCreate (Activity.java:8851)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1470)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3996)
Caused by android.os.RemoteException: Remote stack trace:
at com.android.server.am.ActivityManagerService.registerReceiverWithFeature (ActivityManagerService.java:14703)
at android.app.IActivityManager$Stub.onTransact$registerReceiverWithFeature$ (IActivityManager.java:12225)
at android.app.IActivityManager$Stub.onTransact (IActivityManager.java:3194)
at com.android.server.am.ActivityManagerService.onTransact (ActivityManagerService.java:2887)
at android.os.Binder.execTransactInternal (Binder.java:1346)
I also tried removing the downloader component, but the crash still appears when targeting Android 14. When the target is set to the default (Android 13), the app works smoothly.
Here is my Android manifest file for checking:
<?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" android:compileSdkVersion="33" android:compileSdkVersionCodename="13" android:installLocation="auto" package="com.octocore.appname" platformBuildVersionCode="33" platformBuildVersionName="13">
<queries>
<package android:name="com.google.android.apps.plus"/>
<package android:name="com.twitter.android"/>
<package android:name="com.snapchat.android"/>
<package android:name="org.telegram.messenger"/>
<package android:name="com.facebook.katana"/>
<package android:name="com.facebook.orca"/>
<intent>
<action android:name="android.intent.action.SEND"/>
</intent>
<package android:name="com.whatsapp"/>
</queries>
<permission android:name="io.kodular.dev_octocore.AppName.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
<uses-permission android:name="io.kodular.dev_octocore.AppName.permission.C2D_MESSAGE"/>
<uses-permission android:name="android.permission.CLEAR_APP_CACHE"/>
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
<uses-permission android:name="android.permission.ACTION_MANAGE_OVERLAY_PERMISSION"/>
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:maxSdkVersion="29" android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application android:debuggable="false" android:icon="@mipmap/ic_launcher" android:label="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:supportsRtl="false" android:theme="@style/AppTheme" android:usesCleartextTraffic="true">
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize" android:exported="true" android:name="io.kodular.dev_octocore.AppName.License" android:theme="@style/AppTheme.NoActionBar" android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
</activity>
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize" android:exported="true" android:name="io.kodular.dev_octocore.AppName.Contact" android:theme="@style/AppTheme.NoActionBar" android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
</activity>
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize" android:exported="true" android:name="io.kodular.dev_octocore.AppName.Profile" android:theme="@style/AppTheme.NoActionBar" android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
</activity>
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize" android:exported="true" android:name="io.kodular.dev_octocore.AppName.Screen1" android:theme="@style/AppTheme.NoActionBar" android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<meta-data android:name="io.kodular.app.VERSION" android:value="1.5C.3-Fenix"/>
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-4326466930413761~1625223347"/>
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
<activity android:exported="false" android:name="com.google.android.gms.common.api.GoogleApiActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<activity android:excludeFromRecents="true" android:exported="false" android:name="com.google.android.gms.auth.api.signin.internal.SignInHubActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<service android:exported="true" android:name="com.google.android.gms.auth.api.signin.RevocationBoundService" android:permission="com.google.android.gms.auth.api.signin.permission.REVOCATION_NOTIFICATION"/>
<activity android:excludeFromRecents="true" android:exported="true" android:launchMode="singleInstance" android:name="com.google.firebase.auth.internal.FederatedSignInActivity" android:permission="com.google.firebase.auth.api.gms.permission.LAUNCH_FEDERATED_SIGN_IN" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<provider android:authorities="com.octocore.appname.firebaseinitprovider" android:exported="false" android:initOrder="100" android:name="com.google.firebase.provider.FirebaseInitProvider"/>
<service android:directBootAware="true" android:name="com.google.firebase.components.ComponentDiscoveryService">
<meta-data android:name="com.google.firebase.components:com.google.firebase.auth.FirebaseAuthRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
</service>
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:exported="false" android:name="com.google.android.gms.ads.OutOfContextTestingActivity"/>
<service android:enabled="true" android:exported="false" android:name="com.google.android.gms.ads.AdService"/>
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:exported="false" android:name="com.google.android.gms.ads.AdActivity" android:theme="@android:style/Theme.Translucent"/>
<service android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService"/>
<activity android:exported="true" android:name="in.akshatdeveloper.DeeplinkByAkshat.DeeplinkHandlerActivity">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="www.google.com" android:pathPrefix="/config=" android:scheme="https"/>
<data android:host="www.google.com" android:pathPrefix="/config=" android:scheme="http"/>
</intent-filter>
</activity>
<activity android:excludeFromRecents="true" android:exported="true" android:name="com.onesignal.NotificationOpenedReceiverAndroid22AndOlder" android:noHistory="true" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<service android:exported="false" android:name="com.onesignal.FCMIntentService"/>
<receiver android:directBootAware="false" android:enabled="false" android:exported="false" android:name="androidx.work.impl.background.systemalarm.RescheduleReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.TIME_SET"/>
<action android:name="android.intent.action.TIMEZONE_CHANGED"/>
</intent-filter>
</receiver>
<service android:exported="false" android:name="com.onesignal.SyncJobService" android:permission="android.permission.BIND_JOB_SERVICE"/>
<receiver android:exported="true" android:name="com.onesignal.BootUpReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.QUICKBOOT_POWERON"/>
</intent-filter>
</receiver>
<receiver android:exported="true" android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
</intent-filter>
</receiver>
<provider android:authorities="io.kodular.dev_octocore.AppName.androidx-startup" android:exported="false" android:name="androidx.startup.InitializationProvider">
<meta-data android:name="androidx.work.WorkManagerInitializer" android:value="androidx.startup"/>
</provider>
<receiver android:exported="true" android:name="com.onesignal.UpgradeReceiver">
<intent-filter>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
</intent-filter>
</receiver>
<service android:directBootAware="false" android:enabled="false" android:exported="true" android:name="androidx.work.impl.background.systemjob.SystemJobService" android:permission="android.permission.BIND_JOB_SERVICE"/>
<service android:exported="false" android:name="com.onesignal.FCMIntentJobService" android:permission="android.permission.BIND_JOB_SERVICE"/>
<receiver android:exported="true" android:name="com.onesignal.FCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter android:priority="999">
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<category android:name="io.kodular.dev_octocore.AppName"/>
</intent-filter>
</receiver>
<activity android:exported="true" android:name="com.onesignal.NotificationOpenedActivityHMS" android:noHistory="true" android:theme="@android:style/Theme.Translucent.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
</intent-filter>
</activity>
<receiver android:exported="true" android:name="com.onesignal.NotificationDismissReceiver"/>
<activity android:exported="false" android:name="com.onesignal.PermissionsActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<service android:directBootAware="true" android:exported="false" android:name="com.google.firebase.messaging.FirebaseMessagingService">
<intent-filter android:priority="-500">
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:exported="false" android:name="com.onesignal.HmsMessageServiceOneSignal">
<intent-filter>
<action android:name="com.huawei.push.action.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:exported="false" android:name="com.onesignal.SyncService" android:stopWithTask="true"/>
<service android:directBootAware="true" android:name="com.google.firebase.components.ComponentDiscoveryService">
<meta-data android:name="com.google.firebase.components:com.google.firebase.auth.FirebaseAuthRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.messaging.FirebaseMessagingRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
<meta-data android:name="com.google.firebase.components:com.google.firebase.installations.FirebaseInstallationsRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
</service>
<activity android:excludeFromRecents="true" android:exported="true" android:name="com.onesignal.NotificationOpenedReceiver" android:noHistory="true" android:taskAffinity="" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<provider android:authorities="com.octocore.appname.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>
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
</application>
</manifest>
Does anyone have any suggestions or solutions for this issue? Any help would be greatly appreciated!