My app targets Android 14 (targetSdkVersion 34). Android 14 requires runtime registered receivers to specify whether they are exported or not.
I'm seeing the following crash in the field when Amazon users install the app on their Android 14 phones and attempt to purchase.
Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.sample/com.revenuecat.purchases.amazon.purchasing.ProxyAmazonBillingActivity}: java.lang.SecurityException: com.myapp.sample: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3822)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3963)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2468)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8248)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Caused by java.lang.SecurityException: com.myapp.sample: 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:5713)
at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1852)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1792)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1780)
at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:755)
at com.revenuecat.purchases.amazon.purchasing.ProxyAmazonBillingDelegate.onCreate(ProxyAmazonBillingDelegate.kt:24)
at com.revenuecat.purchases.amazon.purchasing.ProxyAmazonBillingActivity.onCreate(ProxyAmazonBillingActivity.kt:47)
at android.app.Activity.performCreate(Activity.java:8621)
at android.app.Activity.performCreate(Activity.java:8599)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1456)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3804)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3963)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2468)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8248)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Caused by android.os.RemoteException: Remote stack trace:
at com.android.server.am.ActivityManagerService.registerReceiverWithFeature(ActivityManagerService.java:14008)
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2585)
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2763)
at android.os.Binder.execTransactInternal(Binder.java:1358)
at android.os.Binder.execTransact(Binder.java:1304)
Remember that the Amazon app store can be installed on any Android device and not just Amazon devices (which I agree won't have Android 14 for some time).
Can com.revenuecat.purchases:purchases-store-amazon be updated to be compatible with Android 14?
My app targets Android 14 (targetSdkVersion 34). Android 14 requires runtime registered receivers to specify whether they are exported or not.
I'm seeing the following crash in the field when Amazon users install the app on their Android 14 phones and attempt to purchase.
Remember that the Amazon app store can be installed on any Android device and not just Amazon devices (which I agree won't have Android 14 for some time).
Can com.revenuecat.purchases:purchases-store-amazon be updated to be compatible with Android 14?