Я работаю над Android SDK (библиотекой), который предоставляет SyncAdapter, он предоставляет определение провайдера в AndroidManifest.xml и файл адаптера синхронизации (оба присутствуют в пакете SDK, а не в APK). Есть несколько APK, которые будут использовать эту библиотеку и развертываться на одном устройстве. Чтобы избежать дублирования исключений провайдера, я пытаюсь добавить имя пакета верхнего уровня или applicationId в качестве суффикса.
AndroidManifest.xml
< provider
android:authorities="sync.${applicationId}"
android:name="SyncAdapter$ContentProvider"
android:exported="false"
android:syncable="true"/>
Мета-файл адаптера синхронизации
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="amazon.account"
android:contentAuthority="sync.${applicationId}"
android:userVisible="false"
android:supportsUploading="false"
android:allowParallelSyncs="false"
android:isAlwaysSyncable="true" />
Анализируя APK, я обнаружил, что $ {applicationId} в AndroidManifest.xml в провайдере заменяется на applicationId, определенный в build.gradle (становится sync.xyz), но applicationId в файле адаптера синхронизации не подставляется и остается какэто "sync. $ {applicationId}".
Как мы можем заменить $ {applicationId} в файле адаптера синхронизации?