在开发过程中,您通常会遇到技术选择的问题:我应该使用哪些第三方 SDK 来实现我想要的功能?我们在开发APP的时候,肯定要选择一些成熟的SDK,不会在上的Demo中找到代码来使用,这样可能会造成很多bug。现在有这样一款工具,可以让你查看主流APP使用的SDK,相信大型厂商使用的SDK都经过了严格的验证,比较放心。
前段时间,我们准备做一些事情来分析同行应用对第三方SDK的使用情况,我们开始考虑下载一些同行业的主流应用,然后反编译,然后逐一检查哪些SDK被使用。想想手动下载、反编译 APK 和逐个检查 SDK 使用情况的麻烦。如果我喜欢“懒惰”,我想知道我是否可以制作一个自动化工具来自动完成这些任务,或者大部分工作都是通过编程自动化完成的?如果用的是自动化程序,不需要局限于几个对等APP的,可以自动收集应用市场,或者APP,只要编写了自动化工具,以后收集多少APP都无关紧要,工作量也不会增加太多,于是就开始按照这个想法折腾了。
1. 准备工作
由于我熟悉 JAVA 作为后端技术,所以我用 JAVA 编写了这个程序。在编写工具之前,您需要准备以下工具:
二、设计思路
下面只介绍这个工具的设计思路,没有具体的代码,思路清楚之后写代码就很简单了。
1. 数据库设计
我们需要设计数据库表来收集数据,这很简单,我设计了 6 个表:
2. 获取APP安装包
各大应用市场都有 TOP xx 应用列表,这些 APP 一般都是用户使用较多的 APP,而这些 APP 使用的第三方 SDK 一般都是比较成熟的 SDK,值得我们参考。
我选择从小米应用市场下载热门应用作为数据分析样本,选择了超过1000个应用排名靠前的APK,我只选择分析应用应用,过滤掉游戏类别。
这
应用排行榜界面的url格式是这样的:,用来获取这些页面页面的源码,然后用解析后的网页的源码得到每个APP的详细网址地址,APP详情地址的格式是这样的:包名,然后在APP详情页解析出APK的下载地址,下载APK。除了APK的下载地址,还可以通过这个界面获取APP的其他基本信息,必要时可以保存到数据库中,我的存储在表中。
3. 反编译APK
下载APK后要做的工作是反编译APK,这里我们将使用抓取的APK。这一步其实很简单,你知道JAVA可以直接运行脚本命令,也可以反编译APK:
Runtime.getRuntime().exec("java -jar apktool.jar d -f " + apkPath + " -o " + outPath)
这里可能会有人问,反编译一个文件有什么用?反编译后,有两部分内容对我们有用:前缀目录和.xml。可以通过.xml获取apk的基本信息,必要时可以使用XML解析工具进行解析,我使用SAX进行.xml计算并获取每个APP的进程数,广播接收机数量和权限等信息。被认为是前缀的目录是我们主要使用的数据。如你所知,每个SDK的包名基本都是唯一的,重复的很少,java文件的包名和目录名都有对应的关系,这个APK的所有包名都可以通过获取文件所在的路径来知道。这样,就可以收集APK的所有包名,并将它们存储在数据库中以备后用。这里需要注意的是,在收集包名的时候可以做一个初步的筛选,直接过滤一些无用的或APK的包名,提高采集效率,避免收集一些垃圾数据。将此信息存储在表中。
4. 连接 SDK
这一步实在是太辛苦了,是不想吐的工作,也是这个SDK的采集过程中唯一需要手动完成的事情。在上一步中,我们已经收集了所有APP使用的包名,这一步我们需要检查这些包名,如果是非第三方SDK就删除,如果是SDK就记下SDK名称和备注,以便于后续搜索。
5. 前端接口
这
后台已经设置好了,你可以根据需要稍微改进一下,比如我们记录了每个应用的下载地址,可以定期更新。现在我们这里要做的就是开发一个前端接口,用于可视化操作查询,这部分就没什么好说的了,直接在渲染上写接口和调整接口就行了:
搜索界面
详:
6. 其他
以上哪里写错了还是要匆忙,欢迎您的意见,谢谢!
SDK查询地址:
数据下载地址:数据源
到此这篇sdk测试工具(app sdk测试)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/te-aq/37082.html