利用Bazel编译MediaPipe framework
2024-04-10 01:50:18  阅读数 1436

编译环境

macOS Monterey 12.6
本地MediaPipe工程目录
(本配置过程建立在MediaPipe所依赖环境完全配置完成的情况下,如果不会配置可以参照之前的文章教程)
如果没有,可以从github上面clone一份到本地。

$ git clone https://github.com/google/mediapipe.git

打包framework的工具为Bazel

  • cd到 mediapipe/目录下,执行以下命令
bazel build -c opt –config=ios_arm64 mediapipe/example/ios/handtrackinggpu:HandTrackingGpuApp

该命令会自动读取路径下BUILD文件相关配置


BUILD文件内容.png

其中ios_application是生产iPhone ipa文件的固定写法

  • name代表名称
  • bundle_id代表项目的标识符,该标识符必须与xcode生存的.mobileprovision文件标识符保持一致,否则不管是打包ipa还是framework都会报错。
  • families代表支持设备类型
  • infoplists代表plist文件所在位置
    更多具体参数含义,请参考bazel相关apple编译规范

命令执行完成后我们会获得如下结果

ipa文件路径.png

根据dock里提示的路径 ,我们找到对应的ipa文件,即可安装到手机里进行演示操作了。

编译framework和ipa文件同理,bazel会自动读取BUILD文件内容,根据配置生成对应的文件,所以我们需要做的就是修改BUILD文件内容即可。

BUILD文件内容.png
  • 依照apple的bazel编译规则,我们指定编译方式为ios_framework,设置好静态库相关依赖,以及需要暴露的.h文件,并设置好需要依赖的Library。


    objc_library.png

    其中name,需要遵循ios_framework里的deps命名规范。

  • 设置好相关配置之后,我们先测试一下framework打包命令,如果没有报错,我们会在生成ipa文件对应的目录下找到生产的.zip文件


    image.png
  • 解压缩后,就可以获得framework文件以及对应的头文件


    image.png

    至此,静态库打包完成!