cache failed module status_Flutter混編之路——iOS踩坑記錄

一、運行Xcode編譯或者flutter run/build 過程中報錯:"x86_64" is not an allowed value for option "ios-arch".解決方案

在Debug.xcconfig中指定 “FLUTTER_BUILD_MODE=debug”,Release.xcconfig中指定“FLUTTER_BUILD_MODE=release”錯誤分析

這看起來是在模擬器編譯環境下選擇了真機的Framework什么的,后來查詢發現是沒有設置這個變量。因為工程的Build Phases里運行了相關命令,而xcode_backend里為build_mode變量設置了默認值"release",這使得在查找Flutter.framework等編譯所需的“原材料”時,默認選擇了release的目錄,導致了這個錯誤,所以,加上debug這個設置后,會去ios這個目錄中查找相關文件,就不會有問題了。附目錄截圖:

注:所在目錄 flutter/bin/cache/artifacts/engine/

二、Flutter plugin not installed; this adds Flutter specific functionality.?Dart plugin not installed; this adds Dart specific functionality解決方案

1.) Start the Android Studio application

2.) Open plugin preferences (Preferences>Plugins on macOS, File>Settings>Plugins on Windows & Linux).

3.) Select Browse repositories…, select the Flutter plug-in and click install .

4.) Click Yes when prompted to install the Dart plugin.

5.) Click Restart when prompted.錯誤分析

如果你使用的是iOS開發環境或者沒有安裝Flutter插件的Android Studio,會報這個錯誤。Flutter是Google開發的移動開發SDK,為了方便,基于自己的IDE開發了Flutter插件,以方便集成過程。在Flutter生成雙端產物的時候,需要經過插件做一些操作。

三、Android license status unknown解決方案

執行 “flutter doctor --android-licenses” 命令

會問你'Do you want to review the licenses?',輸入“y” 然后 回車,這時再執行一次flutter doctor就好了

四、MissingPluginException(No implementation found for method xxx on channel xxx)解決方案

方案一:flutter clean一下,再次 flutter run/build

方案二:將flutter run的進程終止掉重新 flutter run/build

方案三:看看你的FlutterPluginRegistrant產物是否存在,是否更新了錯誤分析

問題本質是Plugin的方法沒有找到,也可能是Plugin本身就沒有注冊成功。老版本的Flutter SDK遇到這個問題可能是沒有觸發GeneratedPluginRegistrant.register(this),新版本的已經不需要手動觸發了。

五、Waiting for another flutter command to release the startup lock解決方案

rm ./flutter/bin/cache/lockfile錯誤分析

原因是在flutter編譯等操作運行過程中,會創建一個文件鎖,但是由于一些原因鎖沒有釋放導致的,而且一直無法釋放……

六、'Flutter/Flutter.h' file not found解決方案

方案一:如果集成方式是靜態庫(.a),需要在引用Flutter的工程中,修改Build settings中的Header Search Paths,將Flutter所在目錄加入其中。

方案二:如果集成方式是動態庫(.framework),說明在引用Flutter的工程中并沒有依賴成功,需要檢查Flutter.framework包內是否包含Headers文件夾,是否其中包含Flutter.h,另外就是Podspec和podfile是否正確。還有,Cocoapods必須1.5版本及以上。

方案三:如果你用的podspec.json,試試改寫成podspec(這個坑曾讓我浪費了幾天的時間……)

七、error: cannot parse the debug map for xxx: No such file or directory解決方案

依賴產物只針對 真機 ,但調試中使用了另一種 模擬器。或者反過來了。錯誤分析

真機和模擬器的平臺是不同的,符號也不同。

八、diff: /../Podfile.lock: No such file or directory解決方案

方案一:重新pod install

方案二:刪除workspace、podfile.lock、Pods/、~/Library/Developer/Xcode/DerivedData

方案三:

1、運行sudo gem install cocoapods-deintegrate安裝快速解除項目cocopods依賴的庫

2、安裝成功后,cd到你項目的更目錄運行pod deintegrate解除項目cocopods依賴

3、運行pod install,重新安裝cocopods錯誤分析

Cocoapods的鍋……

九、Flutter Bitcode解決方案

在podfile中禁止bitcode錯誤分析

Flutter相關集成是不支持bitcode的,所以需要將相關產物的bitcode功能關閉。如果你的現有工程中倉庫眾多,有的倉庫是必須bitcode的,這樣的話就需要每次pod install之后再在工程配置中手動設置回來,以下腳本放在podfile中可以解決此問題。

post_install do |installer|

installer.pods_project.targets.each do |target|

if target.name =="App" || target.name =="Flutter"

target.build_configurations.each do |config|

config.build_settings['ENABLE_BITCODE'] ='NO'

end

end

end

end

