Mac下flutter项目导入、编译、本地及网络插件集成
flutter 项目编译
开发环境:
[✓] Flutter (Channel stable, v1.9.1+hotfix.2, on Mac OS X 10.14.6 18G103, locale zh-Hans-CN)
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[!] Xcode - develop for iOS and macOS (Xcode 10.3)
[✓] Android Studio (version 3.5) (以下简称AS)
- flutter工程在Mac下导入及编译
- 导入工程
- 导入新工程,使用AS的import方式导入主工程的根目录(直接打开会导致一些flutter库不加载)。
- 导入后打开pubspec.yaml,右上角会出现Packages get等选项,如果没有则需要配置flutter库的路径。配置见下方。
- 配置flutter库路径时一般会自动配置Dart路径,如果没有则可手动配置。配置见下方。
- 路径配置完成后在pubspec.yml中点击Packages get,即可获取依赖的插件。
AS工程中flutter 库路径配置。如图:
AS工程中Dart库路径配置。如图:
- 编译
选择模拟器或者真机都可以,执行编译。
- 编译错误
- ** BUILD FAILED ** note: Using new build systemnote: Planning buildnote: Constructing build description
此错误是xcode的编译器问题。将工程在xcode中打开,并修改即可。
xcode中选择 file->Workspace Settings。将New Build System(default) 修改为Legacy Build System。
- flutter 集成网络插件及一些错误
- 集成方式
- 集成中的一些错误
- amap_base编译错误
Runner/GeneratedPluginRegistrant.m:6:9: fatal error: 'amap_base/AMapBasePlugin.h' file not found
#import <amap_base/AMapBasePlugin.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
此错误为pod库未安装,在主工程ios目录下pod install即可,如图。(如安装过程中本地库有问题需先解决,否则无法安装成功)
- 附加:amap_base 安卓编译报错
...\flutter\.pub-cache\hosted\pub.flutter-io.cn\amap_base-0.3.5\android\src\main\kotlin\me\yohom\amapbase\m\apMapHandler.kt
此错误为安卓编译时的错误,需修改插件源码,解决方法见此贴
- flutter 集成本地插件及一些错误
- 集成方式
如图,将插件工程放在和主工程同级目录,并在主工程的pubspec.yaml中配置插件路径。
- 集成中的一些错误
- iOS platform冲突
[!] CocoaPods could not find compatible versions for pod "flutter_aes":
In Podfile:
flutter_aes (from `.symlinks/plugins/flutter_aes/ios`)
Specs satisfying the `flutter_aes (from `.symlinks/plugins/flutter_aes/ios`)` dependency were found, but they required a higher minimum deployment target.
主工程或主工程Podfile 的iOS platform参数和插件工程platform冲突。如图,修改至一直即可,这里修改至11.0
- swift 版本及配置错误
[!] Unable to determine Swift version for the following pods:
- `flutter_step` does not specify a Swift version and none of the targets (`Runner`) integrating it have the `SWIFT_VERSION` attribute set. Please contact the author or set the `SWIFT_VERSION` attribute in at least one of the targets that integrate this pod.
由于本地插件中使用了swift,而主工程是只有oc,所以需要在主工程中配置SWIFT_VERSION。并且由于oc调用swift需要桥接文件,如果没有可自行在主工程中创建,名字必须是Runner-Bridging-Header.h
上一篇: Zookeeper原理
下一篇: Flutter安装教程