前段时间,二狗子的朋友圈被工信部发布的《关于下架侵害用户权益 App 名单的通报》给刷屏了。公告中指出有 90 款 App 未按照要求完成整改将会下架。而这 90 款 App 涉及全国各地教育、游戏、安全、新闻等诸多领域。同时通报中提到,有 5 家企业在 App 不同版本中反复出现同类问题,包括违规收集个人信息、强制用户使用定向推送功能、频繁过度强制索权、欺骗诱导用户下载等。工信部表示将依法暂停其违规行为,予以直接下架处理。

看到这则公告后,本着吃瓜心理,二狗子顺手去搜了一下这 5 家企业,发现他们已经纷纷发表了回应,表示平台排查后发现问题主要在于第三方 SDK 等方面。

其实这类第三方 SDK 插件违法调用手机信息的行为,早在 2020 年的 315 晚会上就被央视曝光过了,目前网络上也经常会出现这类新闻。

那为何 SDK 这么危险,软件厂商确还要频频使用呢?但是如果要说 SDK,那肯定离不开 API。

API 的出现

如果想较为详细的了解 API 大家可以阅读《白话科普,10s 了解 API》,这里就给大家简单介绍一下。

API 的全称是 Application Programming Interface,中文名为“应用程序接口”,一般是指一些服务厂商预先定义好的一组向外开放的方法。这些方法直接对应服务厂商的自家服务功能,方便应用程序或开发人员快速调用功能,而无需理解服务厂商工作机制的细节。例如用户如果使用了又拍云短信服务来开发短信发送的功能,那只要按照文档选择想要实现的功能,然后调用短信 API 接口来调用想用服务即可,并不需要知道短信如何传递给客户的技术细节。

SDK 的诞生

简单了解了 API,我们再回到本文最初所说的 SDK 上来。

所谓 SDK 其实是"软件开发工具包",即 Software Development Kit 的缩写。它一般是指通过第三方服务商实现产品功能的软件工具包。通常,SDK 是由专业的公司提供的,为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具集合。可以将移动支付技术、语音识别技术,或者存储技术等进行专业集合。它有效减少了开发者在新增功能时对产品每一项功能进行开发的时间。

和 API 一样,SDK 由服务厂商提供了,开发者只需要接入相关 SDK,然后做好相关功能接口的联调即可,至于底层逻辑、数据存储等等都不需要去考虑。

API 与 SDK 的区别

那么从结果上看都是让开发者使用三方服务功能的 API 和 SDK 到底有什么区别?为什么说 SDK 就离不开 API?

其实在更多场合下,API 更像是 SDK 的一个子集,这是因为:

  • API 通常是一个接口方法,有特定的功能;而 SDK 是一个很多功能的集合体,更像是一个工具包;

  • API 通常为单个数据接口的形象,SDK 则相当于一个工具环境,通常除了包含了服务的所有 API 功能;

  • SDK 相较于 API 封装层次更高。

为什么 SDK 经常翻车

目前因为各家服务商的提供功能越来越多,同时用户对于 App 的功能需求也逐渐增大,如果每一个功能都是自己开发,那时间和成本都无限延长。因此公司会更偏向选择第三方 SDK 工具包来实现这些功能。这就导致可能很多公司都在用同一个 SDK,一旦这个 SDK 出现了隐私泄露,那牵扯到的也不再仅是一家公司的 App。

那么,如何避开这样的隐私侵害呢?

对于开发商而言,要尽可能选择有一定市场基础的第三方 SDK,比如尽量使用苹果和谷歌商店里选用的 SDK 进行集成。

从个人层面来讲,在下载 App 时,最好选择恶意密度较低的应用商店,比如苹果的 App Store、安卓手机的官方应用商店,不要随意在网站上下载来历不明、未经审核的软件。同时面对安装 App 时弹出的各种权限申请,在给出自己的位置信息、手机通讯录等隐私权限之前一定要认真确认。

最后,国家也一直在政策层面上对此进行监管。要求网络运营者对接入其平台的第三方应用,应明确数据安全要求和责任,督促监督第三方应用运营者加强数据安全管理。

目前国内手机厂商也越来越重视用户隐私,推出“照明弹”等隐私保护功能。一旦这些 App 后台行为的调用逐渐清晰和明朗化,系统也愿意给出更多限制性手段后,守住自己的私密数据,大概就不会成为一个难题了。

