flutter 基於oc的flutter項目使用基於swift的plugin導致報錯問題


flutter項目創建的時候ios項目使用的oc工程,在使用一個第三方plugin時報錯各種關於swift的錯誤

Xcode's output:
↳
    ld: warning: Could not find or use auto-linked library 'swiftCoreGraphics'
    ld: warning: Could not find or use auto-linked library 'swiftDarwin'
    ld: warning: Could not find or use auto-linked library 'swiftUIKit'
    ld: warning: Could not find or use auto-linked library 'swiftFoundation'
    ld: warning: Could not find or use auto-linked library 'swiftCompatibility51'
    ld: warning: Could not find or use auto-linked library 'swiftMetal'
    ld: warning: Could not find or use auto-linked library 'swiftObjectiveC'
    ld: warning: Could not find or use auto-linked library 'swiftCoreFoundation'
    ld: warning: Could not find or use auto-linked library 'swiftCompatibility50'
    ld: warning: Could not find or use auto-linked library 'swiftCoreImage'
    ld: warning: Could not find or use auto-linked library
    'swiftCompatibilityDynamicReplacements'
    ld: warning: Could not find or use auto-linked library 'swiftDispatch'
    ld: warning: Could not find or use auto-linked library 'swiftCoreMedia'
    ld: warning: Could not find or use auto-linked library 'swiftQuartzCore'
    ld: warning: Could not find or use auto-linked library 'swiftCore'
    ld: warning: Could not find or use auto-linked library 'swiftCoreAudio'
    ld: warning: Could not find or use auto-linked library 'swiftSwiftOnoneSupport'
    Undefined symbols for architecture x86_64:
      "value witness table for Builtin.UnknownObject", referenced from:
          full type metadata for kzcity_picker.SwiftKzcityPickerPlugin in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
      "__swift_FORCE_LOAD_$_swiftCompatibilityDynamicReplacements", referenced from:
          __swift_FORCE_LOAD_$_swiftCompatibilityDynamicReplacements_$_kzcity_picker in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
         (maybe you meant:
         __swift_FORCE_LOAD_$_swiftCompatibilityDynamicReplacements_$_kzcity_picker)
      "__swift_FORCE_LOAD_$_swiftCompatibility51", referenced from:
          __swift_FORCE_LOAD_$_swiftCompatibility51_$_kzcity_picker in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
         (maybe you meant: __swift_FORCE_LOAD_$_swiftCompatibility51_$_kzcity_picker)
      "__swift_FORCE_LOAD_$_swiftCompatibility50", referenced from:
          __swift_FORCE_LOAD_$_swiftCompatibility50_$_kzcity_picker in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
         (maybe you meant: __swift_FORCE_LOAD_$_swiftCompatibility50_$_kzcity_picker)
      "__swift_FORCE_LOAD_$_swiftQuartzCore", referenced from:
          __swift_FORCE_LOAD_$_swiftQuartzCore_$_kzcity_picker in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
         (maybe you meant: __swift_FORCE_LOAD_$_swiftQuartzCore_$_kzcity_picker)
      "__swift_FORCE_LOAD_$_swiftCoreImage", referenced from:
          __swift_FORCE_LOAD_$_swiftCoreImage_$_kzcity_picker in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
         (maybe you meant: __swift_FORCE_LOAD_$_swiftCoreImage_$_kzcity_picker)
      "__swift_FORCE_LOAD_$_swiftCoreGraphics", referenced from:
          __swift_FORCE_LOAD_$_swiftCoreGraphics_$_kzcity_picker in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
         (maybe you meant: __swift_FORCE_LOAD_$_swiftCoreGraphics_$_kzcity_picker)
      "__swift_FORCE_LOAD_$_swiftCoreFoundation", referenced from:
          __swift_FORCE_LOAD_$_swiftCoreFoundation_$_kzcity_picker in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
         (maybe you meant: __swift_FORCE_LOAD_$_swiftCoreFoundation_$_kzcity_picker)
      "_swift_getObjectType", referenced from:
          static kzcity_picker.SwiftKzcityPickerPlugin.register(with:
          __C.FlutterPluginRegistrar) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
      "__swift_FORCE_LOAD_$_swiftUIKit", referenced from:
          __swift_FORCE_LOAD_$_swiftUIKit_$_kzcity_picker in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
         (maybe you meant: __swift_FORCE_LOAD_$_swiftUIKit_$_kzcity_picker)
      "_swift_allocObject", referenced from:
          @objc kzcity_picker.SwiftKzcityPickerPlugin.handle(_: __C.FlutterMethodCall, result:
          (Any?) -> ()) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
      "static (extension in
      Foundation):Swift.String._unconditionallyBridgeFromObjectiveC(__C.NSString?) ->
      Swift.String", referenced from:
          kzcity_picker.SwiftKzcityPickerPlugin.handle(_: __C.FlutterMethodCall, result:
          (Any?) -> ()) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
      "_swift_getInitializedObjCClass", referenced from:
          type metadata accessor for __C.FlutterMethodChannel in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
          type metadata accessor for kzcity_picker.SwiftKzcityPickerPlugin in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
          kzcity_picker.SwiftKzcityPickerPlugin.handle(_: __C.FlutterMethodCall, result:
          (Any?) -> ()) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
      "__swift_FORCE_LOAD_$_swiftFoundation", referenced from:
          __swift_FORCE_LOAD_$_swiftFoundation_$_kzcity_picker in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
         (maybe you meant: __swift_FORCE_LOAD_$_swiftFoundation_$_kzcity_picker)
      "__swift_FORCE_LOAD_$_swiftCoreAudio", referenced from:
          __swift_FORCE_LOAD_$_swiftCoreAudio_$_kzcity_picker in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
         (maybe you meant: __swift_FORCE_LOAD_$_swiftCoreAudio_$_kzcity_picker)
      "static Swift.String.+ infix(Swift.String, Swift.String) -> Swift.String", referenced
      from:
          kzcity_picker.SwiftKzcityPickerPlugin.handle(_: __C.FlutterMethodCall, result:
          (Any?) -> ()) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
      "__swift_FORCE_LOAD_$_swiftDarwin", referenced from:
          __swift_FORCE_LOAD_$_swiftDarwin_$_kzcity_picker in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
         (maybe you meant: __swift_FORCE_LOAD_$_swiftDarwin_$_kzcity_picker)
      "_swift_unknownObjectRelease", referenced from:
          static kzcity_picker.SwiftKzcityPickerPlugin.register(with:
          __C.FlutterPluginRegistrar) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
          @nonobjc __C.FlutterMethodChannel.__allocating_init(name: Swift.String,
          binaryMessenger: __C.FlutterBinaryMessenger) -> __C.FlutterMethodChannel in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
          @objc static kzcity_picker.SwiftKzcityPickerPlugin.register(with:
          __C.FlutterPluginRegistrar) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
          reabstraction thunk helper from @escaping @callee_unowned @convention(block)
          (@unowned Swift.AnyObject?) -> () to @escaping @callee_guaranteed (@in_guaranteed
          Any?) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
      "__swift_FORCE_LOAD_$_swiftDispatch", referenced from:
          __swift_FORCE_LOAD_$_swiftDispatch_$_kzcity_picker in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
         (maybe you meant: __swift_FORCE_LOAD_$_swiftDispatch_$_kzcity_picker)
      "_swift_release", referenced from:
          kzcity_picker.SwiftKzcityPickerPlugin.handle(_: __C.FlutterMethodCall, result:
          (Any?) -> ()) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
          ___swift_destroy_boxed_opaque_existential_0 in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
          @objc kzcity_picker.SwiftKzcityPickerPlugin.handle(_: __C.FlutterMethodCall, result:
          (Any?) -> ()) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
      "_swift_deallocObject", referenced from:
          l_objectdestroy in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
      "__swift_FORCE_LOAD_$_swiftMetal", referenced from:
          __swift_FORCE_LOAD_$_swiftMetal_$_kzcity_picker in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
         (maybe you meant: __swift_FORCE_LOAD_$_swiftMetal_$_kzcity_picker)
      "_swift_retain", referenced from:
          kzcity_picker.SwiftKzcityPickerPlugin.handle(_: __C.FlutterMethodCall, result:
          (Any?) -> ()) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
      "__swift_FORCE_LOAD_$_swiftObjectiveC", referenced from:
          __swift_FORCE_LOAD_$_swiftObjectiveC_$_kzcity_picker in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
         (maybe you meant: __swift_FORCE_LOAD_$_swiftObjectiveC_$_kzcity_picker)
      "_swift_unknownObjectRetain", referenced from:
          @objc static kzcity_picker.SwiftKzcityPickerPlugin.register(with:
          __C.FlutterPluginRegistrar) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
      "Swift._bridgeAnythingToObjectiveC<A>(A) -> Swift.AnyObject", referenced from:
          reabstraction thunk helper from @escaping @callee_unowned @convention(block)
          (@unowned Swift.AnyObject?) -> () to @escaping @callee_guaranteed (@in_guaranteed
          Any?) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
      "_swift_getObjCClassMetadata", referenced from:
          type metadata accessor for __C.FlutterMethodChannel in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
          @objc static kzcity_picker.SwiftKzcityPickerPlugin.register(with:
          __C.FlutterPluginRegistrar) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
      "(extension in Foundation):Swift.String._bridgeToObjectiveC() -> __C.NSString",
      referenced from:
          @nonobjc __C.FlutterMethodChannel.__allocating_init(name: Swift.String,
          binaryMessenger: __C.FlutterBinaryMessenger) -> __C.FlutterMethodChannel in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
      "_swift_getObjCClassFromMetadata", referenced from:
          @nonobjc __C.FlutterMethodChannel.__allocating_init(name: Swift.String,
          binaryMessenger: __C.FlutterBinaryMessenger) -> __C.FlutterMethodChannel in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
      "__swift_FORCE_LOAD_$_swiftCoreMedia", referenced from:
          __swift_FORCE_LOAD_$_swiftCoreMedia_$_kzcity_picker in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
         (maybe you meant: __swift_FORCE_LOAD_$_swiftCoreMedia_$_kzcity_picker)
      "type metadata for Swift.String", referenced from:
          kzcity_picker.SwiftKzcityPickerPlugin.handle(_: __C.FlutterMethodCall, result:
          (Any?) -> ()) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
      "_swift_bridgeObjectRelease", referenced from:
          @nonobjc __C.FlutterMethodChannel.__allocating_init(name: Swift.String,
          binaryMessenger: __C.FlutterBinaryMessenger) -> __C.FlutterMethodChannel in
          libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
          kzcity_picker.SwiftKzcityPickerPlugin.handle(_: __C.FlutterMethodCall, result:
          (Any?) -> ()) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
      "Swift.String.init(_builtinStringLiteral: Builtin.RawPointer, utf8CodeUnitCount:
      Builtin.Word, isASCII: Builtin.Int1) -> Swift.String", referenced from:
          static kzcity_picker.SwiftKzcityPickerPlugin.register(with:
          __C.FlutterPluginRegistrar) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
          kzcity_picker.SwiftKzcityPickerPlugin.handle(_: __C.FlutterMethodCall, result:
          (Any?) -> ()) -> () in libkzcity_picker.a(SwiftKzcityPickerPlugin.o)
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

出現上面錯誤的原因是當前項目是oc項目,沒有對swift的支持,通過添加swift版本和pod打包use_frameworks能夠解決以上問題

1.解決這個問題也很簡單,進入到flutter工程中ios目錄下,打開xcode項目

Targets -> Build Settings->搜索左邊的➕ -> Add User-Defined Setting -> 輸入SWIFT_VERSION並設置swift版本為5.0[或者其他版本]

2.找到Pofile文件並在 ttarget 'Runner' do 下添加 use_frameworks! 支持

target 'Runner' do
  use_frameworks!
  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end

操作完以上兩步,重新執行flutter run 項目能正常跑起來了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM