内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

微信使用了哪些第三方库

2018-06-08 19:43 出处:清屏网 人气: 评论(0

如今,APP 越来越多,公司之间面临着同一个问题,竞品越来越多,公司之间为获取更多流量不得不在APP的体验上做足功课。那么,研究竞品变得越来越重要,比如研究竞品某个核心功能使用了哪些第三方服务、架构是什么样的、某个接口是如何设计的、数据库是如何设计的、沙盒目录结构是什么样的等。最近研究第三方 APP 比较多,希望可以总结一套研究第三方 APP 的流程,目前正在研究微信,如果有机会分享给读者朋友们。

研究某个竞品APP时,需要了解其使用的第三方库,使用 class-dump 导出的头文件非常多,仅靠肉眼查看时,耗时耗力。为了解决这个痛点,便发明了这个工具。下面是获取微信 使用的第三方库,可以查看 pod 库的 star 数,源地址。

原理

在介绍原理前,需要了解 class-dump,它可以根据某个被砸坑的应用,导出APP中所有的头文件,包含 第三方库的头文件 ,那么可以利用导出的第三库头文件反查第三方库。iOS 的同学都清楚,目前主流的第三方库都使用 Pod 管理,所有的第三方开源库都被放到 CocoaPods/Specs 中。而这些源文件都可以通过 Github 提供的 API 获取到它的源文件。对比 class-dump 导出的头文件和通过 Github 提供的 API 获取到它的源文件即可确定它使用的第三方库。

以 AFNetworking 为例:

使用 class-dump 导出的头文件(部分):

AFHTTPRequestSerializer.h
AFHTTPResponseSerializer.h
AFHTTPSessionManager.h

使用 Github 提供的 API (部分) 获取源文件

[{
    "name": "AFURLResponseSerialization.h",
    "path": "AFNetworking/AFURLResponseSerialization.h"
  },
  {
    "name": "AFURLResponseSerialization.m",
    "path": "AFNetworking/AFURLResponseSerialization.m"
  },
  {
    "name": "AFURLSessionManager.h",
    "path": "AFNetworking/AFURLSessionManager.h"
  }]

对比 class-dump 导出的头文件 和 使用 Github 提供的 API 获取的头文件,可以推出使用的第三方库为 AFNetworking

但是这样有个问题,遍历 class-dump 导出的头文件,需要每个头文件都需要请求Github提供的API,这样速度非常慢,是无法忍受的。为解决这个问题,需要提前把 CocoaPods 中第三方库的源文件名缓存到数据库中,这样就不需要每次从网络中获取pod库的源文件。

CREATE TABLE podlib (
    name        TEXT PRIMARY KEY
                     NOT NULL,
    source      TEXT,
    summary     TEXT,
    star        INT,
    file1       TEXT,
    file2       TEXT,
    file3       TEXT,
    source_file TEXT
);

使用

本工具基于 python 写的,在 这里 可以找到源码。下载源码后修改 main.py 文件的 IPA_HEADER_PATH 为 class-dump 导出的头文件目录。执行 python main.py

IPA_HEADER_PATH = '/Users/lefex/Desktop/header/xxx'

分享给小伙伴们:
本文标签: 微信第三方库

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号