Flutter插件开发《iOS原生模块开发》

栏目: IOS · 发布时间: 5年前

内容简介:上一篇简单的整理了一下Podspec语法整理,主要是为了这一篇Flutter中iOS原生模块开发。在开发Flutte中我们难免会遇到原生组件、插件或者与原生模块通信,比如地图、引入第三方sdk如微信、支付宝等SDK,还有摄像头SDK,我们必须要用到原生, 当然你也可以用pub.dev/flutter中的,但是这并不是最终的解决之道,Flutter刚发展不久,假如刚好没有或者并不满足你的需求,因此这就需要自己动手,俗话说自己动手丰衣足食这种方法比较简单就像iOS项目中直接引用,前提是pod search可以搜

上一篇简单的整理了一下Podspec语法整理,主要是为了这一篇Flutter中iOS原生模块开发。

简介

在开发Flutte中我们难免会遇到原生组件、插件或者与原生模块通信,比如地图、引入第三方sdk如微信、支付宝等SDK,还有摄像头SDK,我们必须要用到原生, 当然你也可以用pub.dev/flutter中的,但是这并不是最终的解决之道,Flutter刚发展不久,假如刚好没有或者并不满足你的需求,因此这就需要自己动手,俗话说自己动手丰衣足食

用法一,直接引用

这种方法比较简单就像iOS项目中直接引用,前提是pod search可以搜索到它。

#
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
  s.name             = 'flutter_txmap_plugin'
  s.version          = '0.0.1'
  s.summary          = '一款腾讯地图Flutter插件'
  s.description      = <<-DESC
一款腾讯地图Flutter插件
                       DESC
  s.homepage         = 'http://example.com'
  s.license          = { :file => '../LICENSE' }
  s.author           = { 'Your Company' => 'my_snail@126.com' }
  s.source           = { :path => '.' }
  s.source_files = 'Classes/**/*'
  s.public_header_files = 'Classes/**/*.h'
  s.dependency 'Flutter'
  ## 引入,还可以携带版本号
  s.dependency 'AFNetworking', '~> 1.0'

  s.ios.deployment_target = '9.0'
end

复制代码

用法二,将第三方库copy到新建的文件夹中

这种方法我们不可以像第一种直接引入,因为pod search根本搜索不到,比如腾讯地图,遇到这种方式的话只有下载他们的库,然后引入,例如:

#
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
  s.name             = 'flutter_txmap_plugin'
  s.version          = '0.0.1'
  s.summary          = '一款腾讯地图Flutter插件'
  s.description      = <<-DESC
一款腾讯地图Flutter插件
                       DESC
  s.homepage         = 'http://example.com'
  s.license          = { :file => '../LICENSE' }
  s.author           = { 'Your Company' => 'my_snail@126.com' }
  s.source           = { :path => '.' }
  s.source_files = 'Classes/**/*'
  s.public_header_files = 'Classes/**/*.h'
  s.dependency 'Flutter'
  # 引入资源,比如我们想要显示标注的图片
  s.resources = ['Images/*.png']
  # 腾讯地图的framework库,pod search搜索的应该是很早的版本和最新的api对应不上
  s.vendored_frameworks = 'Frameworks/QMapKit.framework', 'Frameworks/TencentLBS.framework'

  s.ios.deployment_target = '9.0'
end

复制代码

第三种,假如不是framework库而是 .a 文件

最近在引入一个摄像头sdk和配置设备到Wi-Fi下面,都是.a的库,这种方式又是如何引入了,也是搞了好久,终于在 guides.cocoapods.org/syntax/pods… 中找到了 如下:

#
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
  s.name             = 'erazl_plugin'
  s.version          = '0.0.1'
  s.summary          = 'A new flutter plugin project.'
  s.description      = <<-DESC
A new flutter plugin project.
                       DESC
  s.homepage         = 'http://example.com'
  s.license          = { :file => '../LICENSE' }
  s.author           = { 'Your Company' => 'email@example.com' }
  s.source           = { :path => '.' }
  s.source_files = 'Classes/**/*'
  s.public_header_files = 'Classes/**/*.h', 'Library/*.h'
  # 引入Library文件夹下所有的*.a库
  s.vendored_libraries = 'Library/*.a'
  s.frameworks = 'MobileCoreServices', 'CFNetwork', 'CoreGraphics'
  # 只是引入*.a库还是不行,还是要引入相关联的系统库,否则无法编译通过
  # 用户目标(应用程序)需要链接的系统库列表,
  s.libraries = 'z.1.2.5', 'c++', 'c', 'iconv.2.4.0', 'sqlite3', 'stdc++.6.0.9', 'xml2', 'bz2.1.0', 'resolv', 'xml2', 'z'
  s.dependency 'Flutter'

  s.ios.deployment_target = '9.0'
end


复制代码

上诉就是最近在开发iOS原生模块时遇到的各种问题,在此做个简单的总结,如果还有其他方式欢迎互相学习

Flutter插件开发《iOS原生模块开发》

以上所述就是小编给大家介绍的《Flutter插件开发《iOS原生模块开发》》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法Ⅰ-Ⅳ

算法Ⅰ-Ⅳ

塞奇威克 / 中国电力出版社 / 2003-11 / 70.00元

《算法I-IV(C实现):基础、数据结构、排序和搜索(第3版)(影印版)》实为一个卓越的读本,作为一个普通的程序员,如果在数学分析方面不算熟练,同时又对理论算法很感兴趣,那么这《算法I-IV(C实现):基础、数据结构、排序和搜索(第3版)(影印版)》确定不容错过,由此你将获益匪浅。Sedgewick擅长深入浅出的方式来解释概念,他在这方面确有天分。另外书中使用了一些实践程序,其篇幅仅有一页左右,而......一起来看看 《算法Ⅰ-Ⅳ》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具