iOS의 MediaPipe 프레임워크

MediaPipe 프레임워크를 사용하여 iOS 예시 앱을 빌드하려면 아래 안내를 따르세요. 이러한 예시 앱에 대해 자세히 알아보려면 iOS의 Hello World!부터 시작합니다.

iOS 예시 앱 빌드

선행 조건

  1. 안내에 따라 Mediapipe 프레임워크를 설치합니다.

  2. Xcode를 설치한 다음 다음을 사용하여 명령줄 도구를 설치합니다.

    xcode-select --install
    
  3. Bazelisk를 설치합니다.

    Homebrew를 사용하여 최신 버전을 설치하는 것이 좋습니다.

    brew install bazelisk
    
  4. Python 'six' 라이브러리를 설치합니다. TensorFlow에 필요합니다.

    pip3 install --user six
    
  5. MediaPipe 저장소를 클론합니다.

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

번들 ID 접두사 설정

모든 iOS 앱에는 번들 ID가 있어야 하며 이 ID가 있는 앱을 휴대전화에 설치할 수 있는 프로비저닝 프로필이 있어야 합니다. 여러 MediaPipe 사용자 간에 충돌이 발생하지 않도록 하려면 iOS 데모 앱의 번들 ID에 고유한 접두사를 구성해야 합니다.

맞춤 프로비저닝 프로필이 있는 경우 아래의 맞춤 프로비저닝을 참고하세요.

그렇지 않은 경우 다음 명령어를 실행하여 고유한 접두사를 생성합니다.

python3 mediapipe/examples/ios/link_local_profiles.py

Xcode 프로젝트 만들기

이렇게 하면 Xcode에서 예시 앱 중 하나를 수정하고 디버그할 수 있습니다. 또한 자동 프로비저닝을 활용할 수 있습니다 (나중에 설명하는 섹션 참고).

  1. Bazel 빌드 구성에서 Xcode 프로젝트를 생성하는 데 Tulsi라는 도구를 사용합니다.

    # cd out of the mediapipe directory, then:
    git clone https://github.com/bazelbuild/tulsi.git
    cd tulsi
    # remove Xcode version from Tulsi's .bazelrc (see http://github.com/bazelbuild/tulsi#building-and-installing):
    sed -i .orig '/xcode_version/d' .bazelrc
    # build and run Tulsi:
    sh build_and_run.sh
    

    이렇게 하면 홈 디렉터리의 Applications 디렉터리 내에 Tulsi.app가 설치됩니다.

  2. Tulsi 앱을 사용하여 mediapipe/Mediapipe.tulsiproj를 엽니다.

  3. Configs 탭에서 MediaPipe 구성을 선택한 다음 아래의 Generate 버튼을 누릅니다. Xcode 프로젝트를 저장할 위치를 묻는 메시지가 표시됩니다. 프로젝트가 생성되면 Xcode에서 열립니다.

    번들 ID에 관한 오류가 발생하면 이전 섹션을 참고하세요.

프로비저닝 설정

iOS 기기에 애플리케이션을 설치하려면 프로비저닝 프로필이 필요합니다. 다음과 같은 두 가지 옵션이 있습니다.

  1. 자동 프로비저닝 이렇게 하면 개인 기기에 앱을 빌드하고 설치할 수 있습니다. 프로비저닝 프로필은 Xcode에서 관리하며 자주 업데이트해야 합니다 (약 1주일 동안 유효).

  2. 맞춤 프로비저닝 이 경우 Apple 개발자 계정과 연결된 프로비저닝 프로필이 사용됩니다. 이러한 프로필은 유효 기간이 더 길고 여러 기기를 타겟팅할 수 있지만 Apple의 유료 개발자 계정이 있어야 가져올 수 있습니다.

자동 프로비저닝

  1. 앞서 설명한 대로 MediaPipe용 Xcode 프로젝트를 만듭니다.

  2. 왼쪽 사이드바의 프로젝트 탐색기에서 'Mediapipe' 프로젝트를 선택합니다.

  3. 애플리케이션 타겟 중 하나(예: HandTrackingGpuApp)를 선택합니다.

  4. '서명 및 기능' 탭을 선택합니다.

  5. '자동으로 서명 관리'를 선택하고 대화상자를 확인합니다.

  6. 팀 대화상자 메뉴에서 '내 이름 (개인 팀)'을 선택합니다.

  7. 이 설정은 설치하려는 애플리케이션마다 한 번씩 실행해야 합니다. 필요한 경우 3~6단계를 반복합니다.

이렇게 하면 선택한 각 앱의 프로비저닝 프로필이 생성됩니다. 이제 Bazel에 이를 사용하도록 지시해야 합니다. 이를 쉽게 수행할 수 있도록 스크립트를 제공했습니다.

  1. 터미널에서 저장소를 클론한 mediapipe 디렉터리로 이동합니다.

  2. 다음 명령어를 실행합니다.

    python3 mediapipe/examples/ios/link_local_profiles.py
    

이렇게 하면 Xcode에서 자동 프로비저닝을 사용 설정한 모든 애플리케이션의 프로비저닝 프로필이 찾아서 연결됩니다.

맞춤 프로비저닝

  1. Apple에서 프로비저닝 프로필을 가져옵니다.
  1. 프로비저닝 프로필을 mediapipe/mediapipe/provisioning_profile.mobileprovision에 심볼릭 링크로 연결하거나 복사합니다.

    cd mediapipe
    ln -s ~/Downloads/MyProvisioningProfile.mobileprovision mediapipe/provisioning_profile.mobileprovision
    
  1. mediapipe/examples/ios/bundle_id.bzl를 열고 BUNDLE_ID_PREFIX를 프로비저닝 프로필과 연결된 접두사로 변경합니다.

Xcode를 사용하여 앱 빌드 및 실행

  1. Xcode 프로젝트를 만들고 자동 또는 맞춤 프로비저닝을 설정했는지 확인합니다.

  2. 이제 타겟 메뉴에서 Mediapipe 프레임워크 데모를 선택하고 평소와 같이 빌드하고 실행할 수 있습니다.

명령줄을 사용하여 앱 빌드

  1. 자동 또는 맞춤 프로비저닝을 설정했는지 확인합니다.

  2. 예를 들어 MediaPipe Hands를 사용하여 다음을 실행합니다.

    bazel build -c opt --config=ios_arm64 mediapipe/examples/ios/handtrackinggpu:HandTrackingGpuApp
    

    앱에 서명하기 위해 codesign의 권한 요청이 표시될 수 있습니다.

  3. Xcode에서 Devices and Simulators 창을 엽니다 (command-shift-2).

  4. 기기가 연결되어 있는지 확인합니다. 설치된 앱 목록이 표시됩니다. 목록 아래의 '+' 버튼을 누르고 Bazel로 빌드된 .ipa 파일을 선택합니다.

  5. 이제 기기에서 앱을 실행할 수 있습니다.