接入 SDK 结果翻车了?了解 SDK 的那些事的更多相关文章

  1. 【Win10 UWP】QQ SDK(二):SDK的回调处理

    上一讲,我们介绍了QQ SDK的使用方法,请看<[Win10 UWP]QQ SDK(一):SDK基本使用方法> 一. 回调的基本形式 从前面的介绍中我们知道,我们的应用和QQ客户端之间需要 ...

  2. 【Win10 UWP】QQ SDK(一):SDK基本使用方法

    每当开发一个应用需要社交分享的应用时,总是心里咯噔一下:到底什么时候分享能加上QQ和微信?除了WP8.0版本的微信SDK,官方似乎从未正面发布过适应时代发展的QQ SDK,就连后台,也没有一个可以创建 ...

  3. iOS开发——iOS10升级极光推送SDK、友盟分享SDK

    前不久升级了Xcode8 ,同时iOS10系统也推送久. 由于公司需要适配iOS 10系统,同时第三方sdk建议升级. 包含替换升级新的SDK和相应的代码修改. 主要分享如何升级极光推送SDK,友盟分 ...

  4. [2015-06-10 20:53:50 - Android SDK] Error when loading the SDK:

    1.错误描述 [2015-06-10 20:53:50 - Android SDK] Error when loading the SDK: Error: Error parsing D:\Andro ...

  5. 关于js SDK的程序,java SDK的程序

    一:JS SDK 1.修改配置workspace 2.导入 3.Demo.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Trans ...

  6. 【微博SDK调用逻辑】微博SDK的调用逻辑,最好自己还是写一个例子,试一下!!!

    逻辑是这样的,谢谢给我讲东西的开发哥哥,嘻嘻~~~  1.点击微博登录,SDK会打开微博客户端,然后点击登陆(如果已经登录了会出现一个当前app跟微博交互的图片界面,然后提示“正在获取授权信息”,如果 ...

  7. iOS——Command-Line 查看当前SDK版本并修改默认SDK版本

    在工作中可能会碰到用命令行编译.打包iOS应用程序的情况(xcodebuild相关命令). 但是由于SDK版本问题,会报错,说某SDK版本不对,可能是因为升级Xcode导致的SDK版本升级,为了避免高 ...

  8. 安装Android SDK时,点击SDK Manager.exe闪退,并且jdk的环境变量是对的。

    前提:我的jdk的环境变量是正确的,同时我的jdk还是1.7应该不是版本太低的原因,同时这个压缩文件是好的,我在其他的电脑上可以运行SDK Manager.exe. 点击SDK Manager.exe ...

  9. Android基础之在Eclipes中关联SDK源码和查看SDK源码

    在进行Android应用开发的时候,我们有时候需要查看某个类或接口的源码从而了解如何去使用一个类或者实现一个接口,查看源码有助于我们的学习某个封装的类的底层是如何实现的,这样可以帮助我们掌握类或者接口 ...

随机推荐

  1. OpenCV读写图像文件解析

    OpenCV读写图像文件解析 imdecode 从内存中的缓冲区读取图像. C++:Mat imdecode(InputArray buf, int flags) C++:Mat imdecode(I ...

  2. CUDA刷新:GPU计算生态系统

    CUDA刷新:GPU计算生态系统 CUDA Refresher: The GPU Computing Ecosystem 这是CUDA Refresher系列的第三篇文章,其目标是刷新CUDA中的关键 ...

  3. TensorRT宏碁自建云(BYOC, BuildYourOwnCloud)上集成

    TensorRT宏碁自建云(BYOC, BuildYourOwnCloud)上集成 这个PR增加了对分区.编译和运行TensorRT BYOC目标的支持. Building 有两个新的cmake标志: ...

  4. 剑指 Offer 05. 替换空格

    链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/ 标签:字符串 题目 请实现一个函数,把字符串 s 中的每个空格替换成"%2 ...

  5. 一篇文章带你搞懂 etcd 3.5 的核心特性

    作者 唐聪,腾讯云资深工程师,极客时间专栏<etcd实战课>作者,etcd活跃贡献者,主要负责腾讯云大规模k8s/etcd平台.有状态服务容器化.在离线混部等产品研发设计工作. etcd ...

  6. 【NX二次开发】Block UI 整形

    属性说明 常规         类型 描述     BlockID     String 控件ID     Enable     Logical 是否可操作     Group     Logical ...

  7. Java学习——强调一下编程风格

    讲完了Java的基础语法,大家就可以编写简单的程序代码了,这里有必要强调一下编程风格. 代码风格虽然不影响程序的运行,但对程序的可读性却非常重要.自己编写的程序要让别人看懂,首先在排版方面要非常注意. ...

  8. Go语言深度比较值是否相等

    Go语言深度比较值是否相等 需求描述: 我们在开发过程中经常会遇到一些需要比较值是否相等的场景,例如比较两个数组.结构体.Map.等,自己写这些代码比较繁琐,大部分时候这里都可以使用到反射reflec ...

  9. POJ 1556 计算几何 判断线段相交 最短路

    题意: 在一个左下角坐标为(0,0),右上角坐标为(10,10)的矩形内,起点为(0,5),终点为(10,5),中间会有许多扇垂直于x轴的门,求从起点到终点在能走的情况下的最短距离. 分析: 既然是求 ...

  10. Vue Element-ui表单校验规则,你掌握了哪些?

    1.前言   Element-ui表单校验规则,使得错误提示可以直接在form-item下面显示,无需弹出框,因此还是很好用的.   我在做了登录页面的表单校验后,一度以为我已经很了解表单的校验规则. ...