I'm writing a Flutter plugin that shows native ios screens that use kotlin multi platform so I added it as a dependency including it in the podspec file as a vendor_framework s.vendored_frameworks = 'kotlin-mpp/kotlin-mpp/build/cocoapods/framework/kotlin_mpp.framework'.
When running Xcode fails with error:
ld: warning: ignoring file '/Users/vincenzo.calia/Documents/Projects/my_yap_native_screens_plugin/ios/kotlin-mpp/kotlin-mpp/build/cocoapods/framework/kotlin_mpp.framework/kotlin_mpp[2](result.o)': found architecture 'x86_64', required architecture 'arm64'
ld: warning: Could not find or use auto-linked framework 'CoreAudioTypes': framework 'CoreAudioTypes' not found
ld: Undefined symbols:
_OBJC_CLASS_$_Kotlin_mppActivityModel, referenced from:
in DocumentRowModelWrapper.o
_OBJC_CLASS_$_Kotlin_mppApiEnumsActivityStateEnum, referenced from:
in MMBWorkOrderRowActionsViewController.o
_OBJC_CLASS_$_Kotlin_mppApiEnumsDepotCausalEnum, referenced from:
in DepotSectionController.o
_OBJC_CLASS_$_Kotlin_mppApiEnumsFuelQuantityEnum, referenced from:
in EditWorkOrderSectionController.o
_OBJC_CLASS_$_Kotlin_mppApiEnumsTagContextEnum, referenced from:
in MMBAppointmentListViewController.o
_OBJC_CLASS_$_Kotlin_mppApiEnumsTechnicalSpecModelTypeEnum, referenced from:
in MMBFolderTechDataViewController.o
_OBJC_CLASS_$_Kotlin_mppApiEnumsTireAxleEnum, referenced from:
in MMBTireBaseViewController.o
_OBJC_CLASS_$_Kotlin_mppApiEnumsTirePositionEnum, referenced from:
in MMBTireBaseViewController.o
_OBJC_CLASS_$_Kotlin_mppApiEnumsTireTypeEnum, referenced from:
in TireAxleModelWrapper.o
_OBJC_CLASS_$_Kotlin_mppApiEnumsTireWheelRimEnum, referenced from:
in TireSectionController.o
_OBJC_CLASS_$_Kotlin_mppApiModelManager, referenced from:
in MMBFolderTechDataViewController.o
_OBJC_CLASS_$_Kotlin_mppApiService, referenced from:
in AppDelegate.o
_OBJC_CLASS_$_Kotlin_mppAppSettings, referenced from:
in AppDelegate.o
_OBJC_CLASS_$_Kotlin_mppAppleSettings, referenced from:
in AppDelegate.o
_OBJC_CLASS_$_Kotlin_mppAppointmentInvoicing, referenced from:
in MMBAppointmentListViewController.o
_OBJC_CLASS_$_Kotlin_mppAppointmentModel, referenced from:
in AppointmentModelWrapper.o
_OBJC_CLASS_$_Kotlin_mppAppointmentPresenter, referenced from:
in MMBAppointmentDetailViewController.o
_OBJC_CLASS_$_Kotlin_mppAppointmentPresenterAppointmentRequestViewState, referenced from:
in MMBAppointmentDetailViewController.o
_OBJC_CLASS_$_Kotlin_mppAppointmentToUpdateModel, referenced from:
in MMBAppointmentDetailViewController.o
_OBJC_CLASS_$_Kotlin_mppAppointmentsPresenter, referenced from:
in MMBAppointmentListViewController.o
_OBJC_CLASS_$_Kotlin_mppAppointmentsPresenterAppointmentsRequestViewState, referenced from:
in MMBAppointmentListViewController.o
_OBJC_CLASS_$_Kotlin_mppBasePresenter, referenced from:
in MMBBaseViewController.o
_OBJC_CLASS_$_Kotlin_mppBasePresenterBaseRequestViewState, referenced from:
in EditWorkOrderViewController.o
_OBJC_CLASS_$_Kotlin_mppBoolean, referenced from:
in AppointmentSectionController.o
_OBJC_CLASS_$_Kotlin_mppChangePasswordModel, referenced from:
in MMBChangePasswordViewController.o
_OBJC_CLASS_$_Kotlin_mppCheckInNoteCheckModel, referenced from:
in EditWorkOrderSectionController.o
_OBJC_CLASS_$_Kotlin_mppCheckInNoteCheckModelCheckResult, referenced from:
in EditWorkOrderSectionController.o
_OBJC_CLASS_$_Kotlin_mppCheckInNoteConfigsModel, referenced from:
in EditWorkOrderViewController.o
_OBJC_CLASS_$_Kotlin_mppCheckResultConfigModel, referenced from:
in EditWorkOrderSectionController.o
_OBJC_CLASS_$_Kotlin_mppCheckResultConfigModelResult, referenced from:
in EditWorkOrderSectionController.o
_OBJC_CLASS_$_Kotlin_mppCompanyModel, referenced from:
in CompanyModelWrapper.o
_OBJC_CLASS_$_Kotlin_mppContactMethodModel, referenced from:
in MMBFolderDataViewController.o
_OBJC_CLASS_$_Kotlin_mppContextCalendarConfigModel, referenced from:
in MMBPlanningAppointmentViewController.o
_OBJC_CLASS_$_Kotlin_mppCrashIntegrationKt, referenced from:
in AppDelegate.o
_OBJC_CLASS_$_Kotlin_mppCrashkiosCrashHandler, referenced from:
full type metadata for my_yap_native_screens_plugin.CrashlyticsCrashHandler in CrashHandler.o
_OBJC_CLASS_$_Kotlin_mppDbUtil, referenced from:
in AppDelegate.o
_OBJC_CLASS_$_Kotlin_mppDefaultBillDocumentModel, referenced from:
in MMBFolderDataViewController.o
_OBJC_CLASS_$_Kotlin_mppDeletedAppointmentModel, referenced from:
in MMBAppointmentDetailViewController.o
_OBJC_CLASS_$_Kotlin_mppDepotDocumentModel, referenced from:
in DepotDocumentModelWrapper.o
_OBJC_CLASS_$_Kotlin_mppDepotPresenter, referenced from:
in MMBDepotTireViewController.o
_OBJC_CLASS_$_Kotlin_mppDepotPresenterDepotRequestViewState, referenced from:
in MMBDepotTireViewController.o
_OBJC_CLASS_$_Kotlin_mppDocumentNumberSuffixesModel, referenced from:
in EditWorkOrderViewController.o
_OBJC_CLASS_$_Kotlin_mppDocumentNumberSuffixesPresenter, referenced from:
in EditWorkOrderViewController.o
_OBJC_CLASS_$_Kotlin_mppDocumentNumberSuffixesPresenterDocumentNumberSuffixesRequestViewState, referenced from:
in EditWorkOrderViewController.o
_OBJC_CLASS_$_Kotlin_mppDocumentRowModel, referenced from:
in DocumentRowModelWrapper.o
_OBJC_CLASS_$_Kotlin_mppDouble, referenced from:
in KmmUtil.o
_OBJC_CLASS_$_Kotlin_mppErrorManager, referenced from:
in MMBChangePasswordViewController.o
_OBJC_CLASS_$_Kotlin_mppErrorMessageErrorType, referenced from:
in ApiPresenterUtil.o
_OBJC_CLASS_$_Kotlin_mppFolderImagesToDeleteModel, referenced from:
in MMBPhotoBrowserViewController.o
_OBJC_CLASS_$_Kotlin_mppFolderModel, referenced from:
in MMBAppointmentDetailViewController.o
_OBJC_CLASS_$_Kotlin_mppFolderPresenter, referenced from:
in MMBAppointmentDetailViewController.o
_OBJC_CLASS_$_Kotlin_mppFolderPresenterFolderRequestViewState, referenced from:
in MMBAppointmentDetailViewController.o
_OBJC_CLASS_$_Kotlin_mppFormPdfMetadataModel, referenced from:
in MMBSignPdfPreviewController.o
_OBJC_CLASS_$_Kotlin_mppGarbageCollector, referenced from:
in AppDelegate.o
_OBJC_CLASS_$_Kotlin_mppImageModel, referenced from:
in CheckInNoteCheckModelWrapper.o
_OBJC_CLASS_$_Kotlin_mppImageToCreateModel, referenced from:
in EditWorkOrderViewController.o
_OBJC_CLASS_$_Kotlin_mppImagesPresenter, referenced from:
in EditWorkOrderViewController.o
_OBJC_CLASS_$_Kotlin_mppImagesPresenterImagesRequestViewState, referenced from:
in EditWorkOrderViewController.o
_OBJC_CLASS_$_Kotlin_mppInt, referenced from:
in ApiPresenterUtil.o
_OBJC_CLASS_$_Kotlin_mppJsonUtil, referenced from:
in ViewControllerGetter.o
_OBJC_CLASS_$_Kotlin_mppLibraryVersion, referenced from:
in AppDelegate.o
_OBJC_CLASS_$_Kotlin_mppLocationModel, referenced from:
in MMBDepotViewController.o
_OBJC_CLASS_$_Kotlin_mppLoginActionsModel, referenced from:
in MMBLoginTwoFactorViewController.o
_OBJC_CLASS_$_Kotlin_mppLoginActionsPresenter, referenced from:
in MMBChangePasswordViewController.o
_OBJC_CLASS_$_Kotlin_mppLoginActionsPresenterLoginActionsViewState, referenced from:
in MMBChangePasswordViewController.o
_OBJC_CLASS_$_Kotlin_mppLoginRequestModel, referenced from:
in MMBBaseLoginViewController.o
_OBJC_CLASS_$_Kotlin_mppLoginRequestPresenter, referenced from:
in MMBBaseLoginViewController.o
_OBJC_CLASS_$_Kotlin_mppLoginRequestPresenterLoginRequestViewState, referenced from:
in MMBBaseLoginViewController.o
_OBJC_CLASS_$_Kotlin_mppLoginTokenPresenter, referenced from:
in MMBBaseLoginViewController.o
_OBJC_CLASS_$_Kotlin_mppLoginTokenPresenterLoginTokenViewState, referenced from:
in MMBLoginViewController.o
_OBJC_CLASS_$_Kotlin_mppLoginTokenRequestModel, referenced from:
in MMBLoginViewController.o
_OBJC_CLASS_$_Kotlin_mppLong, referenced from:
in AppointmentModelWrapper.o
_OBJC_CLASS_$_Kotlin_mppMetadataModel, referenced from:
in MMBSignPdfPreviewController.o
_OBJC_CLASS_$_Kotlin_mppMobileDb, referenced from:
in AppDelegate.o
_OBJC_CLASS_$_Kotlin_mppMotModel, referenced from:
in MMBMotSectionViewController.o
_OBJC_CLASS_$_Kotlin_mppMotModelMotResult, referenced from:
in MotModelWrapper.o
_OBJC_CLASS_$_Kotlin_mppMotModelMotState, referenced from:
in MotModelWrapper.o
_OBJC_CLASS_$_Kotlin_mppMotsPresenter, referenced from:
in MMBFolderActionsViewController.o
_OBJC_CLASS_$_Kotlin_mppMotsPresenterMotsRequestViewState, referenced from:
in MMBFolderActionsViewController.o
_OBJC_CLASS_$_Kotlin_mppNewAppointmentModel, referenced from:
in MMBAppointmentListViewController.o
_OBJC_CLASS_$_Kotlin_mppNewFolderModel, referenced from:
in MMBBaseViewController.o
_OBJC_CLASS_$_Kotlin_mppNewFolderModelVehicleCategory, referenced from:
in MMBBaseViewController.o
_OBJC_CLASS_$_Kotlin_mppNewRemoteAppointmentModel, referenced from:
in MMBRemoteAppointmentSummaryViewController.o
_OBJC_CLASS_$_Kotlin_mppPaperlessDocumentModel, referenced from:
in MMBSignPdfPreviewController.o
_OBJC_CLASS_$_Kotlin_mppPaperlessDocumentState, referenced from:
in MMBSignPdfPreviewController.o
_OBJC_CLASS_$_Kotlin_mppPaperlessDocumentToCreateModel, referenced from:
in MMBSignSectionViewController.o
_OBJC_CLASS_$_Kotlin_mppPaperlessPresenter, referenced from:
in MMBSignPdfPreviewController.o
_OBJC_CLASS_$_Kotlin_mppPaperlessPresenterPaperlessRequestViewState, referenced from:
in MMBSignPdfPreviewController.o
_OBJC_CLASS_$_Kotlin_mppPaymentMethodModel, referenced from:
in MMBFolderDataViewController.o
_OBJC_CLASS_$_Kotlin_mppPlanningDayModel, referenced from:
in ApiPlanningManager.o
_OBJC_CLASS_$_Kotlin_mppPlanningPresenter, referenced from:
in MMBPadPlanningViewController.o
_OBJC_CLASS_$_Kotlin_mppPlanningPresenterPlanningRequestViewState, referenced from:
in ApiPlanningManager.o
_OBJC_CLASS_$_Kotlin_mppPlanningSlotModel, referenced from:
in MMBPadPlanningViewController.o
_OBJC_CLASS_$_Kotlin_mppPreMotCheckModel, referenced from:
in MMBMotSectionViewController.o
_OBJC_CLASS_$_Kotlin_mppPrepareAppointmentModel, referenced from:
in MMBPlanningViewController.o
_OBJC_CLASS_$_Kotlin_mppPrintTemplateModel, referenced from:
in MMBSignPdfPreviewController.o
_OBJC_CLASS_$_Kotlin_mppRecognitionImageRequestModelShape, referenced from:
in MMBBaseViewControllerNotificationEx.o
_OBJC_CLASS_$_Kotlin_mppRecognitionImageRequestModelVehicleCategory, referenced from:
in MMBBaseViewControllerNotificationEx.o
_OBJC_CLASS_$_Kotlin_mppRecordModel, referenced from:
in MMBSelectionRecordViewController.o
_OBJC_CLASS_$_Kotlin_mppRecordsPresenter, referenced from:
in MMBSelectionRecordViewController.o
_OBJC_CLASS_$_Kotlin_mppRecordsPresenterRecordsRequestViewState, referenced from:
in MMBSelectionRecordViewController.o
_OBJC_CLASS_$_Kotlin_mppRegexManager, referenced from:
in MMBFolderDataViewController.o
_OBJC_CLASS_$_Kotlin_mppRemoteCompanyAppointmentModel, referenced from:
in MMBRemoteAppointmentListViewController.o
_OBJC_CLASS_$_Kotlin_mppReportType, referenced from:
in MMBSignSectionViewController.o
_OBJC_CLASS_$_Kotlin_mppReturnTimeClocksModel, referenced from:
in MMBWorkOrderSectionViewController.o
_OBJC_CLASS_$_Kotlin_mppSampleKt, referenced from:
in AppDelegate.o
_OBJC_CLASS_$_Kotlin_mppSendAtLineModel, referenced from:
in MMBFolderActionsViewController.o
_OBJC_CLASS_$_Kotlin_mppSettingsManager, referenced from:
in MMBBaseViewControllerPhotoEx.o
_OBJC_CLASS_$_Kotlin_mppSoftwareTiers, referenced from:
in MMBBaseViewController.o
_OBJC_CLASS_$_Kotlin_mppStringNormalizer, referenced from:
in MMBBaseViewController.o
_OBJC_CLASS_$_Kotlin_mppSubscriberModel, referenced from:
in MMBSignPdfPreviewController.o
_OBJC_CLASS_$_Kotlin_mppTagModel, referenced from:
in AppointmentModelWrapper.o
_OBJC_CLASS_$_Kotlin_mppTagsPresenter, referenced from:
in MMBAppointmentListViewController.o
_OBJC_CLASS_$_Kotlin_mppTagsPresenterTagsRequestViewState, referenced from:
in MMBAppointmentListViewController.o
_OBJC_CLASS_$_Kotlin_mppTechnicalSpecModel, referenced from:
in FolderModelWrapper.o
_OBJC_CLASS_$_Kotlin_mppTimeClockPresenter, referenced from:
in MMBWorkOrderSectionViewController.o
_OBJC_CLASS_$_Kotlin_mppTimeClockPresenterTimeClockRequestViewState, referenced from:
in MMBWorkOrderSectionViewController.o
_OBJC_CLASS_$_Kotlin_mppTireModel, referenced from:
in DepotDocumentModelWrapper.o
_OBJC_CLASS_$_Kotlin_mppUpdatedWorkOrderField, referenced from:
in EditWorkOrderViewController.o
_OBJC_CLASS_$_Kotlin_mppUserModel, referenced from:
in UserModelWrapper.o
_OBJC_CLASS_$_Kotlin_mppUserModelPresenter, referenced from:
in MMBHomeViewController.o
_OBJC_CLASS_$_Kotlin_mppUserModelPresenterUserModelRequestViewState, referenced from:
in MMBHomeViewController.o
_OBJC_CLASS_$_Kotlin_mppWorkOrderModel, referenced from:
in EditWorkOrderViewController.o
_OBJC_CLASS_$_Kotlin_mppWorkOrderPresenter, referenced from:
in EditWorkOrderViewController.o
_OBJC_CLASS_$_Kotlin_mppWorkOrderPresenterWorkOrderRequestViewState, referenced from:
in EditWorkOrderViewController.o
_OBJC_CLASS_$_Kotlin_mppWorkOrdersPresenter, referenced from:
in MMBWorkOrderSectionViewController.o
_OBJC_CLASS_$_Kotlin_mppWorkOrdersPresenterWorkOrdersRequestViewState, referenced from:
in MMBWorkOrderSectionViewController.o
_OBJC_CLASS_$_Kotlin_mppYapContext, referenced from:
in MMBPadPlanningViewController.o
_OBJC_CLASS_$_Kotlin_mppYapOverYapPresenter, referenced from:
in MMBAppointmentListViewController.o
_OBJC_CLASS_$_Kotlin_mppYapOverYapPresenterYapOverYapRequestViewState, referenced from:
in MMBAppointmentListViewController.o
_OBJC_CLASS_$_Kotlin_mppYapPermissionManager, referenced from:
in AppointmentSectionController.o
_OBJC_CLASS_$_Kotlin_mppYapPlanningAppointmentManager, referenced from:
in PlanningAppintmentWhatView.o
_OBJC_METACLASS_$_Kotlin_mppCrashkiosCrashHandler, referenced from:
_OBJC_METACLASS_$__TtC28my_yap_native_screens_plugin23CrashlyticsCrashHandler in CrashHandler.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Adding the -lObjC flag to s.pod_target_xcconfig podspec settings as per docs https://guides.cocoapods.org/syntax/podspec.html#pod_target_xcconfig didn't solve it. Checking the Other Linker Flags in Xcode I see -ObjC flag present by default, but the -lObjC added from the podspec is not present in the list, dough I do see all the other flags from the podspec dependecies.
I was also getting flag errors for _sqlite3 and looking in SO and Github I saw various posts suggesting to manually add the -lsqlite3 flag to the list in Xcode which solved it, even after I removed it and tried to add it via podspec file I don't get those errors anymore..only the ObjC ones..
Any help with this issue would be great. Many thanks Cheers
this is the podfile:
#
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html.
# Run `pod lib lint my_native_screens_plugin.podspec` to validate before publishing.
#
Pod::Spec.new do |s|
s.name = 'my_native_screens_plugin'
s.version = '0.0.1'
s.summary = 'A new Flutter plugin project.'
s.description = <<-DESC
A new Flutter plugin project.
DESC
s.homepage = 'http://example.com'
s.license = { :file => '../LICENSE' }
s.author = { 'Your Company' => '[email protected]' }
s.source = { :path => '.' }
s.source_files = 'Classes/**/*'
#objc only
# s.public_header_files = 'Classes/**/*.h'
s.dependency 'Flutter'
s.dependency 'MaterialComponents/Snackbar', '122.0.1'
s.dependency 'MaterialComponents/TextFields', '122.0.1'
s.dependency 'MaterialComponents/TextFields+Theming', '122.0.1'
s.dependency 'MaterialComponents/Cards', '122.0.1'
s.dependency 'MaterialComponents/BottomNavigation', '122.0.1'
s.dependency 'MaterialComponents/Chips', '122.0.1'
s.dependency 'MaterialComponents/Chips+Theming', '122.0.1'
s.dependency 'MaterialComponents/Tabs+TabBarView', '122.0.1'
s.dependency 'MaterialComponents/Buttons', '122.0.1'
s.dependency 'MBProgressHUD', '1.2.0'
s.dependency 'Firebase/CoreOnly', '10.9.0'
s.dependency 'Firebase/Analytics', '10.9.0'
s.dependency 'Firebase/Auth', '10.9.0'
s.dependency 'Firebase/Crashlytics', '10.9.0'
s.dependency 'IQKeyboardManagerSwift', '6.5.10'
s.dependency 'IGListKit', '4.0.0'
s.dependency 'SwiftRichString', '3.7.2'
s.dependency 'JTAppleCalendar', '8.0.5'
s.dependency 'SDWebImage', '5.13.1'
s.dependency 'YPImagePicker', '5.2.2'
s.dependency 'PanModal', '1.2.7'
s.dependency 'lottie-ios', '3.4.0'
# s.dependency 'TouchDraw', '2.1.2'
s.ios.vendored_frameworks = 'kotlin-mpp/kotlin-mpp/build/cocoapods/framework/kotlin_mpp.framework'
s.platform = :ios, '15.0'
# s.static_framework = true
# Flutter.framework does not contain a i386 slice.
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' }
s.swift_version = '5.0'
s.pod_target_xcconfig = { 'OTHER_LDFLAGS' => '-lsqlite3' }
end