Я получил следующую ошибку при попытке запустить образец приложения Flutter, в моем случае галерею Flutter, на устройстве Android:
E/AndroidRuntime(20352): FATAL EXCEPTION: SplitCompatBackgroundThread
E/AndroidRuntime(20352): Process: io.flutter.demo.gallery, PID: 20352
E/AndroidRuntime(20352): java.lang.SecurityException: io.flutter.demo.gallery: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
E/AndroidRuntime(20352): at android.os.Parcel.createExceptionOrNull(Parcel.java:3069)
E/AndroidRuntime(20352): at android.os.Parcel.createException(Parcel.java:3053)
E/AndroidRuntime(20352): at android.os.Parcel.readException(Parcel.java:3036)
E/AndroidRuntime(20352): at android.os.Parcel.readException(Parcel.java:2978)
E/AndroidRuntime(20352): at android.app.IActivityManager$Stub$Proxy.registerReceiverWithFeature(IActivityManager.java:6157)
E/AndroidRuntime(20352): at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1913)
E/AndroidRuntime(20352): at android.app.ContextImpl.registerReceiver(ContextImpl.java:1853)
E/AndroidRuntime(20352): at android.app.ContextImpl.registerReceiver(ContextImpl.java:1841)
E/AndroidRuntime(20352): at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:772)
E/AndroidRuntime(20352): at com.google.android.play.core.listener.b.b(Unknown Source:27)
E/AndroidRuntime(20352): at com.google.android.play.core.listener.b.e(Unknown Source:3)
E/AndroidRuntime(20352): at com.google.android.play.core.splitcompat.m.run(Unknown Source:7)
(More stacktrace here)
Я ожидал, что приложение запустится, как в Windows, но этого не произошло.
Решение
Я решил проблему, удалив следующую строку (в моем случае 85) из android/app/build.gradle:
implementation "com.google.android.play:core:1.10.0"
И изменим следующую строку (строка 8 в моем случае) из android/app/src/main/AndroidManifest.xml:
android:name = "io.flutter.embedding.android.FlutterPlayStoreSplitApplication"
К:
android:name = "${applicationName}"
Это удаляет функциональность Play Store (не знаю, что именно), но в моем случае это не проблема, поскольку мне просто нужен пример приложения.
Play Core фактически устарел, поэтому удаление игрового ядра определенно является правильным направлением.
Кроме этого, вы можете попробовать отфильтровать зависимости, которым транзитивно требуется игровое ядро, выполнив действия, упомянутые здесь