tinycreative / react-native-intercom

React Native wrapper for Intercom.io
MIT License
406 stars 279 forks source link

Manifest merger failed with multiple errors #474

Open jatin-bhuva opened 1 year ago

jatin-bhuva commented 1 year ago

Since last Monday I am getting the below error while building the app from the Android studio:

/Users/macm/Desktop/mobile-app/android/app/src/debug/AndroidManifest.xml:15:13-72 Error:
Attribute provider#androidx.core.content.FileProvider@authorities value=(com.verygoodsecurity.vgsshow.provider) from [com.verygoodsecurity:vgsshow:1.2.0] AndroidManifest.xml:15:13-72
is also present at [io.intercom.android:intercom-sdk-base:15.1.6] AndroidManifest.xml:121:13-72 value=(com.today.development.IntercomFileProvider).
Suggestion: add 'tools:replace="android:authorities"' to <provider> element at AndroidManifest.xml:13:9-21:20 to override.

/Users/macm/Desktop/mobile-app/android/app/src/debug/AndroidManifest.xml:44:17-55 Error:
    Attribute meta-data#android.support.FILE_PROVIDER_PATHS@resource value=(@xml/file_paths) from [:react-native-blob-util] AndroidManifest.xml:44:17-55
    is also present at [io.intercom.android:intercom-sdk-base:15.1.6] AndroidManifest.xml:126:17-60 value=(@xml/intercom_file_paths).
    Suggestion: add 'tools:replace="android:resource"' to <meta-data> element at AndroidManifest.xml to override.

See http://g.co/androidstudio/manifest-merger for more information about the manifest merger.
Last Friday app was successfully built from android studio.

This is related to @intercom/intercom-react-native 5.1.1 library manifest file. Let me know if anyone have idea for this.

junocs commented 1 year ago

I've also run into this issue today. What I did was to add this to the AndroidManifest.xml file

<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="${applicationId}.FileProvider"
    android:exported="false"
    android:grantUriPermissions="true"
    tools:replace="android:authorities">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/merged_provider_paths"
        tools:replace="android:resource" />
</provider>

I also created the merged_provider_paths.xml file inside the xml folder to contain what is in the intercom_file_paths.xml and in the conflicted library. In your case, it should be inside @xml/file_paths.

Mine looks like this

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <cache-path
        name="shared_images"
        path="images/" />
    <external-path name="external" path="." />
</paths>
jatin-bhuva commented 1 year ago

<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/merged_provider_paths" tools:replace="android:resource" />

@junocs Can you explain it a bit further?