簡體   English   中英

Flutter 插件:在 iOS 和 MacOS 之間共享代碼

[英]Flutter Plugin: share code between iOS and MacOS

我在插件的根目錄中有一個公共目錄,其中包含應該由 iOS 和 MacOS 共享的代碼。 我將兩者的.podspec文件中的source_files為指向公共目錄: s.source_files = '../common/Classes/**/*' ,但是現在當我構建任何一個 ios/macos 示例時,構建失敗並顯示找不到插件導入的錯誤。

/Flutter/GeneratedPluginRegistrant.swift:8:8: 錯誤:沒有這樣的模塊'plugin_name'

這是在 iOS 和 Macos 之間共享代碼的正確方法嗎? 我該如何解決?

看來這不是在 iOS 和 MacOS 之間共享代碼的正確方式。 相反,我應該做的是:

  1. 保持.podspec文件不變。
  2. 在插件代碼庫的根目錄下創建一個名為 apple 的目錄(名稱無關緊要)。
  3. 將公共代碼移動到步驟 2 中創建的目錄。
  4. ios/Classesmacos/Classes創建每個公共代碼文件的符號鏈接(假設在相應的目錄中):
ln -s ../../apple/Classes/SwiftSomePlugin.swift SwiftSomePlugin.swift

就我而言,我只有一個文件,但如果您有更多文件,則需要為每個文件創建符號鏈接。

最終結果應如下所示:

├── apple
│   └── Classes
│       └── SwiftSomePlugin.swift
├── ios
│   ├── Assets
│   ├── Classes
│   │   ├── SomePlugin.h
│   │   ├── SomePlugin.m
│   │   └── SwiftSomePlugin.swift -> ../../apple/Classes/SwiftSomePlugin.swift
│   └── some.podspec
├── macos
│   ├── Classes
│   │   └── SwiftSomePlugin.swift -> ../../apple/Classes/SwiftSomePlugin.swift
│   └── some.podspec

現在運行構建,它應該會成功。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM