自动识别采集内容(分析同行APP使用第三方SDK的情况情况的解决办法?)

优采云 发布时间: 2022-02-28 14:26

  自动识别采集内容(分析同行APP使用第三方SDK的情况情况的解决办法?)

  在开发过程中,人们一般会遇到技术选型问题:应该使用哪些第三方SDK来实现自己想要的功能?我们在开发我们的APP时肯定希望选择一些成熟的SDK来使用。我们不会在网上的一个demo中使用任何代码,这可能会导致很多bug。现在有这样一个工具可以让你查看主流APP使用的SDK。相信各大厂商使用的SDK都是经过严格验证的,比较安全。

  前段时间,我们准备分析一下同行APP对第三方SDK的使用情况。我们开始考虑下载同行的几个主流APP,反编译,然后一一查看使用了哪些SDK。想想手动一一下载、反编译APK、查看SDK使用情况的麻烦。我喜欢“偷懒”,不知道是不是可以做一个自动化的工具来自动完成这些任务,或者大部分工作可以由程序自动完成?如果你使用自动化程序,你不需要被限制在几个同行 APP 中。您可以自动采集申请到市场上的TOP100、TOP500或TOP1000 APP。只要写好自动化工具,后续需要多少个APP采集都不是问题,工作量不会增加多少,

  一、准备

  由于我熟悉的后端技术是JAVA,所以我用JAVA写了这个程序。在编写工具之前,需要准备以下工具:

  二、设计理念

  下面只介绍这个工具的设计思路,没有具体的代码,思路清楚了再写代码就很简单了。

  1. 数据库设计

  我们需要为我们的 采集 数据设计数据库表。这很简单。我设计了6张桌子:

  2. 获取APP安装包

  各大应用市场均有TOP xx应用榜单。这些APP一般都是用户使用的。这些APP使用的第三方SDK一般都是比较成熟的SDK,值得我们参考。

  我选择从小米应用市场下载热门APP作为数据分析样本,选取了1000多个应用排名靠前的APK。我只选择分析应用APP,过滤掉游戏。

  

  应用排名界面的url格式是这样的:使用HttpClient获取这些页面的源码,然后使用HTMLparser解析网页的源码,获取各个APP的详细url地址。APP详情地址的格式是这样的:包名,然后在APP详情页面解析APK的下载地址,下载APK。除了APK的下载地址,APP的其他基本信息也可以通过该接口获取。如有必要,可以将其保存到数据库中。我的存储在 tools_app_info 表中。

  3. 反编译APK

  下载APK后,要做的工作就是反编译APK。在这里,我们将使用抓取的 APKTool。这一步其实很简单。大家都知道脚本命令可以直接在JAVA中运行。您可以使用以下命令反编译 APK:

  Runtime.getRuntime().exec("java -jar apktool.jar d -f " + apkPath + " -o " + outPath)

  这里可能有人会问,反编译的smali文件有什么用呢?反编译后,目录中有两部分对我们有用,前缀为smali和AndroidManifest.xml。apk的基本信息可以通过AndroidManifest.xml获取。如有必要,您可以使用 XML 解析工具对其进行解析。这里我使用SAX计算AndroidManifest.xml,获取每个APP的进程数、广播接收者数量、权限等信息。以 smali 为前缀的目录是我们主要使用的数据。我们都知道每个SDK的包名基本都是唯一的,很少重复,而java文件的包名和目录名是有对应关系的。通过获取smali文件所在的路径,可以知道这个APK的所有包名。这样,APK的所有包名都被采集并存储在数据库中进行备份。这里大家要注意的是,可以在采集包名的时候做个初步筛选,直接过滤掉一些无用或者APK包名,这样可以提高采集的效率,避免采集一些垃圾数据。将此信息存储在 tools_app_packages 表中。

  4.相关SDK

  这一步真的很辛苦,是一个不想吐的工作,也是这个SDK采集流程中唯一需要手动完成的事情。在上一步中,我们采集了所有APP使用的包名。在这一步中,我们需要检查这些包名。如果是非第三方SDK,请删除。如果是SDK,请记下SDK名称和备注,方便后续查找。

  5.前端界面

  背景已经搭建好了,大家可以根据自己的需要稍微改进一下。比如我们记录了每个app的下载地址,可以定期更新。现在我们这里要做的就是开发一个可视化操作和查询的前端界面。这部分没什么好说的,直接写界面调整界面,直接上渲染:

  搜索界面

  

  详情界面:

  

  6. 其他

  以上有什么不对或者需要赶的地方,欢迎大家评论,谢谢!

  SDK查询地址:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线