目 录CONTENT

文章目录

修改mars-xlog 源码并编译成so文件(全程记录)

小王同学
2024-10-13 / 0 评论 / 0 点赞 / 170 阅读 / 0 字

修改mars-xlog 源码并编译成so文件(全程记录)

本地环境:Mac+AndroidStudio+python3

本地编译文档:

https://github.com/Tencent/mars/wiki/Mars-Android-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97#%E6%9C%AC%E5%9C%B0%E7%BC%96%E8%AF%91

由于近期项目使用了mars的xlog进行记录本地日志,之前没有对native层有太多的了解,所以想借此机会研究下这个库,并且对这个库进行自定义修改,编译。本文章只记录了如何对xlog进行编译的过程,并没有对如何修改xlog源码进行记录,之后抽时间我会再写一篇文章分析mars的xlog库。

image-oelk.png

文档上写的是python2.7,但是小王使用python3版本的编译写没有问题,下面是具体操作:

开始编译

小王是直接在AndroidStudio的终端进行操作的,首先是进入mars项目的当前文件中,直接使用python显示出错:zsh:command not found:python

image-kybr.png

zsh: command not found: python2

因为我的电脑安装的是python3,所以下面直接使用python3来执行编译命令

image-vdpm.png

Error: ndk does not exist or you do not set it into NDK_ROOT.

又报错了,说我没有配置NDK_ROOT

具体配置NDK_ROOT的步骤如下:

首先需要你在AndroidStudio下载NDK,我下载的是NDK20的版本,因为文档推荐的是ndk-r20

  1. 确认NDK的安装路径: 首先,你需要知道你的NDK安装在哪个路径下。如果你通过Android Studio的SDK Manager安装,它通常位于 ~/Library/Android/sdk/ndk/目录下,具体版本号会有所不同。

  2. 打开终端: 打开你的终端应用程序,这可以在 应用程序 > 实用工具中找到。

  3. 编辑shell配置文件: 如果你使用的是bash shell,你需要编辑 ~/.bash_profile文件;如果你使用的是zsh shell(macOS Catalina及以后的版本默认使用zsh),则需要编辑 ~/.zshrc文件。你可以使用文本编辑器打开这些文件,例如使用 nanovim

    nano ~/.zshrc  # 或者使用 vim ~/.zshrc
    
  4. 添加NDK环境变量: 在打开的配置文件中,添加以下两行,确保替换为你的实际NDK路径:

    export NDK_ROOT=/path/to/your/ndk
    export PATH=$PATH:$NDK_ROOT
    

    例如,如果你的NDK安装在 /Users/yourusername/Library/Android/sdk/ndk/20.0.5594570,那么你应该这样设置:

    export NDK_ROOT=/Users/yourusername/Library/Android/sdk/ndk/20.0.5594570
    export PATH=$PATH:$NDK_ROOT
    
  5. 保存并关闭文件: 如果你使用的是 nano,可以按 Ctrl + X,然后按 Y,最后按 Enter保存并退出。如果你使用的是 vim,可以按 Esc,输入 :wq,然后按 Enter保存并退出。

  6. 使更改生效: 为了让更改立即生效,你需要运行以下命令:

    source ~/.zshrc 
    
    
  7. 验证配置: 在终端中输入 ndk-build,如果没有报错,并且能够看到NDK的版本信息,那么就说明配置成功了。

image-pvqf.png

xiaowang@MacBook-Pro-9 mars % nano ~/.zshrc

xiaowang@MacBook-Pro-9 mars % source ~/.zshrc

刷新完成后,我继续执行下面的命令

python3 build_android.py

image-szph.png

sh: cmake: command not found

又又又报错了,不过这次换了个错误,说我的电脑上没有cmake,不知道cmake是干啥的,可以看我的这篇文章:Android NDK开发入门详解

image-hrgj.png

安装完cmake之后,我们继续执行下面的这个命令

python3 build_android.py

image-azgb.png

image-xfug.png

image-hecb.png

终于终于我们看到编译成功了!,在libs文件夹下面生成了两个文件,libmarsxlog.so,也就是说我们已经成功的得到了我们想要的文件。

如何集成so文件到项目

那我现在想用这个so文件怎么办呢?

在Android项目中,如果你需要将本地(native)库(如 .so文件)包含到你的应用中,你应该将这些文件放在项目的 src/main/jniLibs目录下。这个目录是专门用来存放不同架构的本地库文件的。

以下是具体的步骤和说明:

  1. 创建目录结构
    • 在你的项目的 main目录下,创建一个名为 jniLibs的目录。这个目录应该和 javaresassets等目录在同一个级别。
  2. 放置 .so文件
    • jniLibs目录下,根据不同的CPU架构创建子目录。常见的架构包括 armeabi-v7aarm64-v8ax86x86_64。例如,对于ARM v7设备,你应该在 jniLibs/armeabi-v7a目录下放置你的 .so文件。
    • 如果你的应用支持多个架构,你需要为每个架构创建一个对应的子目录,并在每个子目录中放置相应架构的 .so文件。
  3. 配置 build.gradle文件
    • 在你的模块级别的 build.gradle文件中,确保已经包含了对本地库的支持。你可能需要添加如下配置:
    • android {
          ...
          defaultConfig {
              ...
              externalNativeBuild {
                  cmake {
                      // 如果你使用CMake来构建你的本地库
                  }
              }
          }
      
          externalNativeBuild {
              cmake {
                  // 这里可以配置CMake的参数
              }
          }
      }
      
    • 如果你使用ndk-build来构建你的本地库,确保 NDK配置正确,并且 build.gradle中指定了正确的路径和参数。
  4. 构建项目
    • 使用Android Studio的构建系统来构建你的项目。构建过程会自动将 jniLibs目录下的 .so文件复制到相应的输出目录中,这样应用在运行时就可以加载这些本地库了。

image-wayf.png

其实在mars的库中已经将这两个so文件进行了加载,我们使用的话,直接将Xlog和Log文件拷贝到我们的项目中,并且配置好cmake,就可以使用啦。下面是这两个文件的连接地址。

https://github.com/Tencent/mars/tree/master/mars/libraries/mars_xlog_sdk/src/main/java/com/tencent/mars/xlog

觉得有用的同学,帮忙点个赞吧~~

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区