Integrate a Flutter module into your iOS project
Option B - Embed frameworks in Xcode
- link on the frameworks,拖入Build Phases -> Link Binary With Libraries
- embed the frameworks,拖入Build Phases -> Embed Frameworks,選中CodeDesign
- Build Settings ->
Library Search PathsandFramework Search Paths添加路徑 - 編譯 ?B. 整個過程注意完整性,應用之前可以先clean項目,避免不必要錯誤
注:嵌入不正確會導致啟動錯誤,以上1,2步可以直接拖入General -> Frameworks, Libraries, and Emdeded Content
pod XXX target has libraries with conflicting names XXX,在項目中找到對應文件刪除引用即可,找不到刪除pod.lock 重新pod install
——————————————————
Q: Multiple commands produce '***/Frameworks/Flutter.framework
(依賴項目和編譯環(huán)境,第一次報錯,清理項目之后第二次可以正常編譯,不用刪除Flutter.framework)
原因:
原文鏈接
Embed框架為Runner項目構建階段
[CP]嵌入Pods框架構建pod安裝在項目中創(chuàng)建的階段。
第一項用于確保在沒有插件的情況下將框架復制到構建的應用程序中(因此在Xcode項目中沒有CocoaPods集成)。
第二項是因為Flutter的podspec將Flutter.framework聲明為vended_framework,而CocoaPods會自動為CocoaPods依賴項的傳遞閉包中的每個這樣的vended_framework添加一個復制步驟。
解決方式
方式1:使用 Legacy Build System (File -> Workspace Settings),驗證無效報錯
方式2:使用 New Build System,刪除Targets -> Build Phases -> Embed Frameworks -> 刪除Flutter.framework (保留App.framework)
注意:都需要進行重新簽名,已經(jīng)簽名的App.framework和Flutter.framework安裝界面Detail顯示無效簽名
注意:使用官方的Tips進行$(CONFIGURATION) 把Debug和Release 下的framework都引入到 Build Phases -> Embed Frameworks,還是會報Multiple commands produce 錯誤,暫沒有更好的方案,可以手動全部Drag引入,注意排除靜態(tài)庫
——————————————————
Do Not Embed、Embed & Sign和Embed Without Signing
Embed:用于動態(tài)庫,在運行時鏈接,所以需要被打進bundle里面
判斷動態(tài)庫還是靜態(tài)庫 命令:file frameworkToLink.framework/frameworkToLink
- current ar archive 靜態(tài)庫,選擇 Do not embed
- Mach-0 dynamically 動態(tài)庫,選擇 Embed
Signing:只用于動態(tài)庫,如有了簽名就不需要簽名了
判斷 命令:codesign -dv frameworkToLink.framwork
- code object is not signed at all 或者 adhoc,選擇embed and sign
- 其他,標識已經(jīng)正確簽名,選擇Embed Without Signing
Q:MissingPluginException
A:https://blog.csdn.net/u011228060/article/details/120414390
A:https://blog.z7ge.com/archives/flutter-missingpluginexception-bu-yao-huang