當前位置:首頁 » 編程軟體 » iosflutter編譯

iosflutter編譯

發布時間: 2025-03-01 18:59:05

⑴ Flutter-自定義引擎流程(iOS)

當你發現Flutter Engine的bug並成功定位到crash的調用堆棧後,你可能需要自己重新編譯Flutter引擎。堆棧還原基本命令可以參考官方地址。

首先,確保安裝了depot_tools,並准備好CLion作為IDE,它對於Xcode友好,便於代碼跳轉。同時,使用V...P...N和FanQiang,並將其設置為全局模式以加速下載。了解gclient、gn、ninja的作用,閱讀官方文檔以獲取更多詳細信息。

配置gclient終端,創建.gclient文件,並指定你使用的引擎版本,如Flutter2.5.1。執行gclient sync命令,等待大約14G的文件下載,直到src/flutter成為引擎的git倉庫。

編譯過程分為幾個步驟。在解決m1的mac無法編譯的問題後,使用特定的解決辦法,成功在intel i5的電腦上編譯。在src目錄下,執行gn生成Xcode項目,用於debug時使用引擎源代碼,並確保編譯dart-sdk。

gn腳本參數如--goma和--no-goma、--no-dart-version-git-info等可幫助你根據需要調整編譯過程。遇到錯誤時,定位問題並更新buildroot或修改find_sdk.py中的正則判斷。執行ninja -C out/host_debug_unopt以編譯。

編譯完成後,使用python腳本工具src/flutter/sky/tools下的create_ios_framework.py和create_macos_gen_snapshots.py創建Flutter.xcframework和gen_snapshots。最終產物包大小優化實踐提供了關於gen_snapshot文件的詳細信息。

在需要debug的項目中,執行命令以更新Generated.xcconfig文件,然後在Xcode工程中拖入src/out/ios_debug_unopt下的flutter_engine.xcodeproj,實現debug。

在debug時注意,不能在非同步線程向flutter回調FlutterResult和FlutterEventSink。確保OC回調Flutter時通過傳過來的block參數,遵循正確的方式。

成功解決crash問題後,可以拉取特定git提交節點(如Flutter2.5.1版本)的分支提交自己的代碼。解決的crash問題包括後台渲染問題,crash率顯著下降。在github倉庫中分享了解決方案,包括修復內存泄露和其他優化提交。

繞過dart-sdk的版本校驗可以通過修改flutter/tools/gn命令參數和src/third_party/dart/sdk_args.gni配置項,確保flutter_patched_sdk不帶有git_short_hash,從而避免前端編譯時的dart內核版本校驗。具體校驗邏輯位於flutter_frontend_server中的代碼中。

了解這些步驟和技巧後,你將能夠解決或優化Flutter Engine中的問題,並確保應用程序的穩定性和性能。

⑵ 【Android開發學Flutter】Xcode編譯問題匯總

Xcode編譯經常遇到各種問題,處理起來費時費力,挺打擊學習積極性的。記錄下這些問題,方便自己也幫助後來人。

編譯的時候遇到:

網上有很多解決方法,我是用這個方法解決的:

編譯的時候遇到:

解決辦法:
Project -> User-Defined -> FLUTTER_ROOT 改成本地 flutter SDK路徑

感謝 issues 上的小哥,給你個🚀

在項目目錄下執行 flutter run 可以正常運行到手機,但是在Xcode build 還是有問題。

這時需要手動添加 FLUTTER_ROOT User-Defined

添加之後:

就可以正常在Xcode build 安裝到手機了。

flutter build ios 後出現:

pod install 後出現:

解決辦法:
這是因為terminal沒有走代理的流量,
使用 git config --global http.proxy "localhost:port" ,設置代理。
port是埠號,根據不同的vpn不一樣,我的埠是10080。
執行 git config --global http.proxy "localhost:10080"

Xcode build 的時候出現:

解決辦法:打開 ios/Podflie 文件:

關於 bitcode 的問題,我檢查了下用到的第三方SDK,應該是網路地圖的問題,我引入了個第三方插件(吐槽下沒官方插件),網路地圖有支持和不支持 bitcode 的兩個SDK,我取消這個插件就沒有報這個錯了,奇怪的是,再次引入同一個插件,也可以正常打包,所以說這個問題還沒有完全解決。
大家可以試下這個處理方法:

TARGETS -> Build Seettings 搜 arm ,試一下把其他刪除,只留下armv7跟armv7s或者只留下armv7

解決辦法:
https://www.jianshu.com/p/201df7e9a52f

我是clean Xcode之後就可以了

解決辦法:
用的是P12證書,改成手動簽名:

熱點內容
安卓盒子可以用什麼手柄 發布:2025-03-01 21:58:03 瀏覽:243
伺服器禁用是什麼 發布:2025-03-01 21:47:56 瀏覽:780
廣發證券交易密碼忘記怎麼辦 發布:2025-03-01 21:46:28 瀏覽:820
安卓喜馬拉雅記憶卡在哪裡 發布:2025-03-01 21:35:00 瀏覽:519
怎麼改行李箱的密碼 發布:2025-03-01 21:34:57 瀏覽:651
沒有重置按鈕的安卓平板怎麼重置 發布:2025-03-01 21:34:11 瀏覽:239
怎樣給寬頻加密 發布:2025-03-01 21:19:15 瀏覽:938
湖南省電子憑證伺服器ip地址 發布:2025-03-01 21:14:59 瀏覽:957
拉格朗日插值c語言 發布:2025-03-01 20:57:30 瀏覽:592
so文件能反編譯嗎 發布:2025-03-01 20:53:07 瀏覽:126