yandexmobile / yandex-ads-sdk-android

Other
79 stars 22 forks source link

SDK v 7.0.0 конфликтует с внутренним FileProvider #260

Closed kastwsw closed 1 month ago

kastwsw commented 5 months ago

Мигрируем с SDK 6 на SDK 7

implementation 'com.yandex.android:mobileads:7.0.0'

Компилятор Студии выдаёт конфликт совмещения манифестов (Manifest merger failed). С SDK 6 такого нет.

Error: Attribute provider#androidx.core.content.FileProvider@authorities value=(applicationId.fileprovider) from (unknown) is also present at [com.yandex.android:mobileads:7.0.0] AndroidManifest.xml:32:13-91 value=(applicationId.monetization.ads.inspector.fileprovider). Suggestion: add 'tools:replace="android:authorities"' to <provider> element at AndroidManifest.xml to override.

Error: Attribute meta-data#android.support.FILE_PROVIDER_PATHS@resource value=(@xml/provider_paths) from (unknown) is also present at [com.yandex.android:mobileads:7.0.0] AndroidManifest.xml:37:17-51 value=(@xml/file_paths). Suggestion: add 'tools:replace="android:resource"' to <meta-data> element at AndroidManifest.xml to override.

В манифесте нашего приложения уже используется androidx.core.content.FileProvider

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

Как правильно разрулить этот конфликт, чтобы не нарушить идею заложенную в вашем SDK?

mobile-ads-github commented 5 months ago

Здравствуйте! Благодарим за Ваше обращение! Мы исправим эту проблему в ближайшем релизе.

В качестве быстрого решения проблемы, мы можем предложить вам создать собственный FileProvider, отнаследовавшись от androidx.core.content.FileProvider:

package your.package.name

import androidx.core.content.FileProvider

class CustomFileProvider: FileProvider()

и указать имя этого класса при объявлении <provider> в AndroidManifest.xml в качестве значения атрибута android:name:

<provider
    android:name=".CustomFileProvider"
    android:authorities="${applicationId}.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths" />
</provider>
mobile-ads-github commented 5 months ago

Спасибо за Ваше обращение, для разбора создана задача с номером PCODESUP-3120. Мы ознакомимся и вернемся с ответом в течение 2 дней, возможно запросим дополнительную информацию.

Thank you for your message, a task with the number PCODESUP-3120 has been created for analysis. We will get acquainted and return with the answer within 2 days, we may request additional information.

vellrya commented 4 months ago

Ровно месяц ждем "ближайший релиз" с исправлением данной ошибки

kastwsw commented 4 months ago

Ровно месяц ждем "ближайший релиз" с исправлением данной ошибки

Вроде в 7.0.1 исправили.

У нас собралось без проблем.

vellrya commented 4 months ago

И правда, почему-то считал, что пробовал на 7.0.1 несколько недель назад и не компилировалось. Сейчас сборка прошла успешно, спасибо за уточнение)

mobile-ads-github commented 1 month ago

Добрый день! Проблему пофиксили в 7.0.1.