Setting up MediaPipe for iOS

  1. Install Xcode and the Command Line Tools.

    Follow Apple’s instructions to obtain the required development certificates and provisioning profiles for your iOS device. Install the Command Line Tools by

    xcode-select --install
  2. Install Bazel 1.1.0.

    We recommend using Homebrew:

    $ brew install
  3. Set Python 3.7 as the default Python version and install the Python “six” library.

    To make Mediapipe work with TensorFlow, please set Python 3.7 as the default Python version and install the Python “six” library.

    pip3 install --user six
  4. Clone the MediaPipe repository.

    git clone
  5. Symlink or copy your provisioning profile to mediapipe/mediapipe/provisioning_profile.mobileprovision.

    cd mediapipe
    ln -s ~/Downloads/MyProvisioningProfile.mobileprovision mediapipe/provisioning_profile.mobileprovision

Tip: You can use this command to see the provisioning profiles you have previously downloaded using Xcode: open ~/Library/MobileDevice/"Provisioning Profiles". If there are none, generate and download a profile on Apple’s developer site.

Creating an Xcode project

Note: This workflow requires a separate tool in addition to Bazel. If it fails to work for any reason, you can always use the command-line build instructions in the next section.

  1. We will use a tool called Tulsi for generating Xcode projects from Bazel build configurations.

    IMPORTANT: At the time of this writing, Tulsi has a small issue that keeps it from building with Xcode 10.3. The instructions below apply a fix from a pull request.

    # cd out of the mediapipe directory, then:
    git clone
    cd tulsi
    # Apply the fix for Xcode 10.3 compatibility:
    git fetch origin pull/99/head:xcodefix
    git checkout xcodefix
    # Now we can build Tulsi.

    This will install inside the Applications directory inside your home directory.

  2. Open mediapipe/Mediapipe.tulsiproj using the Tulsi app.

    Important: If Tulsi displays an error saying “Bazel could not be found”, press the “Bazel…” button in the Packages tab and select the bazel executable in your homebrew /bin/ directory.

  3. Select the MediaPipe config in the Configs tab, then press the Generate button below. You will be asked for a location to save the Xcode project. Once the project is generated, it will be opened in Xcode.

  4. You can now select any of the MediaPipe demos in the target menu, and build and run them as normal.

Note: When you ask Xcode to run an app, by default it will use the Debug configuration. Some of our demos are computationally heavy; you may want to use the Release configuration for better performance.

Tip: To switch build configuration in Xcode, click on the target menu, choose “Edit Scheme…”, select the Run action, and switch the Build Configuration from Debug to Release. Note that this is set independently for each target.

Building an iOS app from the command line

  1. Modify the bundle_id field of the app’s ios_application rule to use your own identifier, e.g. for Face Detection GPU App example, you need to modify the line 26 of the BUILD file.

  2. Build one of the example apps for iOS. We will be using the Face Detection GPU App example

    cd mediapipe
    bazel build --config=ios_arm64 mediapipe/examples/ios/facedetectiongpu:FaceDetectionGpuApp

    You may see a permission request from codesign in order to sign the app.

  3. In Xcode, open the Devices and Simulators window (command-shift-2).

  4. Make sure your device is connected. You will see a list of installed apps. Press the “+” button under the list, and select the .ipa file built by Bazel.

  5. You can now run the app on your device.