1. iOS环境搭建
其实配置环境很简单,按照官方文档一步一步来就好了【虽然个人感觉官方文档有点乱。。】因为笔者是个iOS开发而且电脑存储要炸了,所以笔者含泪放弃了AS平台,仅讨论VSCode编辑器配置
1.1 安装Flutter SDK
1.1.1 flutter官网下载其最新可用的安装包,转到下载页
1.1.2 解压安装包到你想安装的目录
如下所示:
cd ~/development
unzip ~/Downloads/flutter_macos_v0.5.1-beta.zip
1.1.3 添加Flutter相关工具到path中
export PATH=`你上一步骤中实际解压到的文件夹`/flutter/bin:$PATH
此处需注意:此代码只能暂时针对当前命令行窗口设置PATH环境变量,要想永久将Flutter添加到PATH中你还需要更新环境变量操作
1.2 更新环境变量
配置.bash_profile文件中的相关变量
vim ~/.bash_profile //首先打开.bash_profile 文件,然后添加以下设置
// 设置全局环境镜像变量
export PUB_HOSTED_URL=https://pub.flutter-io.cn //国内用户需要设置
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn //国内用户需要设置
export PATH=PATH_TO_FLUTTER_GIT_DIRECTORY/flutter/bin:$PATH // PATH_TO_FLUTTER_GIT_DIRECTORY也就是1.1.3中`你上一步骤中实际解压到的文件夹`
修改.bash_profile文件
运行 source $HOME/.bash_profile
刷新当前终端窗口,则保存完成
1.3 配置iOS所需环境
1.3.1 安装xcode与vscode
安装IDE此处不再赘述,对于vscode编辑器配置来说需要安装额外插件
1.启动 VS Code
2.调用 View>Command Palette…
3.输入 ‘install’, 然后选择 Extensions: Install Extension action
4在搜索框输入
flutter
, 在搜索结果列表中选择 ‘Flutter’, 然后点击 Install5.选择 ‘OK’ 重新启动 VS Code
1.3.2 配置其他环境依赖
如果想要在IOS真机上进⾏行行调试,需要安装 libimobiledevice 和 ideviceinstaller 等工具,我们使用brew来安装这些工具
brew update
brew install --HEAD libimobiledevice
brew install ideviceinstaller ios-deploy cocoapods
pod setup
到此处我们的环境配置就完成了,运行flutter doctor
来检查环境
可能会检测出某些环境不可用,读者可根据具体error进行解决,其实检测结果中也已经给出了解决方案,比如说:
[!] iOS toolchain - develop for iOS devices (Xcode 10.1)
✗ Verify that all connected devices have been paired with this computer in Xcode.
If all devices have been paired, libimobiledevice and ideviceinstaller may require updating.
To update with Brew, run:
// 针对iOS工具链接问题,可以通过以下命令来修复
brew update
brew uninstall --ignore-dependencies libimobiledevice
brew uninstall --ignore-dependencies usbmuxd
brew install --HEAD usbmuxd
brew unlink usbmuxd
brew link usbmuxd
brew install --HEAD libimobiledevice
brew install ideviceinstaller
1.4 创建项目
可以使用命令行创建
//在当前路路径创建⼀一个新的名叫flutter_demo的新项⽬目
flutter create your_flutter_demo
//创建⼀一个可包含dart源码的flutter库
flutter create --template=package your_flutter_demo
//创建⼀一个域名为com.guahao的java语⾔言的flutter项⽬目(⽀支持object-C、swift、java、kotlin)
flutter create --org="com.guahao" -a java your_flutter_demo
也可以直接使用IDE创建,如下图使用vscode创建项目:view->Command Palette ->Flutter:New Project
创建项目
2. 基本命令行介绍
2.1 基本命令简介
常用命令 | 简介 |
---|---|
-h,或--help | Print this usage information.打印详细用法信息 |
-v或 --verbose | Noisy logging, including all shell commands executed.打印详细日志,包括执行的所有shell命令 |
--version | Reports the version of this tool.打印当前Flutter版本号 |
analyze | Analyze the project's Dart code.分析项目Dart代码 |
build | Flutter build commands.构建命令 |
clean | Delete the build/ and .dart_tool/ directories.删除build/和.dart_tool/ |
create | Create a new Flutter project.创建一个新项目 |
devices | List all connected devices.列举所有链接到的设备信息 |
doctor | Show information about the installed tooling.展示当前初始化的环境 |
install | Install a Flutter app on an attached device.将一个app安装到一个已经连接的设备上 |
run | Run your Flutter app on an attached device.在一个已连接设备上运行app |
stop | Stop your Flutter app on an attached device.停止在已连接设备上运行app |
upgrade | Upgrade your copy of Flutter.升级flutter |
format | Format one or more dart files.格式化一个或多个dart文件 |
2.2 基本命令使用中遇到的问题记录
2.2.1 ERROR: Could not connect to lockdownd, error code -19
可以执行
sudo chmod -R 777 /var/db/lockdown/
errorFix
2.2.2 flutter项目如何打包生成ipa?
2.2.2.1 使用xcode的Archive进行打包
对于flutter项目来说,由于进行iOS开发依旧需要xcode环境,所以环境上来说是已经支持了的,然后可以使用xcode打开你所创建的flutter项目文件夹下的/ios/Runner.xcworkspace
1.打开xcworkspace
然后后续就按照正常的xcode这一IDE Archive过程一致,即Product->Archive->Distribute App即可
2.点击Archive 3.Distribute项目 4.archiveResult
与平常xcode创建的iOS项目打包过程并无差别。另外这种打包方式当然与平常xcode创建的iOS项目一样可以进行设置bundleID与General->Signing->team->Signing Certificate
2.2.2.2 flutter无证书打包ipa
由于笔者想知道除了使用xcode这种常规方式打包之外还有没有别的打包方法,所以百度了一下,发现一篇惊为天人的文章。。。笔者刚开始觉得很不可思议就动手试了一下,没想到还真管用hey
2.2.2.2.1 执行flutter build iOS生成Runner.app
buildResult2.2.2.2.2 偷梁换柱
将打包成功生成的Runner.app放进一个名为Payload的文件夹,压缩Payload生成Payload.zip,手动将Payload.zip文件后缀名改为.ipa,搞定【说实话心里很慌,这就阔以了莫不是在逗我??】然而放到手机上运行下,emm事实证明真!的!能!跑!【orz,是在下读书少】
然后因为参考文章中作者说一定要用Payload的文件名,emm笔者不信邪,换个名字重来一遍,结果是凉凉。。。
尝试不同命名结果
笔者并不能理解这种操作。。。。暂时猜测能这样做的原因是.ipa本身就是个.zip,而.app本身就是可运行的好程序就像我们debug下run的时候项目会生成一个.app一样,而苹果解析时确实需要用Payload做根目录,通常情况下payload同目录会有一些配置文件和脚本等,如下图所示,这是苹果规定的解析格式,所以上述方法命名为Payload.ipa能正常运行。
payload目录实际原理还需考证,如有读者知道还麻烦留言为笔者解答,在此先谢过
但需要注意的一点是上述能成功所谓的无证书其是因为实际上还是按照2.2.2.1所示使用xcode的Archive进行打包时捕获了对应的signing信息才能实现flutter build打包,若重建一个项目,从未以xcode打开选择signing信息,则执行flutter build会出现如下图所示的提示让你去选择需要用以签名的证书:
选择sign
对于签名机制,大家有兴趣可以看看这篇文章:代码签名探析
网友评论