Я пытаюсь создать привязки для библиотеки Zendesk, и я столкнулся с проблемой.
Библиотека Zendesk Belvedere (belvedere-1.0.2.1.aar) содержит файл файл в файле манифеста:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...
...
<application>
<provider
android:name="com.zendesk.belvedere.BelvedereFileProvider"
android:authorities="${applicationId}.belvedere.attachments"
android:exported="false"
android:grantUriPermissions="true" >
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/belvedere_attachment_storage" />
</provider>
</application>
</manifest>
Когда Gradle используется как инструмент сборки, он помещает этот файл в файл APK и заменяет ${applicationId}.belvedere.attachments
на com.your_package_name_here.belvedere.attachments
в объединенном файле манифеста. Это нормально.
Однако Xamarin обрабатывает его по-разному. Вот что я нашел в манифесте моего последнего APK:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...
...
<application
...
...
<provider
android:name="com.zendesk.belvedere.BelvedereFileProvider"
android:exported="false"
android:authorities="dollar_openBracket_applicationId_closeBracket"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/belvedere_attachment_storage" />
</provider>
...
...
</application>
</manifest>
Очевидно, что dollar_openBracket_applicationId_closeBracket
не то, что мне нужно.
Кажется, все работает, однако невозможно установить несколько приложений Xamarin, которые используют эти привязки, потому что у всех из них будут конфликтующие провайдеры с одинаковыми полномочиями (и пользователь получит ошибку INSTALL_FAILED_CONFLICTING_PROVIDER
).
Есть ли способ изменить dollar_openBracket_applicationId_closeBracket
в манифесте?
Изменить: Небольшой образец, который показывает проблему: https://gitlab.com/lassana/ZendeskXamarin/