google-ai-edge / mediapipe

Cross-platform, customizable ML solutions for live and streaming media.
https://ai.google.dev/edge/mediapipe
Apache License 2.0
27.5k stars 5.15k forks source link

iOS: Can't merge user_target_xcconfig for pod targets: ["MediaPipeTasksCommon", "MediaPipeTasksGenAIC"]. #5302

Closed DarrylBayliss closed 1 day ago

DarrylBayliss commented 7 months ago

OS Platform and Distribution

iOS 17.2

Compiler version

No response

Programming Language and version

Swift 5

Installed using virtualenv? pip? Conda?(if python)

No response

MediaPipe version

0.10.12

Bazel version

No response

XCode and Tulsi versions (if iOS)

Xcode 15.2

Android SDK and NDK versions (if android)

No response

Android AAR (if android)

None

OpenCV version (if running on desktop)

No response

Describe the problem

Create podfile, run pod install, run build in xcode against simulator

Complete Logs

When I try to build my podfile containing MediaPipeTasksGenAI, MediaPipeTasksGenAIC & MediaPipeTasksVision I recieve the following warning:

[!] Can't merge user_target_xcconfig for pod targets: ["MediaPipeTasksCommon", "MediaPipeTasksGenAIC"]. Singular build setting OTHER_LDFLAGS[sdk=iphonesimulator*] has different values.

[!] Can't merge user_target_xcconfig for pod targets: ["MediaPipeTasksCommon", "MediaPipeTasksGenAIC"]. Singular build setting OTHER_LDFLAGS[sdk=iphoneos*] has different values.

[!] Can't merge user_target_xcconfig for pod targets: ["MediaPipeTasksCommon", "MediaPipeTasksGenAIC"]. Singular build setting OTHER_LDFLAGS[sdk=iphonesimulator*] has different values.

[!] Can't merge user_target_xcconfig for pod targets: ["MediaPipeTasksCommon", "MediaPipeTasksGenAIC"]. Singular build setting OTHER_LDFLAGS[sdk=iphoneos*] has different values.

When I then proceed to build or run the project using the simulator I recieve the following build error.

