Android 14 Crash Issue: App Works on Android 13, Fails on Target SDK 34

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.&lt;init&gt; (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!

You are using a component or an extension, which needs an update to be sdk 34 compatible

Taifun

This post was flagged by the community and is temporarily hidden.

Thank you for your response!

It turns out that the issue was indeed with a component. After some testing, I found that the Kodular inbuilt Downloader component is not compatible with Android target SDK 34 (Android 14). After removing some extensions along with the Downloader component, the app now works fine on Android 14 devices.

I hope this helps anyone facing a similar issue. Thanks again for the guidance!

1 Like

May be you can list the extensions which were not compatible, let the extension developers be aware of these to update.

1 Like

Good idea! Unfortunately, the extension that was causing the issue in my case was developed by me and is not publicly available. However, I found some Kodular inbuilt components and another extension that cause the app to crash when targeting API 34 on Android 14 devices:

Additionally, I tested your ASDdownloader extension, and I found that it causes the app to crash when targeting API 34 on Android 14 devices.

Thanks for the suggestion

1 Like

I’m sorry for the late reply, just tested Orientation fix extension on A14 and it seems to work on my end. Mind sharing more info on this so that I can have a look?

Thank you for your response! I apologize for the misunderstanding. After further testing, I realized that the [F/OS] Screen Orientation Fix Extension is actually working fine on Android 14, and it wasn’t the cause of the crash. I’m sorry for any confusion caused earlier. I appreciate your patience and just wanted to clarify that the extension is compatible with Android 14