十、module importing failed: ('invalid syntax', ('temp.py',xxx解決方案

執行以下命令

brew update

brew uninstall --ignore-dependencies libimobiledevice ios-deploy cocoapods

brew uninstall --ignore-dependencies usbmuxd

brew install --HEAD usbmuxd

brew unlink usbmuxd

brew link usbmuxd

brew install --HEAD libimobiledevice

brew install ideviceinstaller ios-deploy cocoapods

十一、Flutter集成到現有工程后,性能問題解決方案

用Release產物集成問題分析

為了實現Hot refresh功能,Flutter在Debug下做了很多工作,影響了性能,可以通過修改

FLUTTER_BUILD_MODE的值("debug" => "release")

使用Release產物集成的方式屏蔽這部分影響。注意,flutter_assets是需要同時更新的,Debug產物中含有kernel_blob.bin文件,Release產物則沒有。

十二、iOS系統中,第一次從Native跳轉到Flutter頁面時,會出現LaunchScreen解決方案

采用繼承、Category同名方法等方式,覆蓋FlutterViewController的splashScreenView的get方法,直接返回成員變量,將中間的讀取LaunchScreen頁面過程覆蓋掉,甚至可以自定義自己的邏輯。問題分析

Flutter的渲染是異步的,第一次加載需要創建Application和頁面,無法及時返回結果,所以Flutter自己把這部分邏輯加到了SDK內部,其實是為了解決 “純Flutter App首屏白屏” 問題,但給我們這種混編的App帶來了麻煩。

以上是我們到目前為止遇到的主要坑位,以及解決方案和原因分析,Flutter無論從性能還是人效方面來講,都會在熟悉之后節省不少成本,希望各位能從我們的經驗中節省更多寶貴的時間。同時,也希望大家把更多的埋坑記錄發到評論里,幫助友隊一起學習,一起成長。歡迎技術交流!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394114.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394114.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394114.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【最短路徑Floyd算法詳解推導過程】看完這篇,你還能不懂Floyd算法?還不會?...

簡介 Floyd-Warshall算法(Floyd-Warshall algorithm),是一種利用動態規劃的思想尋找給定的加權圖中多源點之間最短路徑的算法,與Dijkstra算法類似。該算法名稱以創始人之一、1978年圖靈獎獲得者、斯坦福大學計算機科學系教授羅伯特…

java object類的常用子類_Java中Object類常用的12個方法,你用過幾個?

前言Java 中的 Object 方法在面試中是一個非常高頻的點,畢竟 Object 是所有類的“老祖宗”。Java 中所有的類都有一個共同的祖先 Object 類,子類都會繼承所有 Object 類中的 public 方法。先看下 Object 的類結構(快捷鍵:alt7):1.…

leetcode面試題 04.12. 求和路徑(dfs)

給定一棵二叉樹,其中每個節點都含有一個整數數值(該值或正或負)。設計一個算法,打印節點數值總和等于某個給定值的所有路徑的數量。注意,路徑不一定非得從二叉樹的根節點或葉節點開始或結束,但是其方向必須向下(只能從父節點指向子…

javaweb學習總結(二十二)——基于Servlet+JSP+JavaBean開發模式的用戶登錄注冊

一、ServletJSPJavaBean開發模式(MVC)介紹 ServletJSPJavaBean模式(MVC)適合開發復雜的web應用,在這種模式下,servlet負責處理用戶請求,jsp負責數據顯示,javabean負責封裝數據。 ServletJSPJavaBean模式程序各個模塊之間層次清晰&…

2018黃河獎設計大賽獲獎_宣布我們的freeCodeCamp 2018杰出貢獻者獎獲獎者

2018黃河獎設計大賽獲獎by Quincy Larson昆西拉爾森(Quincy Larson) 宣布我們的freeCodeCamp 2018杰出貢獻者獎獲獎者 (Announcing Our freeCodeCamp 2018 Top Contributor Award Winners) Over the past 3 years, freeCodeCamp.org has grown from a small open source proje…

Log4j配置詳解

來自: http://www.blogjava.net/zJun/archive/2006/06/28/55511.html Log4J的配置文件(Configuration File)就是用來設置記錄器的級別、存放器和布局的,它可接keyvalue格式的設置或xml格式的設置信息。通過配置,可以創建出Log4J的運行環境。1. 配置文件 …

cors數據類型_如何根據RTK的差分格式選擇千尋cors賬號的源節點進行設置?

千尋cors賬號的設置中源節點是根據使用的品牌RTK是為雙星儀器還是三星儀器選擇,但問題就在于我們看到的RTK的技術參數中一般很少見到標注儀器的衛星系統,更多的是差分格式。其實千尋cors賬號的源節點也可以根據RTK的差分格式進行選擇,不過這兩…

java swing 串口_ComTest 接收串口數據,并顯示在文本框內,通過JavaSwing實現 Develop 265萬源代碼下載- www.pudn.com...

文件名稱: ComTest下載 收藏√ [5 4 3 2 1 ]開發工具: Java文件大小: 3157 KB上傳時間: 2016-09-21下載次數: 0提 供 者: 韓坤詳細說明:接收串口數據,并顯示在文本框內,通過JavaSwing實現-Receive serial data, and displayed in the t…

leetcode329. 矩陣中的最長遞增路徑(dfs)

給定一個整數矩陣,找出最長遞增路徑的長度。對于每個單元格,你可以往上,下,左,右四個方向移動。 你不能在對角線方向上移動或移動到邊界外(即不允許環繞)。示例 1:輸入: nums [[9,9,4],[6,6,8…

SQL大圣之路筆記——PowerDesigner之新建table、view、proc

1. 新建table、view、proc 轉載于:https://www.cnblogs.com/allenzhang/p/6305564.html

用python繪制一條直線_python繪制直線的方法

本文實例為大家分享了python繪制直線的具體代碼&#xff0c;供大家參考&#xff0c;具體內容如下#!/usr/bin/env pythonimport vtk# 繪制通用方法def myshow(linepolydata):# Now well look at it.lineMapper vtk.vtkPolyDataMapper()if vtk.VTK_MAJOR_VERSION < 5:lineMap…

測試驅動開發 測試前移_我如何以及為什么認為測試驅動開發值得我花時間

測試驅動開發 測試前移by Ronauli Silva通過羅納利席爾瓦(Ronauli Silva) I first read about test driven development (TDD) in some technical reviews blog, but I barely read it (or thought about it). Why would people write tests first when they already knew the…

P2921 [USACO08DEC]在農場萬圣節Trick or Treat on the Farm

對于一個牛&#xff0c;它存在兩種狀態&#xff1a;1.處于聯通分量 2.不處于聯通分量。對于處于聯通分量的牛&#xff0c;求出聯通分量的大小&#xff1b;對于不處于聯通分量的牛&#xff0c;求出其距離聯通分量的路程聯通分量大小。 不同的聯通分量&#xff0c;染上不同的顏色…

ASP.NET MVC5+EF6+EasyUI 后臺管理系統(1)-前言與目錄(持續更新中...)

開發工具&#xff1a;VS2015(2012以上)SQL2008R2以上數據庫 您可以有償獲取一份最新源碼聯系QQ:729994997 價格 666RMB 升級后界面效果如下&#xff1a; 日程管理 http://www.cnblogs.com/ymnets/p/7094914.html 任務調度系統界面 http://www.cnblogs.com/ymnets/p/5065154.h…

leetcode106. 從中序與后序遍歷序列構造二叉樹(dfs)

根據一棵樹的中序遍歷與后序遍歷構造二叉樹。注意: 你可以假設樹中沒有重復的元素。例如&#xff0c;給出中序遍歷 inorder [9,3,15,20,7] 后序遍歷 postorder [9,15,7,20,3] 返回如下的二叉樹&#xff1a;3/ \9 20/ \15 7解題思路 根據后序遍歷的最后一個元素是父節點&…

【FRDM-K64F學習筆記】使用ARM mbed和Keil MDK下載你的第一個程序

FRDM-K64F開發平臺采用MK64FN1M0VLL12微控制器。該控制器包含一個帶有浮點單元的ARM Cortex-M4內核。其最高工作頻率為120MHz&#xff0c;具有256KB的RAM、1MB閃存以及許多其他外設。它非常適合大多數可以采用以太網、SD卡存儲以及板載模擬-數字轉換器的IoT應用。但是&#xff…

php 實時更新內容_億級視頻內容如何實時更新?優酷視頻背后的技術揭秘

簡介&#xff1a; 優酷視頻內容數據天然呈現巨大的網絡結構&#xff0c;各類數據實體連接形成了數十億頂點和百億條邊的數據量&#xff0c;面對巨大的數據量&#xff0c;傳統關系型數據庫往往難以處理和管理&#xff0c;圖數據結構更加貼合優酷的業務場景&#xff0c;圖組織使用…

ios集成firebase_如何使用Firebase將Google Login集成到Ionic應用程序中

ios集成firebaseby Ryan Gordon通過瑞安戈登(Ryan Gordon) 如何使用Firebase將Google Login集成到Ionic應用程序中 (How to integrate Google Login into an Ionic app with Firebase) A lot of apps these days need to maintain some form of user authentication. This hel…

面向對象三大核心特點,封裝、繼承和多態

封裝 封裝其實是一種思想&#xff0c;將事物狀態和功能裝進一個容器&#xff0c;那么這個容器在python中就是類&#xff0c;由這個類產生的對象都擁有類的屬性和功能 在面向對象的思想中&#xff0c;推崇將具有某些共同特征的事物歸為一類&#xff0c;那么這些事物就可以看做是…

java編寫某計算器控制臺程序_用java程序編寫一個計算器

點擊查看用java程序編寫一個計算器具體信息答&#xff1a;給你一個參考&#xff0c;希望不要被百度吞了當晚餐 import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.text.Decimal…