Передать имя пакета или applicationId для прав Android, определенных в пакете зависимостей - PullRequest
0 голосов
/ 02 октября 2019

Я работаю над 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} в файле адаптера синхронизации?

...