我正在使用一个提供SyncAdapter的Android SDK(库),它在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时,我发现提供者中AndroidManifest.xml中的$ {applicationId}被build.gradle中定义的applicationId替代(成为sync.xyz),但是sync-adapter文件中的applicationId没有被替代,并保持为它是“ sync。$ {applicationId}”。
我们如何在同步适配器文件中替换$ {applicationId}?