Flutter插件开发中iOS图片等资源配置问题

5 篇文章 0 订阅
4 篇文章 0 订阅

前言

flutter开发中,不可避免要使用原生的东西,比如,我们要调用原生自定义的相机,就会涉及到和flutter和native的通信等问题

Flutter和native通信方式

1.不通过插件

直接在flutter目录中,分别在android和iOS目录,直接定义就可以了,然后通过MethodChannel来注册通信即可

这种方式缺点也比较明显,比如不利于解耦,导致这2个子目录臃肿,修改起来也很麻烦,

2.通过插件的形式

插件相当于第三方库文件,具体的创建的过程就不再赘述了,我相信大部分同学都可以完成这一步,可以看下图

这种方式的优点有很多,比如不会在冗杂在主目录下的android和iOS目录中,在主目录下,单独建立一个plugins目录,所有的插件都在这个目录下进行开发,也方便打成插件包给其他工程使用等等。

注意事项

我们在开发Android插件的时候,直接在插件中的Android目录下,走Android正常的开发流程即可,如图

但是,在iOS目录中,我们需要在.podspec文件中指定我们需要编译的文件,和相关资源配置等

下面来看看.podspec文件中的配置(podspec文件相当于Android中的gradle文件)

#
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
  s.name             = 'take_picture_plugin'
  s.version          = '0.0.1'
  s.summary          = 'take picture by camera plugin.'
  s.description      = <<-DESC
A new Flutter plugin.
                       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'
  s.resources = ['Classes/*.png']
  s.dependency 'Flutter'
  s.ios.deployment_target = '8.0'
end

上面的配置名称顾名思义很简单,当我们需要其他配置的时候,可以去http://guides.cocoapods.org/syntax/podspec.html查看

比如,如果你要插件中使用本地图片,就需要引入图片资源到iOS插件后,你才能使用本地图片,可以通过spec.resources = ['Images/*.png']来配置,也可以通过bundle等,引入外部第三方库,可以通过s.dependency来配置。

当我们配置完iOS插件中的podspec后,发现配置并没有生效,无论我们如何在android studio进行操作,原因就是podspec文件的执行需要用到mac 中pod命令,所以,我们就必须通过pod install来让它生效,使用mac Terminal,cd进入到插件中example目录,再进入到iOS目录,使用pod install 即可让podspec配置生效。

总结

记住你一定要用pod install走一遍,这个问题困扰了我好几个小时

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值