airbnb / mavericks

Mavericks: Android on Autopilot
https://airbnb.io/mavericks/
Apache License 2.0
5.83k stars 500 forks source link

java.lang.SecurityException: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified #699

Closed danpe closed 11 months ago

danpe commented 11 months ago

Newly introduced behavior changes in Android 14 causes Maverick to crash the app.

image

... 75 more Caused by: java.lang.SecurityException: com.app: 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:5684) 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.airbnb.mvrx.mocking.printer.MavericksPrintStateBroadcastReceiver.register(MavericksMockPrinter.kt:207) at com.airbnb.mvrx.mocking.MockMavericksViewModelConfigFactory.buildConfig(MockableMavericksViewModelConfig.kt:273) at com.airbnb.mvrx.MavericksViewModelConfigFactory.provideConfig$mvrx_release(MavericksViewModelConfigFactory.kt:67) at com.airbnb.mvrx.MavericksViewModel.(MavericksViewModel.kt:35) at com.airbnb.mvrx.MavericksViewModel.(MavericksViewModel.kt:25)

This happens due to the following line: https://github.com/airbnb/mavericks/blob/1318087ee6fea40d1d2e0b5a0b34f36c19a297dd/mvrx-mocking/src/main/kotlin/com/airbnb/mvrx/mocking/printer/MavericksMockPrinter.kt#L207