flutter组件化导入

494 阅读1分钟

之前有解释过如何将flutter嵌入现有app,但是总感觉比较麻烦,需要添加一些配置文件。如果进行多次的迭代开发修改比较频繁。因为我们的app都是使用cocoapods进行管理,所以我们也打算将flutter进行pod化,也算是方便导入吧。

首先我们摒弃了直接在工厂内添加flutter工程,用cocopods导入flutter,方便我们调试,等到调试没有问题我们把产物(framework包)添加到pod文件里面形成第三方pod,供其他工程直接饮用。

1、创建Xcode工程

pod lib create jefferyFlutterPod

2、创建flutter工程

flutter create -t module jeffery_flutter_module

3、修改jefferyFlutterPod/Example/Podfile文件

use_frameworks!

platform :ios, '9.0'

target 'jefferyFlutterPod_Example' do
  pod 'jefferyFlutterPod', :path => '../'

  target 'jefferyFlutterPod_Tests' do
    inherit! :search_paths

    
  end
end

flutter_application_path = '../jeffery_flutter_module'
eval(File.read(File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')), binding)

4.打开jefferyFlutterPod.xcworkspace工程 进行pod install

5.修改Xcode配置

修改Xocde Build Setting中Enable Bitcode为NO

添加Run Script

"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build
"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed

xcode能够正常运行。

5.vscode打开jeffery_flutter_module
pubspec.yaml添加flutter_easyrefresh第三方插件进行测试 flutter packages get 加载第三方包 flutter run 运行

之后在Xcode重新运行能够看到最新的flutter界面

6.上传pod

修改podspec文件


Pod::Spec.new do |s|
  s.name             = 'jefferyFlutterPod'
  s.version          = '0.1.1'
  s.summary          = 'A test for flutter_pod.'

  s.description      = <<-DESC
TODO: Add long description of the pod here.
                       DESC

  s.homepage         = 'https://github.com/mynameissujie/jefferyFlutterPod.git'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'jeffery' => '379675320@qq.com' }
  s.source           = { :git => 'https://github.com/mynameissujie/jefferyFlutterPod.git', :tag => s.version.to_s }

  s.ios.deployment_target = '9.0'
  s.source_files = 'jefferyFlutterPod/Classes/**/*'
  s.public_header_files = 'jefferyFlutterPod/Classes/**/*.h'
  s.vendored_frameworks = "jefferyFlutterPod/Framework/*.framework"


end

7.一系列git操作推送pod

git add .  
git commit -m 'first commit'
git remote add origin https://github.com/mynameissujie/jefferyFlutterPod.git
git push -u origin master

git tag 0.1.1
git push --tags  
git push origin master
pod spec lint jefferyFlutterPod.podspec
pod trunk register 379675320@qq.com 'jeffery' --description='jeffery macbook pro' --verbose
pod trunk push jefferyFlutterPod.podspec

成功推送之后,iOS工程使用的直接利用cocopods进行集成。

pod 'jefferyFlutterPod','0.1.1'

效果如下:

11111.jpg

说明我们已经可以正常使用了。