将包名称或applicationId传递给依赖包中定义的android权限

时间:2019-10-01 23:50:37

标签: android android-contentprovider android-syncadapter

我正在使用一个提供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}?

0 个答案:

没有答案