也许你的应用正在使用一些第三方SDK或代码库,毕竟“站在巨人的肩膀上”比从头开始最基础的应用开发更省时。作为应用开发者,您要对应用的整体情况负责,包括用户体验、您的代码,当然还有第三方SDK和代码库。当您考虑使用SDK或代码库时,了解它们如何处理和使用数据处理尤为重要,这将使您更好地保护用户隐私。在这篇文章中,我将与大家分享几个可以在应用开发的不同阶段使用的工具,包括开发阶段和应用发布之后(这是对SDK厂商文档的补充,推荐阅读仔细阅读SDK文档)。合并的清单视图为了增加灵活性,Gradle支持由应用程序构建配置、应用程序模块或代码库依赖项要求定义的多个单独的Android清单文件。这些清单文件包含不同的默认XML元素和属性,具体取决于项目的需要。在构建应用程序时,Gradle将所有清单文件合并到一个清单文件中。您可以指定“合并规则”来定义值如何合并。接下来,我们将探讨如何使用此工具来深入了解您所依赖的SDK。AndroidStudio提供了一种简单的方法来检查最终合并的清单文件。这是通过单击清单编辑窗口底部的“合并清单”选项卡来完成的。通过界面上高亮显示的不同颜色,可以清楚地区分不同的清单文件来源(ManifestSources)。这些来源包括不同的代码库依赖项,例如,下图显示了名为“transport-backend”的依赖项在应用程序中使用的权限。MergedManifest视图示例等展示可以帮助您快速定位应用依赖导致的异常权限请求。由于运行时的权限请求对话框可以改变用户交互,因此此分析数据不仅有用,还可以让您更全面地了解应用程序的依赖项如何使用这些数据。如有必要,您需要向用户解释访问某些数据的时间和原因。如果您在合并的清单中看到任何异常的权限使用,请仔细查看依赖库的文档(或联系开发者)并确保您了解权限使用的实际目的。对于您正在使用的服务,此权限很可能是可选的。对于需要最小化数据使用的场景,您可以在应用模块的清单文件中添加“删除”节点标签,以防止库的权限请求被合并到最终应用中。ModuleDependencyView开发工具链中另一个非常有用的工具是Gradle的模块依赖支持。依赖图的一个常见用途是定位构建过程中遇到的问题。依赖图还可以展示间接依赖的信息,帮助开发者理解依赖库引入的额外依赖。有关详细信息,请参阅:查看模块依赖关系。接下来,我们将介绍另一种工具,可以帮助您更好地了解应用程序中的数据访问。数据访问审计随着应用程序变得越来越复杂(包括您的团队规模),在应用程序开发期间可能很难直观地检查对SDK相关私有数据的访问。Android11引入了数据访问审计功能,可以帮助开发者确认在应用程序使用过程中是哪段代码访问了数据。此功能允许您将私有数据与应用程序中的业务场景相关联,例如“订购咖啡”或“与朋友分享”。然后定位有没有异常的数据访问操作,判断是哪个模块或者应用场景进行了访问操作。要使用这个特性,首先要创建一个上下文对象,并将其与一个“属性标签”相关联,这个标签与某个业务场景相关,比如“订购咖啡”。您可以在OrderCoffeeActivity.onCreate()方法中执行此操作。attributionContext=createAttributionContext("orderCoffee")您可以在开发框架后续API调用中将上面创建的attributionContext作为Context类型的参数。接下来,设置将在访问私有数据时调用的回调。在回调中,您可以获取attributionTag(上面设置的属性标签),并提取堆栈信息或集成您自己的应用程序分析方法。valappOpsCallback=object:AppOpsManager.OnOpNotedCallback(){//当你的app访问私有数据时,这个回调会在app访问私有数据时被调用//比如联系人数据overridefunonNoted(syncNotedAppOp:SyncNotedAppOp){logDataAccess(//这里会返回上面创建attributionContext时传入的tag字符串,//比如这里是"orderCoffee"syncNotedAppOp.attributionTag,Throwable().stackTrace.toString())}同时进行数据访问审计两者支持同步和异步API调用,可在Android11及更高版本的设备上使用。有关详细信息,请参阅:数据访问审计。总结Android11新增的MergedManifest工具、Gradle对模块依赖的支持、数据访问审计API,都是为了帮助开发者对依赖于App和SDK的数据访问和操作提供额外的监控。这使您可以向最终用户展示更好的透明度。建议您将这些工具集成到您现有的工作流程中。此外,如果您通过GooglePlay商店分发您的应用程序,请确保您已阅读相关的用户数据政策并确保您使用的SDK是合规的。本文转载自OSCHINA文章标题:不要让导入的SDK和第三方库导致你的应用被下架!本文地址:https://www.oschina.net/news/141535/pay-attention-on-3rd-library-and-sdk信息来源:https://my.oschina.net/androiddevs/blog/5048766