这里有两种集成方式:
方式一
优点:该方案遵循flutter官方建议,规范性不言而喻
缺点: 此方案对团队开发不是很友好,需要求每名开发同学的电脑上都要配>置flutter环境。并且 iOS端开发与flutter端开发在代码纠缠性上会变得复杂化
主要过程:
cd 进入项目根目录上一层
flutter create -t module flutter_module
cd ./flutter_module
flutter build ios
Podfile文件修改:
# flutter混编配置
flutter_application_path = '../flutter_module/'
load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')
target 'XXXAPP' do
use_frameworks!
# flutter混编配置
install_all_flutter_pods(flutter_application_path)
end
cd ..
pod install
当您更改扑插件的依赖关系some/path/my_flutter/pubspec.yaml,你需要运行flutter pub get从some/path/my_flutter刷新列表插件读取的podhelper.rb脚本。然后pod install从再次 运行some/path/MyApp。
该podhelper.rb脚本将确保您的插件Flutter.framework和App.framework嵌入在您的项目中。
遇到的一些坑:
错误一:Command PhaseScriptExecution failed with a nonzero exit code
解决方法:xcode菜单file->Workspace Settings->Build System 选择Legacy Build System
错误二:x’x’x/Flutter.framework: Permission denied
解决方法:修改 $FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh 144Line
RunCommand find "${derived_dir}/engine/Flutter.framework" -type f -exec chmod a-w "{}" \;
改成
RunCommand find "${derived_dir}/engine/Flutter.framework" -type f -iname '.h' -exec chmod a-w "{}" \;
错误三:dyld: dyld cache load error: shared cache file open() failed
dyld: Library not loaded: @rpath/App.framework/App
模拟器无法运行 要用真机跑release模式
方式二
优点: 对 Flutter 自身的构建流程改动较少并且较彻底第解决了本地耦合的问题; 解决了组件式开发的痛点,各自开发各自的代码,也不用要求每台电脑上都配置flutter环境
缺点: 集成方式上变得貌似更加繁琐,Flutter 内容的变动需要先同步到远程仓库再 同步到 Standalone 模式方能生效;且要各自打包维护iOS安卓的两套代码仓库供不同平台去拉取调用,Flutter中的依赖库配置可能存在一些坑
网友评论