Lin97112479
Lin97112479
  • 发布:2026-08-12 09:29
  • 更新:2026-08-12 09:47
  • 阅读:40

授权前行SDK获取硬件序列号

分类:HBuilder

应用上架时 未同意隐私政策获取软件序列号 我们自己没有去主动获取过
里面写的主动获取的是 DCloud 开发通用工具库 下面传了截图的 不知道什么原因 没有额外增加插件 也没有加主动调用的东西 纯js代码就改了 之前的包就可以上架后面就不行了 一直报 :DCloud 开发通用工具库 获取软件序列号

2026-08-12 09:29 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( HBuilderX技术交流群 ) 咨询,群中有相关专业的管理员和群友。

根据您描述的情况(应用上架被驳回,提示“DCloud 开发通用工具库”在授权前获取硬件序列号,但您并未主动调用相关代码),这通常与 DCloud 基础 SDK 的合规机制隐私政策配置 有关。以下是针对该问题的排查和解决方案:

1. 核心原因分析

  • DCloud 基础 SDK 行为:即使用户未主动调用,io.dcloud 基础库(如广告模块 AolFeatureImpl、设备信息统计等)可能在应用启动时自动初始化并尝试获取设备信息(如序列号、Android ID),尤其是在 用户点击“同意”隐私政策前
  • 隐私政策配置问题:如果隐私政策弹窗未正确配置(如未使用 template 模式),或第三方 SDK(如 uni-ad、推送、统计等)在同意前初始化,会触发违规。
  • 历史版本差异:您提到“之前的包可以上架,后面不行了”,可能是因为:
    • DCloud SDK 版本更新后,合规策略收紧(如 Android 12+ 对 READ_PHONE_STATE 权限的限制)。
    • 应用市场审核规则更新(如华为、应用宝对“授权前行为”检测更严格)。

2. 解决方案步骤

步骤 1:确保使用 template 模式隐私弹窗

manifest.json 中配置隐私政策弹窗为 template 模式,并确保 用户点击“同意”前,APP 和 SDK 不执行任何行为(包括初始化、获取设备信息)。

配置示例manifest.json -> app-plus -> privacy):

{  
  "app-plus": {  
    "privacy": {  
      "prompt": "template",  
      "title": "服务协议和隐私政策",  
      "message": "请您务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款...",  
      "buttonAccept": "同意并接受",  
      "buttonRefuse": "拒绝",  
      "hrefLoader": "system", // 使用系统浏览器加载隐私链接,避免 WebView 提前初始化  
      "disagreeMode": {  
        "support": false, // 用户拒绝后是否继续运行(建议设为 false)  
        "loadNativePlugins": false, // 拒绝后是否加载原生插件  
        "visitorEntry": false, // 是否提供游客模式  
        "showAlways": false // 是否每次启动都显示弹窗  
      }  
    }  
  }  
}

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent
关键点

  • prompt 必须为 "template"
  • hrefLoader 建议设为 "system",避免使用内置 WebView 加载隐私链接(可能触发 SDK 初始化)。
  • disagreeMode.support 建议设为 false(用户拒绝后直接退出,避免后续逻辑触发 SDK)。

步骤 2:检查并移除违规的第三方 SDK

根据知识库中的案例,以下 SDK 可能在授权前获取设备信息:

  • uni-ad(广告):如优量汇、穿山甲等。
  • 推送 SDK:如 UniPush、个推、友盟。
  • 统计 SDK:如友盟统计、百度统计。
  • 其他原生插件:如微信支付、支付宝支付、地图 SDK。

操作

  1. manifest.json取消勾选所有非必需的模块(如广告、推送、统计)。
  2. 如果必须使用这些模块,确保:
    • 在用户点击“同意”隐私政策 再初始化(通过 plus.runtime.isAgreePrivacy() 判断)。
    • 在隐私政策中明确声明 SDK 收集的信息(如设备序列号、Android ID)。

示例代码(在 App.vueonLaunch 中延迟初始化):

onLaunch() {  
  // 检查用户是否已同意隐私政策  
  if (plus.runtime.isAgreePrivacy()) {  
    // 初始化广告、推送等 SDK  
    this.initSDKs();  
  } else {  
    // 监听隐私政策同意事件  
    plus.runtime.onPrivacyAgree(() => {  
      this.initSDKs();  
    });  
  }  
},  
methods: {  
  initSDKs() {  
    // 初始化 uni-ad  
    plus.ad.setPrivacyConfig({  
      isCanUsePhoneState: true, // 是否允许获取 IMEI  
      isCanGetInstallAppList: false, // 禁止获取应用列表  
      isCanGetRunningApps: false, // 禁止获取后台运行应用  
    });  
    // 初始化推送  
    plus.push.setAutoNotification(true);  
  }  
}

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

步骤 3:关闭调试模式(离线打包必做)

如果您的 APP 是 离线打包,请务必关闭调试开关:

  1. 修改项目中的 dcloud_control.xml 文件:
    <debug syncDebug="false" />  

    本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

  2. 重新打包并提交审核。

步骤 4:验证授权前行为

使用 小米手机(MIUI 12+) 安装您的 APP,检查:

  1. 首次启动时,未点击“同意”前,进入 设置 -> 应用管理 -> 您的应用 -> 应用行为记录
  2. 查看是否有 获取设备序列号、Android ID、MAC 地址 等行为。
  3. 如果有,说明仍有 SDK 在授权前运行,需进一步排查。

步骤 5:更新 HBuilderX 和依赖

  • 确保使用 HBuilderX 最新正式版(当前为 5.23+)。
  • 更新所有依赖:
    npm update  

    本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

  • 重新云端打包。

3. 特殊情况处理

情况 1:用户拒绝隐私政策后仍收集信息

根据知识库中的案例(DCloud问答_203601),如果用户点击“拒绝”后仍触发硬件序列号收集,可以尝试:

  • disagreeMode.support 设为 false(用户拒绝后直接退出)。
  • 如果必须提供“游客模式”,将 visitorEntry 设为 true,但确保游客模式下不初始化任何 SDK。

情况 2:隐私政策链接导致违规

如果隐私政策链接是通过 WebView 加载的(非 system 模式),可能会触发 chromium SDK 获取设备信息。解决方案:

  • manifest.json 中设置 hrefLoader: "system"(使用系统浏览器打开链接)。
  • 确保隐私政策页面 不包含任何 JS 代码(如统计、定位等)。

4. 参考链接

5. 总结

  1. 首要任务:确保隐私政策弹窗为 template 模式,且 hrefLoadersystem
  2. 延迟初始化:所有第三方 SDK 必须在用户同意隐私政策后初始化。
  3. 关闭调试:离线打包时关闭 syncDebug
  4. 验证:使用小米手机检查授权前行为。
  5. 更新:使用最新 HBuilderX 和依赖重新打包。

如果问题仍未解决,建议提供以下信息到 DCloud 官方论坛 进一步排查:

  • 完整的 manifest.json 配置截图。
  • 应用市场返回的 完整检测报告(含调用栈)。
  • 是否集成了第三方原生插件(如推送、统计、支付等)。
内容为 AI 生成,仅供参考
Lin97112479

Lin97112479 (作者)

这个是哪一个sdk uni统计还是什么呢

要回复问题请先登录注册