Слияние манифеста библиотеки (два контент провайдера)
Делаю библиотеку, внутри которого нужно иметь провайдер. Но если в манифесте проекта к которому подключается библиотека уже есть свой провайдер, то происходит ошибка при компиляции.
Как можно объединить оба провайдера в итоговый манифест? Но так чтобы authorities не менялись (все оставалось как есть)
Манифест основного приложения (это как пример, да деле может быть что угодно)
<application
android:name=".App"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:theme="@style/Theme.MyApplication">
//...
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.appFileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
</application>
Манифест библиотеки
<application>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.libFileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/libpaths" />
</provider>
</application>
Итоговый манифест должен быть таким:
<application
android:name=".App"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:theme="@style/Theme.MyApplication">
//...
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.appFileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.libFileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/libpaths" />
</provider>
</application>
Такая ошибка при компиляции:
/Users/nameny/AndroidStudioProjects/MyApplication2/app/src/main/AndroidManifest.xml:23:13-67 Error: Attribute provider#androidx.core.content.FileProvider@authorities value=(ru.mydomain.myapplication.appFileProvider) from AndroidManifest.xml:23:13-67 is also present at [:mylibrary] AndroidManifest.xml:12:13-67 value=(ru.mydomain.myapplication.libFileProvider). Suggestion: add 'tools:replace="android:authorities"' to element at AndroidManifest.xml:21:9-29:20 to override. /Users/nameny/AndroidStudioProjects/MyApplication2/app/src/main/AndroidManifest.xml:28:17-50 Error: Attribute meta-data#android.support.FILE_PROVIDER_PATHS@resource value=(@xml/filepaths) from AndroidManifest.xml:28:17-50 is also present at [:mylibrary] AndroidManifest.xml:17:17-49 value=(@xml/libpaths). Suggestion: add 'tools:replace="android:resource"' to element at AndroidManifest.xml:26:13-28:53 to override.