Flutter 组件化导入现有 iOS 项目
2019-12-25 本文已影响0人
iVikings
Flutter项目实战:方案有三
-
纯Flutter项目
:需要投入大量人力进入到Flutter
编程中,且现有原生项目需要完全摒弃 -
Flutter项目混编
:暂且不说Flutter
所支持的框架,与原生交互的坑也暂时还没有填完,且Flutter
一旦更新,需要手动进行更新后重新放入原生项目,对现有原生操作较多,代价较大 -
Flutter项目组件化
:iOS 通过cocoapods
引入,安卓通过aar
包引入,对现有原生项目影响不大
也就可以看出最简单的方法就是将 Flutter 项目进行相对应打包,产生产物分别对应 iOS 和安卓进行组件化生成,也就完成了Flutter现有项目的开发,同时也不会对现有原生项目产生较大影响的方法是最为可行的。
- 新建一个
Flutter module
项目 iOS 打包产物
,通过以下shell 脚本
一键执行
#!/bin/sh
#终端输入 echo $PATH 查看PATH路径
# chmod 755 build.sh 获取权限
#PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
#export PATH
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
echo "Clean old build"
find . -d -name "build" | xargs rm -rf
#flutter clean
echo "开始获取 packages 插件资源"
flutter packages get
echo "开始构建 release for ios"
flutter build ios
echo "构建 release 已完成"
echo "开始 处理framework和资源文件"
build_path="../build_flutter_weiboad_ios"
if [ -d ${build_path} ]; then
find ${build_path} -name \*.framework | xargs rm -rf
else
mkdir ${build_path}
fi
cp -r build/ios/Release-iphoneos/*/*.framework ${build_path}
cp -r .ios/Flutter/App.framework ${build_path}
cp -r .ios/Flutter/engine/Flutter.framework ${build_path}
#cp -r .ios/Flutter/FlutterPluginRegistrant/Classes/GeneratedPluginRegistrant.* ${build_path}
#下一步处理 如何自动生成podspec
#下下一步处理 如何自动发布pod
echo done
默认的 iOS build 是打的 release,如果要打 debug 包,可以在 flutter build ios 后面加 --debug
-
执行脚本后,在
build_iOS.pngbuild_flutter_weiboad_ios
文件夹下查看产物:
-
iOS Cocoapods 私有库制作方式
https://www.jianshu.com/p/6101765ca83d -
*.podspec
文件配置
Pod::Spec.new do |spec|
spec.name = "weibo_ad_flutter_sdk"
spec.version = "0.0.1"
spec.summary = "A short description of weibo_ad_flutter_sdk."
spec.description = <<-DESC
weibo ad flutter sdk
DESC
spec.homepage = 'http://git.intra.weibo.com/ad/mobile/WBKit'
spec.license = { :type => 'MIT', :file => 'LICENSE' }
spec.author = { "**" => "**@*.*.com" }
spec.platform = :ios, "9.0"
spec.requires_arc = true
spec.source = { :git => '', :tag => "#{spec.version}" }
#spec.source_files = "**/*.{h,m}"
spec.ios.vendored_frameworks = "**/*.framework"
end
- 若觉得私有库制作麻烦,可以直接使用
Cocoapods 本地库
- 如
build_iOS.png
图,将*.podspec
文件和Flutter 编译产物
放一个文件夹 - 再在现有的 iOS 项目的
Podfile
文件,导入
pod 'weibo_ad_flutter_sdk', :path => '../build_flutter_weiboad_ios/weibo_ad_flutter_sdk.podspec'
- 执行
pod update
,即可在现有 iOS 项目中看到引入的Flutter SDK
Pods.png
- 如
参考: