文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

别让引入的 SDK 和第三方库导致您应用被下架!

2024-12-03 05:06

关注

[[399573]]

当您在考虑使用 SDK 或代码库时,知晓它们对如何处理和使用数据处理尤为重要,这将使得您可以更好地保护用户隐私。

在本文中,我将和大家分享几个工具,可用于应用开发的不同阶段,包括开发阶段和应用发布后 (这是对 SDK 厂商文档的补充,推荐大家仔细阅读 SDK 文档)。

Merged Manifest 视图

为了能够增加灵活性,Gradle 支持多个以应用构建配置、应用模块或代码库依赖需求而定义的单独 Android Manifest 文件。这些清单文件根据工程需要包含不同的默认 XML 元素和属性。当构建应用时,Gradle 会将所有清单文件合并到一个清单文件中。您可以 指定 "合并规则" 来定义数值的合并方式。接下来,我们探讨如何使用这个工具洞悉您所依赖的 SDK。

Android Studio 提供了一种简单的方式来检查最终合并后的清单文件。方法是点击处于清单文件编辑窗口底部的 "Merged Manifest" 标签页。通过界面凸显的不同颜色,您可以清楚地分辨出不同的清单文件来源 (Manifest Sources)。这些源包括不同的代码库依赖,例如下图展示了名称为 "transport-backend" 的依赖在应用中所用到的权限。

 

Merged Manifest 视图示例

 

这样的展示效果能够帮助您快速定位到由应用依赖所带来的异常权限请求。由于运行时的权限请求对话框可能会改变用户的交互,因此这些分析数据不仅非常有用,而且还能够使您更加全面地掌握应用的依赖对数据的使用目的。如果有必要的话,您需要向用户解释何时以及为何要访问某些数据。

如果您在合并后的清单文件中看到任何异常的权限使用,请仔细审阅相关依赖库文档 (或者联系开发者),并确保您了解该权限使用的实际目的。

该权限很有可能对于您所使用的服务来说是可选的。对于需要最小化数据使用的场景,您可以在应用模块的清单文件中添加一个 "remove" 节点标记 来防止该库的权限请求被合并到最终的应用中。

  1. name="SOME_PERMISSION" 
  2.    tools:node="remove"/> 

模块依赖视图

在开发工具链中另一个非常实用的工具是 Gradle 的模块依赖支持。依赖图表通常的用法是定位构建过程中遇到的问题。依赖图表还可以显示间接依赖的信息,有助于帮助开发者知晓由依赖库引入的额外依赖。如需了解更多信息,请参阅: 查看模块依赖项。

接下来,我们将介绍另外一款工具,它可以帮助您更好地了解应用中的数据访问情况。

数据访问审计

随着应用复杂性的提高 (包括您团队规模的不断扩大),在应用的开发过程中很难直观地检查与 SDK 相关隐私数据的访问情况。

Android 11 引入了 数据访问审计 的特性,它可以帮助开发者确认在应用使用过程中哪段代码访问了数据。该特性可以让您将隐私数据与应用中的业务场景相关联,比如 "点咖啡" 或者 "与朋友分享"。进而定位任何异常的数据访问操作,并确定哪个模块或者应用场景执行了访问操作。

如需使用该特性,首先创建一个 context 对象,并且为其关联一个 "属性标签",该标签和某个业务场景相关,比如 "点咖啡"。您可以在 OrderCoffeeActivity.onCreate() 方法内实现这些。

  1. attributionContext = createAttributionContext("orderCoffee"

您可以在之后开发框架的 API 调用中将上面创建的 attributionContext 作为 Context 类型的参数进行使用。

接下来,设置一个回调,当隐私数据被访问的时候会调用该回调。在回调内部,您可以获取 attributionTag (上面所设置的属性标签),并提取堆栈信息或者集成您自己的应用分析方法。

 

  1. val appOpsCallback = object : AppOpsManager.OnOpNotedCallback() { 
  2.       // 当您的应用访问了隐私数据的时候,该回调会在应用访问隐私数据的时候被调用 
  3.       // 比如联系人数据 
  4.       override fun onNoted(syncNotedAppOp: SyncNotedAppOp) { 
  5.         logDataAccess(syncNotedAppOp.op, 
  6.                  // 这里会返回上面创建 attributionContext 的时候所传入的标签字符串, 
  7.                 // 比如,这里就是 “orderCoffee” 
  8.                 syncNotedAppOp.attributionTag,  
  9.                 Throwable().stackTrace.toString()) 
  10.     } 

数据访问审计同时支持同步和异步两种 API 调用,并且可以在 Android 11 及之后的设备上使用。如需了解更多信息,请参阅: 数据访问审计。

小结

Android 11 中新增的 Merged Manifest 工具、Gradle 对于模块依赖的支持、数据访问审计 API,均是为了能够帮助开发者针对应用内和 SDK 依赖的数据访问和操作提供额外的监测。从而使您为终端用户展现更好的透明性。推荐大家将这些工具整合进现有的工作流程中。

此外,如果您通过 Google Play 商店发布应用,请确认已经阅读了相关的 用户数据策略,并且确保您使用的 SDK 是符合要求的。

本文转自OSCHINA

本文别让引入的 SDK 和第三方库导致您应用被下架!

本文地址:https://www.oschina.net/news/141535/pay-attention-on-3rd-library-and-sdk

资讯来源:https://my.oschina.net/androiddevs/blog/5048766

来源:开源中国内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