腾讯 mars 微信跨平台跨业务基础组件(一) xlog 编译

Mars -- 微信跨平台跨业务基础组件

Mars:https://github.com/Tencent/mars

Mars 是什么

Mars 是微信官方的终端基础组件, 是一个业务性无关,平台性无关 使用C++ 编写的基础组件。目前已接入微信 Android、iOS、Mac、Windows、WP、UWP 等客户端。注意:目前仅支持Android、iOS、Mac、Windows 平台,其他平台会在后续的版本中很快支持

它主要包括以下几个部分:

  1. Comm:基础库,包括socket、线程、消息队列、协程等基础工具;
  2. Xlog:通用日志模块,充分考虑移动终端的特点,提供高性能、高可用、安全性、容错性的日志功能
  3. SDT:网络诊断模块;
  4. STN:信令传输网络模块,负责终端与服务器的小数据信令通道。包含了微信终端在移动网络上的大量优化经验与成果,经历了微信海量用户的考验。

 

为什么使用 Mars

  Mars AFNetworking OkHttp
跨平台 yes no no
实现语言 C++ Objective-C Java
具体实现 基于 socket 基于 HTTP 基于 HTTP
支持完整的 HTTP no yes yes
支持长连 yes no no
DNS 扩展 yes no yes
结合移动 App做设计 yes no no

总的来说

  1. Mars 中包括一个完整的高性能的日志组件 xlog;
  2. Mars 中 STN 是一个跨平台的 socket 层解决方案,并不支持完整的 HTTP 协议;
  3. Mars 中 STN 模块是更加贴合“移动互联网”、“移动平台”特性的网络解决方案,尤其针对弱网络、平台特性等有很多的相关优化策略。

Mars 是一个结合移动 App 所设计的基于 socket 层的解决方案,在网络调优方面有更好的可控性,不过对于 HTTP 完整协议的支持,已经考虑后续版本会加入。Mars在微信用的应用场景主要是:普通CGI请求类似收发消息收发语音,业务CGI支付请求等。

如果你想一次学习,多个平台使用,Mars 是一个比较好的选择,如果你面对的用户是移动网络下的用户,Mars 更是一个比较好的选择。但如果你只是想使用完整的 HTTP 协议,Mars暂时可能不适合你。如果你的应用中存在大量发送大数据的场景,Mars也不是一个好的选择,不建议使用。

 

如何使用 Mars

在使用之前请务必先仔细阅读以下文档:

Mars Android 接入指南
Mars iOS/OS X 接入指南
Mars Windows 接入指南
Mars 常用术语
Mars 常见问题
Mars 自定义扩展
Mars sample 使用说明

 

xlog 编译

所以本文记录下windows下编译Mars需要的配置,环境是windows10 64位。

一、安装Python2.7

注意是 2.7,不要安全3.0及以上版本,否则可能编译不过;

Python2.7

二、安装NDK

这里记得配置环境变量  NDK_ROOT

三、安装CMake

去CMake官网下载CMake,并安装。这里选择的版本是3.15.7。
安装成功后,验证安装是否成功

四、修改配置,编译出不同 平台

我们可以修改mars 下 build_android.py

if __name__ == '__main__':

    while True:
        if len(sys.argv) >= 3:
            archs = sys.argv[2:]
            main(False, archs, tag=sys.argv[1])
            break
        else:
            archs = set(['armeabi-v7a','arm64-v8a'])  # 这里可以增加各种,原来只有armeabi
            num = raw_input('Enter menu:\n1. Clean && build mars.\n2. Build incrementally mars.\n3. Clean && build xlog.\n4. Exit\n')
            if num == '1':
                main(False, archs)
                break
            elif num == '2':
                main(True, archs)
                break
            elif num == '3':
                main(False, archs, '--target marsxlog')
                break
            elif num == '4':
                break
            else:
                main(False, archs)
                break

 编译

所有的编译脚本都在mars/mars 目录, 运行编译脚本之前也必须cd到此目录,在当前目录下运行,默认是编译 armeabi 的,如果需要其他 CPU 架构,把编译脚本中的archs = set(['armeabi'])稍作修改即可。

python build_android.py

执行命令后,会让选择:

Enter menu:
1. Clean && build mars.
2. Build incrementally mars.
3. Clean && build xlog.
4. Exit

如果是编译Mars,选择1或2,如果仅编译XLog,选择3。

 在mars\libraries\mars_xlog_sdk\libs\armeabi-v7a路径下,就可以看到,我们编译后的so文件了。

 

你可能感兴趣的:(C/C++)