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

image

或许您的应用正在使用一些第三方 SDK 或者代码库,毕竟 "站在巨人的肩膀上" 比从头开始最基础的应用开发更节省时间。作为应用开发者,您需要为应用的整体情况负责,包括用户体验和您的代码,当然,也包含第三方 SDK 和代码库。

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

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

Merged Manifest 视图

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

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

Merged Manifest 视图示例

Merged Manifest 视图示例

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

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

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

<uses-permission android:name="SOME_PERMISSION"
   tools:node="remove"/>

模块依赖视图

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

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

数据访问审计

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

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

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

attributionContext = createAttributionContext("orderCoffee")

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

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

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

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

小结

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容