Skip to content

fix(core): 停止读取 SIM 运营商信息以满足隐私合规#22

Open
niuweili wants to merge 1 commit into
publishfrom
fix/drop-sim-carrier-collection
Open

fix(core): 停止读取 SIM 运营商信息以满足隐私合规#22
niuweili wants to merge 1 commit into
publishfrom
fix/drop-sim-carrier-collection

Conversation

@niuweili

Copy link
Copy Markdown

背景

隐私合规静态扫描会命中 BroadcastReceiverNetworkInfoProvider 中对 TelephonyManager.simCarrierIdName / simCarrierId 的调用,判定为「采集运营商信息」。

经核实,该调用在运行时本就不可达

  • 该 provider 仅在 API < 24(Android 7.0 以下)时被实例化;
  • 而其 carrier 采集分支要求 API ≥ 28(Android 9.0+);
  • 两个条件互斥,属于死代码——真实用户数据中从不包含运营商信息。

但「运行时不可达」消除不了「字节码中存在该 API 调用」这一事实,静态扫描仍会标红。

改动

  • 移除 BroadcastReceiverNetworkInfoProvider 中对 simCarrierIdName / simCarrierId 的读取;
  • 随之清理:构造函数移除不再使用的 buildSdkVersionProvider、删除 UNKNOWN_CARRIER_NAME 常量;
  • 更新单元测试:移除 API 28+ carrier 用例与相关 mock;
  • 补充 CHANGELOG(Unreleased)。

影响

零功能影响(运行时本就不采集),但消除了字节码中被隐私合规扫描命中的电信 API 调用。

验证

./gradlew :dd-sdk-android-core:testDebugUnitTest --tests "*BroadcastReceiverNetworkInfoProviderTest" ✅ BUILD SUCCESSFUL(JDK 17)。

移除 BroadcastReceiverNetworkInfoProvider 中对
TelephonyManager.simCarrierIdName / simCarrierId 的读取。

该路径在运行时本就不可达:此 provider 仅在 API < 24 时启用,
而 carrier 采集分支要求 API ≥ 28,二者互斥,属于死代码。删除后
功能无任何影响,但消除了字节码中被隐私合规静态扫描命中的电信 API
调用,避免被误判为“采集运营商信息”。

同步清理:构造函数移除不再使用的 buildSdkVersionProvider,删除
UNKNOWN_CARRIER_NAME 常量,并移除测试中相应的 API 28+ 用例。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant