2018年12月

最近在做一个新的基于 Flutter 应用,创建应用的命令是:

flutter create -i swift -a kotlin app

依赖了自己开发的 wechat 插件,之后执行 flutter run 的时候,就一直报下面这个错误了:

code's output:
    === BUILD TARGET Runner OF PROJECT Runner WITH CONFIGURATION Debug ===
    While building module 'wechat' imported from /Users/pantao/workspace/gitee/onmr/chain-app/ios/Runner/GeneratedPluginRegistrant.m:6:
    In file included from <module-includes>:1:
    In file included from /Users/pantao/workspace/gitee/onmr/chain-app/build/ios/Debug-iphonesimulator/wechat/wechat.framework/Headers/wechat-umbrella.h:13:
    /Users/pantao/workspace/gitee/onmr/chain-app/build/ios/Debug-iphonesimulator/wechat/wechat.framework/Headers/WechatPlugin.h:2:10: error: include of non-modular header inside framework module 'wechat.WechatPlugin':
    '/Users/pantao/workspace/gitee/onmr/chain-app/ios/Pods/Headers/Public/WechatOpenSDK/WXApi.h' [-Werror,-Wnon-modular-include-in-framework-module]
    #include "WXApi.h"
             ^
    1 error generated.
    /Users/pantao/workspace/gitee/onmr/chain-app/ios/Runner/GeneratedPluginRegistrant.m:6:9: fatal error: could not build module 'wechat'
    #import <wechat/WechatPlugin.h>
            ^
    2 errors generated.

最简单的解决办法:

TARGETS -> Build Settings -> 搜索 Allow Non -> 将 Allow Non-modular includes in Framework Modules 设置为 YES

WX20181224-200614@2x.png

就像 React Native 一样,在 Flutter 应用中,如果需要调用第三方库的方法或者有一些功能需要使用原生的开发来提供,使用 Flutter Plugin 是一种不错的方式,它本质上就是一个 Dart Package,但与其它的 package 不同点在于,Flutter 插件中一般都存在两个特殊的文件夹:androidios,如果需要编写Java、Kotlin或者 Object-C 以及 Swift 代码,我们就需要在这两个文件夹项目中进行,然后通过相应的方法将原生代码中开发的方法映射到 dart 中。

- 阅读剩余部分 -

一直都在自己的 React Native 应用中使用 Redux,其实更大情况下也是使用它来管理应用的会话状态以及当前登录的用户信息等等简单的数据,很好用,自从 Google 发布 Flutter 之后,就一直想着拿它来做点啥,准备拿一个新项目开刀,先研究下怎么把以前在 React Native 中需要用到的一些技术在 Flutter 找到对应的实现方法,本文记录下 Flutter + Redux + Redux Persist 的实现。

项目地址:https://github.com/pantao/flutter-redux-demo-app

- 阅读剩余部分 -

改 repo 仓库

cd ~/.cocoapods/repos
pod repo remove master
git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git master

完成上面步骤之后,进入项目的 ios/Podfile 文件,在文件第一行前插入下面这一行:

source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'