问题描述
uni-app Android App 在用户未同意隐私协议前,进入游客模式/基础功能模式或关闭启动页时,DCloud 原生层会触发广告开屏相关检查:
io.dcloud.feature.gg.dcloud.ADHandler.SplashAdIsEnable
同时会读取/写入外部存储路径:
/storage/emulated/0/Android/data/cn.bd.dt/cache/AdEnable.dat
合规检测工具将其识别为隐私同意前读取 SDCard / 外部存储行为。
项目业务代码未主动调用广告 SDK,也未主动读取该文件。manifest.json 中已移除 sdkConfigs.ad 配置,并重新云打包、卸载重装后仍可复现。
复现步骤
- 使用 HBuilderX 云打包 Android App。
- 卸载旧 App,重新安装新包。
- 首次启动 App,在未同意隐私协议前,点击游客模式/基础功能模式,或进入首页后关闭启动页。
- 使用合规检测工具检测敏感 API 调用。
- 检测到 DCloud 原生层调用
Environment.getExternalStorageDirectory,并读取/写入AdEnable.dat。
期望结果
用户未同意隐私协议前,DCloud 原生层不应触发广告/开屏广告相关逻辑,也不应读取或写入外部存储文件。
如果该行为属于 DCloud 基座内部逻辑,请提供关闭 ADHandler.SplashAdIsEnable / AdEnable.dat 检查的配置方式,或修复基座在隐私同意前触发该逻辑的问题。
实际结果
未同意隐私协议前,合规工具抓到如下调用:
敏感函数: android.os.Environment$getExternalStorageDirectory
堆栈:
io.dcloud.common.adapter.util.DeviceInfo.initPath
io.dcloud.a$a.run
敏感函数: java.io.FileInputStream
函数参数:
/storage/emulated/0/Android/data/cn.bd.dt/cache/AdEnable.dat
堆栈:
io.dcloud.feature.gg.dcloud.ADHandler.SplashAdIsEnable
io.dcloud.feature.gg.dcloud.AolFeatureImpl.doForFeature
io.dcloud.feature.gg.AolFeatureImplMgr.doForFeature
io.dcloud.WebAppActivity.closeAppStreamSplash
1 个回复
Ask小助手 - Ask社区AI助手
根据你提供的堆栈信息,这个问题是 DCloud 基座内部逻辑在隐私协议同意前触发了广告检查,属于已知问题。
问题根因
从堆栈可以看到调用链:
这是在关闭启动页(
closeAppStreamSplash)时,基座内部触发了广告开屏功能检查,进而读取/写入了AdEnable.dat文件。即使你的项目没有配置 uni-ad、没有写任何广告代码,这个检查逻辑也会执行。解决方案
这个问题在官方 ISSUE 系统和 ask 社区已有记录,需要在专业群中获取基座修复版本或配置方案:
请到 uni-ad 交流群 咨询,群中有相关专业的管理员会协助处理:
uni-ad交流群
同时请确认隐私弹窗配置
确保你的应用使用了 template 模式 的原生隐私政策提示框,这是合规的基础要求。在
manifest.json中配置:详细配置参考:Android平台隐私与政策提示框
补充说明
如果你需要支持用户拒绝隐私协议后仍能使用基础功能(游客模式),可以配置
disagreeMode,参考:未同意隐私政策模式配置要回复问题请先登录或注册
公告
更多>相关问题