Estoy intentando migrar mi aplicación a Android 12 cambiando la versión del SDK de destino a 31 en build.gradle. Según sea necesario, agregué el indicador android:exported
a todas las etiquetas de actividad/receptor/servicios/proveedor presentes en mi archivo de manifiesto. Pero todavía recibo este error.
Manifest merger failed : android:exported needs to be explicitly specified for <receiver>. Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined.
Así que supongo que este problema se debe a cualquier biblioteca de terceros cuyo manifiesto contenga un receptor sin android:exported
.
También verifiqué el archivo de manifiesto combinado para android:exported
en componentes de bibliotecas de terceros. Pero en el archivo de manifiesto fusionado también todas las etiquetas de actividad/receptor/servicios tienen un indicador exportado.
Entonces, ¿cómo puedo encontrar ese receptor faltante que está causando el problema?
El motivo es que algunas de las bibliotecas de dependencia que está utilizando tienen elementos que no tienen el atributo "android: exportado".
Usted necesita hacer ésto:
<activity android:name="SomeActivity" android:exported="false" tools:node="merge" tools:replace="android:exported" />
Ahora puedes aumentar tu versión a 31.