跳转至

Content Provider 设置

Content Provider 设置指引

为优化多进程数据采集,ft-sdk >= 1.6.14 使用了 ContentProvider。SDK 默认使用以下配置,会根据应用不同 applicationId 进行自适应。

<provider
    android:name="com.ft.sdk.garble.db.FTContentProvider"
    android:authorities="${applicationId}.com.ft.sdk.provider"
    android:exported="false"
    android:multiprocess="false">
</provider>

自定义 provider

如果需要进行定制设置,那么需要使用 tools:replace 对 provider 进行覆盖设置,并同步设置 meta-data

providerandroid:authorities 需要与 meta-dataandroid:value 保持一致。

<provider
    tools:replace="android:authorities"
    android:name="com.ft.sdk.garble.db.FTContentProvider"
    android:authorities="com.custom.app.provider"
    android:exported="false"
    android:multiprocess="false">
</provider>

<meta-data
    android:name="com.ft.sdk.PROVIDER_AUTHORITY"
    android:value="com.custom.app.provider" />

强制移除 provider

通常不建议移除 SDK 默认声明的 FTContentProvider。如果应用因 Manifest 合规、组件收敛或其他特殊要求必须移除,可以在应用主模块的 AndroidManifest.xml 中使用 tools:node="remove"

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application>
        <provider
            android:name="com.ft.sdk.garble.db.FTContentProvider"
            android:authorities="${applicationId}.ft_sdk_provider_removed"
            tools:node="remove" />
    </application>
</manifest>

如果之前已经配置过自定义 android:authorities,移除配置中的 android:authorities 也需要保持一致,并同步移除对应的 meta-data

<meta-data
    android:name="com.ft.sdk.PROVIDER_AUTHORITY"
    tools:node="remove" />

完成配置后,请构建目标变体,并在应用模块 build/intermediates/merged_manifest/ 目录下查看最终合并的 AndroidManifest.xml,确认 com.ft.sdk.garble.db.FTContentProvidercom.ft.sdk.PROVIDER_AUTHORITY 均已被移除。不同 Android Gradle Plugin 版本生成的子目录可能不同,可在 merged_manifest 目录中搜索对应类名或 meta-data 名称进行确认。

移除 provider 后,建议显式开启文件缓存,避免继续依赖默认 SQLite provider 路径。

FTSDKConfig config = FTSDKConfig.builder(datawayUrl, clientToken)
        .enableFileDataStore();

FTSdk.install(config);
val config = FTSDKConfig.builder(datawayUrl, clientToken)
    .enableFileDataStore()

FTSdk.install(config)
移除 provider 后的影响
  • 默认 SQLite 缓存路径不可用,ft-sdk 1.7.2 以上版本会回退到文件缓存;低于 1.7.2 的版本不建议移除 provider。
  • FTSDKConfig.setFileDataStoreShadow(true) 依赖 provider 读取 SQLite 缓存,移除后影子写入模式不会生效。
  • 如果同时配置 FTSDKConfig.setNeedTransformOldCache(true),移除 provider 后无法读取旧 SQLite 缓存,旧缓存迁移会被跳过,历史未上报数据可能无法继续同步。
  • 多进程场景下,移除 provider 后不再使用 SDK 的 SQLite 多进程访问路径;请优先使用 enableFileDataStore() 并验证各进程的数据写入与上报是否符合预期。

文档评价

文档内容是否对您有帮助? ×