前言
要想知道怎么去高級的進行混編,那么久需要你首先對官網(wǎng)的混編方式進行分析。所以,下面我們先對官網(wǎng)的混編方式進行分析,然后在進行正式的高級混編。
一、官網(wǎng)的混編方式分析
1、Podfile
#Flutter項目路徑
flutter_application_path = "../../cj_nativeflutter_fluttermodule"
eval(File.read(File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')), binding)
2、podhelper.rb
2.1、podhelper.rb的位置
podhelper.rb在flutter SDK中的路徑為:/Applications/flutter/packages/flutter_tools/templates/module/ios/library/Flutter.tmpl

iOS項目集成Flutter高級_flutter_tools.png

iOS項目集成Flutter高級_podhelper1.png
在項目中的路徑為:

iOS項目集成Flutter高級1.png
2.2、podhelper.rb處理的事情

iOS項目集成Flutter高級4.png
事情①:獲取Flutter.podspec和FlutterPluginRegistrant.podspec,然后pod
獲取Flutter.podspec

iOS項目集成Flutter高級2.png
獲取FlutterPluginRegistrant.podspec

iOS項目集成Flutter高級3.png
情況1問題:如果engine文件夾不存在,即不存在我們需要的Flutter.podspec和Flutter.framework
如果engine文件夾不存在,即不存在我們需要的Flutter.podspec和Flutter.framework,則我們需要從flutter sdk中的如下目錄拷貝Flutter.podspec和Flutter.framework,那么Flutter SDK的根目錄從哪里找呢?
/Applications/flutter/bin/cache/artifacts/engine/ios/

iOS項目集成Flutter高級5.png
情況1解決:獲取flutter sdk的根目錄flutter_root_dir
而這個flutter sdk目錄flutter_root_dir的獲取,我們只需要從根據(jù)flutter_application_path路徑下的Generated.xcconfig文件中的FLUTTER_ROOT獲取即可。

iOS項目集成Flutter高級6.png
獲取的方法為:
flutter_root_dir = flutter_root(flutter_application_path)
該flutter_root函數(shù)的方法為:

iOS項目集成Flutter高級7.png
Generated.xcconfig數(shù)組的獲取方法為:

iOS項目集成Flutter高級8.png
3、xcode_backend.sh
3.1、xcode_backend.sh的位置
xcode_backend.sh的目錄為/Applications/flutter/packages/flutter_tools/bin/

iOS項目集成Flutter高級_sh1.png