ld: Undefined symbols:
  mediapipe::RenderAnnotation* google::protobuf::Arena::CreateMaybeMessage<mediapipe::RenderAnnotation>(google::protobuf::Arena*), referenced from:
      -[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision[arm64][54](MPPRegionOfInterest+Helpers.o)
      -[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision[arm64][54](MPPRegionOfInterest+Helpers.o)
  mediapipe::RenderAnnotation_Point* google::protobuf::Arena::CreateMaybeMessage<mediapipe::RenderAnnotation_Point>(google::protobuf::Arena*), referenced from:
      -[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision[arm64][54](MPPRegionOfInterest+Helpers.o)
      -[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision[arm64][54](MPPRegionOfInterest+Helpers.o)
  mediapipe::RenderAnnotation_Scribble* google::protobuf::Arena::CreateMaybeMessage<mediapipe::RenderAnnotation_Scribble>(google::protobuf::Arena*), referenced from:
      -[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision[arm64][54](MPPRegionOfInterest+Helpers.o)
  mediapipe::Color* google::protobuf::Arena::CreateMaybeMessage<mediapipe::Color>(google::protobuf::Arena*), referenced from:
      -[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision[arm64][54](MPPRegionOfInterest+Helpers.o)
      -[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision[arm64][54](MPPRegionOfInterest+Helpers.o)
  mediapipe::tasks::components::processors::proto::EmbedderOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::components::processors::proto::EmbedderOptions>(google::protobuf::Arena*), referenced from:
      -[MPPImageEmbedderOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][30](MPPImageEmbedderOptions+Helpers.o)
  mediapipe::tasks::components::processors::proto::ClassifierOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::components::processors::proto::ClassifierOptions>(google::protobuf::Arena*), referenced from:
      -[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][13](MPPGestureRecognizerOptions+Helpers.o)
      -[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][13](MPPGestureRecognizerOptions+Helpers.o)
      -[MPPImageClassifierOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][25](MPPImageClassifierOptions+Helpers.o)
  mediapipe::tasks::vision::face_detector::proto::FaceDetectorGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::face_detector::proto::FaceDetectorGraphOptions>(google::protobuf::Arena*), referenced from:
      -[MPPFaceLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][8](MPPFaceLandmarkerOptions+Helpers.o)
  mediapipe::tasks::vision::hand_detector::proto::HandDetectorGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::hand_detector::proto::HandDetectorGraphOptions>(google::protobuf::Arena*), referenced from:
      -[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][13](MPPGestureRecognizerOptions+Helpers.o)
      -[MPPHandLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][20](MPPHandLandmarkerOptions+Helpers.o)
  mediapipe::tasks::vision::pose_detector::proto::PoseDetectorGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::pose_detector::proto::PoseDetectorGraphOptions>(google::protobuf::Arena*), referenced from:
      -[MPPPoseLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][59](MPPPoseLandmarkerOptions+Helpers.o)
  mediapipe::tasks::vision::face_landmarker::proto::FaceLandmarksDetectorGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::face_landmarker::proto::FaceLandmarksDetectorGraphOptions>(google::protobuf::Arena*), referenced from:
      -[MPPFaceLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][8](MPPFaceLandmarkerOptions+Helpers.o)
  mediapipe::tasks::vision::hand_landmarker::proto::HandLandmarkerGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::hand_landmarker::proto::HandLandmarkerGraphOptions>(google::protobuf::Arena*), referenced from:
      -[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][13](MPPGestureRecognizerOptions+Helpers.o)
  mediapipe::tasks::vision::hand_landmarker::proto::HandLandmarksDetectorGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::hand_landmarker::proto::HandLandmarksDetectorGraphOptions>(google::protobuf::Arena*), referenced from:
      -[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][13](MPPGestureRecognizerOptions+Helpers.o)
      -[MPPHandLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][20](MPPHandLandmarkerOptions+Helpers.o)
  mediapipe::tasks::vision::pose_landmarker::proto::PoseLandmarksDetectorGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::pose_landmarker::proto::PoseLandmarksDetectorGraphOptions>(google::protobuf::Arena*), referenced from:
      -[MPPPoseLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][59](MPPPoseLandmarkerOptions+Helpers.o)
  mediapipe::tasks::vision::gesture_recognizer::proto::GestureClassifierGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::gesture_recognizer::proto::GestureClassifierGraphOptions>(google::protobuf::Arena*), referenced from:
      -[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][13](MPPGestureRecognizerOptions+Helpers.o)
      -[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][13](MPPGestureRecognizerOptions+Helpers.o)
  mediapipe::tasks::vision::gesture_recognizer::proto::HandGestureRecognizerGraphOptions* google::protobuf::Arena::CreateMaybeMessage<mediapipe::tasks::vision::gesture_recognizer::proto::HandGestureRecognizerGraphOptions>(google::protobuf::Arena*), referenced from:
      -[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][13](MPPGestureRecognizerOptions+Helpers.o)
  mediapipe::RenderData::InternalSwap(mediapipe::RenderData*), referenced from:
      mediapipe::RenderData::RenderData(mediapipe::RenderData&&) in MediaPipeTasksVision[arm64][53](MPPVisionPacketCreator.o)
  mediapipe::RenderData::CopyFrom(mediapipe::RenderData const&), referenced from:
      mediapipe::RenderData::RenderData(mediapipe::RenderData&&) in MediaPipeTasksVision[arm64][53](MPPVisionPacketCreator.o)
  mediapipe::RenderData::RenderData(google::protobuf::Arena*, bool), referenced from:
      mediapipe::packet_internal::InternalMessageRegistrator<mediapipe::RenderData>::Make() in MediaPipeTasksVision[arm64][53](MPPVisionPacketCreator.o)
      mediapipe::RenderData::RenderData(mediapipe::RenderData&&) in MediaPipeTasksVision[arm64][53](MPPVisionPacketCreator.o)
      std::__1::unique_ptr<mediapipe::packet_internal::HolderBase, std::__1::default_delete<mediapipe::packet_internal::HolderBase>> mediapipe::packet_internal::CreateMessageHolder<mediapipe::RenderData>() in MediaPipeTasksVision[arm64][53](MPPVisionPacketCreator.o)
      -[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision[arm64][54](MPPRegionOfInterest+Helpers.o)
  mediapipe::RenderData::~RenderData(), referenced from:
      +[MPPVisionPacketCreator createRenderDataPacketWithRegionOfInterest:error:] in MediaPipeTasksVision[arm64][53](MPPVisionPacketCreator.o)
      +[MPPVisionPacketCreator createRenderDataPacketWithRegionOfInterest:error:] in MediaPipeTasksVision[arm64][53](MPPVisionPacketCreator.o)
      mediapipe::packet_internal::InternalMessageRegistrator<mediapipe::RenderData>::Make() in MediaPipeTasksVision[arm64][53](MPPVisionPacketCreator.o)
      mediapipe::packet_internal::InternalMessageRegistrator<mediapipe::RenderData>::Make() in MediaPipeTasksVision[arm64][53](MPPVisionPacketCreator.o)
      mediapipe::packet_internal::Holder<mediapipe::RenderData>::~Holder() in MediaPipeTasksVision[arm64][53](MPPVisionPacketCreator.o)
      -[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision[arm64][54](MPPRegionOfInterest+Helpers.o)
      -[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision[arm64][54](MPPRegionOfInterest+Helpers.o)
      ...
  mediapipe::NormalizedRect::InternalSwap(mediapipe::NormalizedRect*), referenced from:
      mediapipe::NormalizedRect::NormalizedRect(mediapipe::NormalizedRect&&) in MediaPipeTasksVision[arm64][52](MPPVisionTaskRunner.o)
  mediapipe::NormalizedRect::CopyFrom(mediapipe::NormalizedRect const&), referenced from:
      mediapipe::NormalizedRect::NormalizedRect(mediapipe::NormalizedRect&&) in MediaPipeTasksVision[arm64][52](MPPVisionTaskRunner.o)
  mediapipe::NormalizedRect::NormalizedRect(google::protobuf::Arena*, bool), referenced from:
      -[MPPVisionTaskRunner normalizedRectWithRegionOfInterest:imageSize:imageOrientation:error:] in MediaPipeTasksVision[arm64][52](MPPVisionTaskRunner.o)
      mediapipe::NormalizedRect::NormalizedRect(mediapipe::NormalizedRect&&) in MediaPipeTasksVision[arm64][52](MPPVisionTaskRunner.o)
      mediapipe::packet_internal::InternalMessageRegistrator<mediapipe::NormalizedRect>::Make() in MediaPipeTasksVision[arm64][53](MPPVisionPacketCreator.o)
      std::__1::unique_ptr<mediapipe::packet_internal::HolderBase, std::__1::default_delete<mediapipe::packet_internal::HolderBase>> mediapipe::packet_internal::CreateMessageHolder<mediapipe::NormalizedRect>() in MediaPipeTasksVision[arm64][53](MPPVisionPacketCreator.o)
  mediapipe::NormalizedRect::~NormalizedRect(), referenced from:
      -[MPPVisionTaskRunner normalizedRectWithRegionOfInterest:imageSize:imageOrientation:error:] in MediaPipeTasksVision[arm64][52](MPPVisionTaskRunner.o)
      -[MPPVisionTaskRunner normalizedRectWithRegionOfInterest:imageSize:imageOrientation:error:] in MediaPipeTasksVision[arm64][52](MPPVisionTaskRunner.o)
      -[MPPVisionTaskRunner inputPacketMapWithMPPImage:regionOfInterest:error:] in MediaPipeTasksVision[arm64][52](MPPVisionTaskRunner.o)
      -[MPPVisionTaskRunner inputPacketMapWithMPPImage:regionOfInterest:error:] in MediaPipeTasksVision[arm64][52](MPPVisionTaskRunner.o)
      -[MPPVisionTaskRunner inputPacketMapWithMPPImage:regionOfInterest:timestampInMilliseconds:error:] in MediaPipeTasksVision[arm64][52](MPPVisionTaskRunner.o)
      -[MPPVisionTaskRunner inputPacketMapWithMPPImage:regionOfInterest:timestampInMilliseconds:error:] in MediaPipeTasksVision[arm64][52](MPPVisionTaskRunner.o)
      mediapipe::packet_internal::InternalMessageRegistrator<mediapipe::NormalizedRect>::Make() in MediaPipeTasksVision[arm64][53](MPPVisionPacketCreator.o)
      mediapipe::packet_internal::InternalMessageRegistrator<mediapipe::NormalizedRect>::Make() in MediaPipeTasksVision[arm64][53](MPPVisionPacketCreator.o)
      ...
  mediapipe::RenderAnnotation::clear_data(), referenced from:
      -[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision[arm64][54](MPPRegionOfInterest+Helpers.o)
      -[MPPRegionOfInterest(Helpers) getRenderDataWithError:] in MediaPipeTasksVision[arm64][54](MPPRegionOfInterest+Helpers.o)
  mediapipe::_MatrixData_default_instance_, referenced from:
      +[MPPFaceLandmarkerResult(Helpers) faceLandmarkerResultWithLandmarksPacket:blendshapesPacket:transformationMatrixesPacket:] in MediaPipeTasksVision[arm64][10](MPPFaceLandmarkerResult+Helpers.o)
  mediapipe::_LocationData_default_instance_, referenced from:
      +[MPPDetection(Helpers) detectionWithProto:] in MediaPipeTasksVision[arm64][48](MPPDetection+Helpers.o)
  mediapipe::tasks::components::processors::proto::EmbedderOptions::Clear(), referenced from:
      -[MPPImageEmbedderOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][30](MPPImageEmbedderOptions+Helpers.o)
  mediapipe::tasks::components::processors::proto::ClassifierOptions::Clear(), referenced from:
      -[MPPClassifierOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][14](MPPClassifierOptions+Helpers.o)
      -[MPPImageClassifierOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][25](MPPImageClassifierOptions+Helpers.o)
  mediapipe::tasks::TensorsToSegmentationCalculatorOptions::ext, referenced from:
      +[MPPImageSegmenter populateLabelsWithGraphConfig:error:] in MediaPipeTasksVision[arm64][34](MPPImageSegmenter.o)
      +[MPPInteractiveSegmenter populateLabelsWithGraphConfig:error:] in MediaPipeTasksVision[arm64][39](MPPInteractiveSegmenter.o)
  mediapipe::tasks::TensorsToSegmentationCalculatorOptions::TensorsToSegmentationCalculatorOptions(mediapipe::tasks::TensorsToSegmentationCalculatorOptions const&), referenced from:
      +[MPPImageSegmenter populateLabelsWithGraphConfig:error:] in MediaPipeTasksVision[arm64][34](MPPImageSegmenter.o)
      +[MPPInteractiveSegmenter populateLabelsWithGraphConfig:error:] in MediaPipeTasksVision[arm64][39](MPPInteractiveSegmenter.o)
  mediapipe::tasks::TensorsToSegmentationCalculatorOptions::~TensorsToSegmentationCalculatorOptions(), referenced from:
      +[MPPImageSegmenter populateLabelsWithGraphConfig:error:] in MediaPipeTasksVision[arm64][34](MPPImageSegmenter.o)
      +[MPPImageSegmenter populateLabelsWithGraphConfig:error:] in MediaPipeTasksVision[arm64][34](MPPImageSegmenter.o)
      +[MPPImageSegmenter populateLabelsWithGraphConfig:error:] in MediaPipeTasksVision[arm64][34](MPPImageSegmenter.o)
      +[MPPInteractiveSegmenter populateLabelsWithGraphConfig:error:] in MediaPipeTasksVision[arm64][39](MPPInteractiveSegmenter.o)
      +[MPPInteractiveSegmenter populateLabelsWithGraphConfig:error:] in MediaPipeTasksVision[arm64][39](MPPInteractiveSegmenter.o)
      +[MPPInteractiveSegmenter populateLabelsWithGraphConfig:error:] in MediaPipeTasksVision[arm64][39](MPPInteractiveSegmenter.o)
  mediapipe::tasks::vision::face_detector::proto::FaceDetectorGraphOptions::ext, referenced from:
      -[MPPFaceDetectorOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][3](MPPFaceDetectorOptions+Helpers.o)
  mediapipe::tasks::vision::face_detector::proto::FaceDetectorGraphOptions::Clear(), referenced from:
      -[MPPFaceDetectorOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][3](MPPFaceDetectorOptions+Helpers.o)
  mediapipe::tasks::vision::face_detector::proto::_FaceDetectorGraphOptions_default_instance_, referenced from:
      -[MPPFaceDetectorOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][3](MPPFaceDetectorOptions+Helpers.o)
  mediapipe::tasks::vision::hand_detector::proto::HandDetectorGraphOptions::Clear(), referenced from:
      -[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][13](MPPGestureRecognizerOptions+Helpers.o)
  mediapipe::tasks::vision::image_embedder::proto::ImageEmbedderGraphOptions::ext, referenced from:
      -[MPPImageEmbedderOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][30](MPPImageEmbedderOptions+Helpers.o)
  mediapipe::tasks::vision::image_embedder::proto::_ImageEmbedderGraphOptions_default_instance_, referenced from:
      -[MPPImageEmbedderOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][30](MPPImageEmbedderOptions+Helpers.o)
  mediapipe::tasks::vision::face_landmarker::proto::FaceLandmarkerGraphOptions::ext, referenced from:
      -[MPPFaceLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][8](MPPFaceLandmarkerOptions+Helpers.o)
  mediapipe::tasks::vision::face_landmarker::proto::FaceLandmarkerGraphOptions::Clear(), referenced from:
      -[MPPFaceLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][8](MPPFaceLandmarkerOptions+Helpers.o)
  mediapipe::tasks::vision::face_landmarker::proto::_FaceLandmarkerGraphOptions_default_instance_, referenced from:
      -[MPPFaceLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][8](MPPFaceLandmarkerOptions+Helpers.o)
  mediapipe::tasks::vision::hand_landmarker::proto::HandLandmarkerGraphOptions::ext, referenced from:
      -[MPPHandLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][20](MPPHandLandmarkerOptions+Helpers.o)
  mediapipe::tasks::vision::hand_landmarker::proto::HandLandmarkerGraphOptions::Clear(), referenced from:
      -[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][13](MPPGestureRecognizerOptions+Helpers.o)
      -[MPPHandLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][20](MPPHandLandmarkerOptions+Helpers.o)
  mediapipe::tasks::vision::hand_landmarker::proto::HandLandmarksDetectorGraphOptions::Clear(), referenced from:
      -[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][13](MPPGestureRecognizerOptions+Helpers.o)
  mediapipe::tasks::vision::hand_landmarker::proto::_HandLandmarkerGraphOptions_default_instance_, referenced from:
      -[MPPHandLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][20](MPPHandLandmarkerOptions+Helpers.o)
  mediapipe::tasks::vision::image_segmenter::proto::ImageSegmenterGraphOptions::ext, referenced from:
      -[MPPImageSegmenterOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][35](MPPImageSegmenterOptions+Helpers.o)
      -[MPPInteractiveSegmenterOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][40](MPPInteractiveSegmenterOptions+Helpers.o)
  mediapipe::tasks::vision::image_segmenter::proto::ImageSegmenterGraphOptions::Clear(), referenced from:
      -[MPPImageSegmenterOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][35](MPPImageSegmenterOptions+Helpers.o)
      -[MPPInteractiveSegmenterOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][40](MPPInteractiveSegmenterOptions+Helpers.o)
  mediapipe::tasks::vision::image_segmenter::proto::_ImageSegmenterGraphOptions_default_instance_, referenced from:
      -[MPPImageSegmenterOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][35](MPPImageSegmenterOptions+Helpers.o)
      -[MPPInteractiveSegmenterOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][40](MPPInteractiveSegmenterOptions+Helpers.o)
  mediapipe::tasks::vision::object_detector::proto::ObjectDetectorOptions::ext, referenced from:
      -[MPPObjectDetectorOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][45](MPPObjectDetectorOptions+Helpers.o)
  mediapipe::tasks::vision::object_detector::proto::ObjectDetectorOptions::Clear(), referenced from:
      -[MPPObjectDetectorOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][45](MPPObjectDetectorOptions+Helpers.o)
  mediapipe::tasks::vision::object_detector::proto::_ObjectDetectorOptions_default_instance_, referenced from:
      -[MPPObjectDetectorOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][45](MPPObjectDetectorOptions+Helpers.o)
  mediapipe::tasks::vision::pose_landmarker::proto::PoseLandmarkerGraphOptions::ext, referenced from:
      -[MPPPoseLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][59](MPPPoseLandmarkerOptions+Helpers.o)
  mediapipe::tasks::vision::pose_landmarker::proto::PoseLandmarkerGraphOptions::Clear(), referenced from:
      -[MPPPoseLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][59](MPPPoseLandmarkerOptions+Helpers.o)
  mediapipe::tasks::vision::pose_landmarker::proto::_PoseLandmarkerGraphOptions_default_instance_, referenced from:
      -[MPPPoseLandmarkerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][59](MPPPoseLandmarkerOptions+Helpers.o)
  mediapipe::tasks::vision::image_classifier::proto::ImageClassifierGraphOptions::ext, referenced from:
      -[MPPImageClassifierOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][25](MPPImageClassifierOptions+Helpers.o)
  mediapipe::tasks::vision::image_classifier::proto::_ImageClassifierGraphOptions_default_instance_, referenced from:
      -[MPPImageClassifierOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][25](MPPImageClassifierOptions+Helpers.o)
  mediapipe::tasks::vision::gesture_recognizer::proto::GestureClassifierGraphOptions::Clear(), referenced from:
      -[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][13](MPPGestureRecognizerOptions+Helpers.o)
      -[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][13](MPPGestureRecognizerOptions+Helpers.o)
  mediapipe::tasks::vision::gesture_recognizer::proto::GestureRecognizerGraphOptions::ext, referenced from:
      -[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][13](MPPGestureRecognizerOptions+Helpers.o)
  mediapipe::tasks::vision::gesture_recognizer::proto::GestureRecognizerGraphOptions::Clear(), referenced from:
      -[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][13](MPPGestureRecognizerOptions+Helpers.o)
  mediapipe::tasks::vision::gesture_recognizer::proto::_GestureRecognizerGraphOptions_default_instance_, referenced from:
      -[MPPGestureRecognizerOptions(Helpers) copyToProto:] in MediaPipeTasksVision[arm64][13](MPPGestureRecognizerOptions+Helpers.o)
  typeinfo for mediapipe::RenderData, referenced from:
      std::type_info const& mediapipe::TypeId::GetTypeInfo<mediapipe::RenderData>() in MediaPipeTasksVision[arm64][53](MPPVisionPacketCreator.o)
  typeinfo for mediapipe::NormalizedRect, referenced from:
      std::type_info const& mediapipe::TypeId::GetTypeInfo<mediapipe::NormalizedRect>() in MediaPipeTasksVision[arm64][53](MPPVisionPacketCreator.o)
clang: error: linker command failed with exit code 1 (use -v to see invocation)

My Podfile looks like the following:

platform :ios, '17.2'
use_frameworks!

target 'Simon-Says' do
  pod 'MediaPipeTasksGenAI'
  pod 'MediaPipeTasksGenAIC'
  pod 'MediaPipeTasksVision'
  pod 'Factory'
end

I assume there's a conflict somewhere between the Common framework and the AIC framework. I'm completely clueless about this though.

kuaashish commented 7 months ago

Hi @DarrylBayliss,

Could you please provide additional details about the issue, including the complete steps you are following from our documentation? This information will greatly assist us in better understanding the issue and potentially reproducing it if necessary.

Thank you!!

DarrylBayliss commented 7 months ago

Hi @kuaashish,

I followed the setup instructions from these pages:

  1. Setup MediaPipe LLM Support https://developers.google.com/mediapipe/solutions/genai/llm_inference/ios#setup

  2. Setup MediaPipe Vision Tasks: https://developers.google.com/mediapipe/solutions/vision/image_classifier/ios#setup

Some additional things I checked:

  1. The simulator I'm using is arm64 architecture

  2. Cocoapods version is 1.15.2

I can provide a sample project if neccessary.

kuaashish commented 7 months ago

Hi @priankakariatyml,

Could you please have look into this issue?

Thank you!!

kuaashish commented 6 months ago

Hi @DarrylBayliss,

We acknowledge that utilizing any two or more of our features within an app across both Android and iOS platforms is currently not feasible. This issue may become a priority for us in the near future, as you are encountering errors in this scenario.

Thank you!!

DarrylBayliss commented 6 months ago

Hey @kuaashish,

Thanks for the update. This might be the case for iOS, I'm not sure it is correct in the case of Android. I have an Android app where I am doing something similar and using the genai / vision task dependencies together in the same project.

I have an example incase it is helpful with this issue: https://github.com/DarrylBayliss/Simon-Says-Android

kuaashish commented 6 months ago

Hi @DarrylBayliss,

following internal discussions, we have identified a conflict between LLM inference and the Vision Task, as the latter relies on OpenCV, which GenAI does not relies. This has resulted in an issue when attempting to integrate both solutions into an application. Rest assured, we have brought this matter to the attention of our team and will keep you informed as soon as any updates are available. For now, we are categorizing this as a feature request and sharing it with our team.

Thank you!!

2BAB commented 1 month ago

Encoutered the same issue after added LLM and Vision Tasks in the pod file (with the latest LLM 0.10.15 and Vision 0.10.14. It has been 5 months since the opening date of this issue, any progress?

  pod 'MediaPipeTasksGenAI'
  pod 'MediaPipeTasksGenAIC'
  pod 'MediaPipeTasksVision'
yuhuichen1015 commented 1 day ago

We have an internal tracking bug for the issue b/378116539 but no concrete update at the moment. Will keep people posted if there is any updates.