腾讯 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

 MarsAFNetworkingOkHttp
跨平台yesnono
实现语言C++Objective-CJava
具体实现基于 socket基于 HTTP基于 HTTP
支持完整的 HTTPnoyesyes
支持长连yesnono
DNS 扩展yesnoyes
结合移动 App做设计yesnono

总的来说

  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文件了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恋恋西风

up up up

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值