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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章