关于android:别让引入的-SDK-和第三方库导致您应用被下架

36次阅读

共计 2213 个字符,预计需要花费 6 分钟才能阅读完成。

或者您的利用正在应用一些第三方 SDK 或者代码库,毕竟 “ 站在伟人的肩膀上 ” 比从头开始最根底的利用开发更节省时间。作为利用开发者,您须要为利用的整体状况负责,包含用户体验和您的代码,当然,也蕴含第三方 SDK 和代码库。

当您在思考应用 SDK 或代码库时,通晓它们对如何解决和应用数据处理尤为重要,这将使得您能够更好地爱护用户隐衷。

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

Merged Manifest 视图

为了可能减少灵活性,Gradle 反对多个以利用构建配置、利用模块或代码库依赖需要而定义的独自 Android Manifest 文件。这些清单文件依据工程须要蕴含不同的默认 XML 元素和属性。当构建利用时,Gradle 会将所有清单文件合并到一个清单文件中。您能够 指定 “ 合并规定 ” 来定义数值的合并形式。接下来,咱们探讨如何应用这个工具洞悉您所依赖的 SDK。

Android Studio 提供了一种简略的形式来查看最终合并后的清单文件。办法是点击处于清单文件编辑窗口底部的 “Merged Manifest” 标签页。通过界面凸显的不同色彩,您能够分明地分辨出不同的清单文件起源 (Manifest Sources)。这些源包含不同的代码库依赖,例如下图展现了名称为 “transport-backend” 的依赖在利用中所用到的权限。

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 是符合要求的。

正文完
 0