前段时间写了关于flutter的一系列基础知识和入门的一些坑,中间把ios端的项目编译部署等工作一带而过,这里我觉得还是有必要专门写一篇文章来讲讲这个,顺便把环境问题也一起说了。

我们都知道开发ios应用需要用到苹果电脑,即使flutter也不例外,flutter编译构建需要Xcode来协助,而Xcode 是没有win平台应用的,那只能倒逼着我们去买苹果电脑,但是身边没有苹果电脑怎么办呢,不喜欢折腾的程序员不是好程序员,生命不息,折腾不止,我们一起来装黑苹果:

我的笔记本配置基本是符合要求的,我们去黑苹果(黑苹果星球-分享Mac的精彩世界)网站下载专门的镜像,不过这里的资源是需要收费的,我可是花了30大洋冲的会员,我下载镜像的是带有oc和clover工具的,这两个工具实际上就是管理引导efi 和启动的,另外还需要准备一个8g以上的优盘,还有就是要下载transmac这个软件,用来往优盘烧录镜像, 烧录的时候需要先把优盘搞成苹果的系统磁盘格式,然后再加载镜像,需要等待好长一会,进度走完就可以了,这个时候会看到优盘的目录变化了,分成了好几个磁盘,有oc和clover,他们就是对应的两种启动方式,他们根目录是有一个efi文件夹的,里面结构是这样的:

kexts里面是我们所需要的驱动,都会放在里面,config.plist是配置文件,当我们修改kexts里的驱动时,是需要改配置文件对应上的,那个网站也会有对应的驱动,根据电脑硬件型号和mac版本,可自行下载,现在优盘是默认给我们生成好了的,config.plist也是准备了很多,用于启动不了时可供我们替换使用,这时候我们就可以重启电脑准备安装了(记住要备份好数据哦):

根据自己笔记本快速启动优盘,即可进入下面画面:

中间电脑会重启几次,都是正常现象,如果你是固态硬盘,大概半小时40分钟就差不多了,然后就是按照提示设置语言/用户名/键盘等,下面就是我的oc自动识别的启动系统(我做的是win+mac双系统)

所有的都配置好之后就进入系统了

这时候还需要一个步骤,因为你发现其实我们的安装盘目录下也有一个oc和clover的文件夹,如果你u盘上oc和clover的efi文件里面的内容被你替换了,那你也需要保证u盘和硬盘的内容一致。还有就是除了11.6的系统外,其他的不要试图去找独显驱动,什么开普勒什么的都不好使,因为我有分屏的需求,分屏必须接独显,后来被逼的直接买了个usb转hdmi,试试人家三方的驱动咋样,结果只是投个影像而已,不能扩展,而且延迟很高,不要跟我入坑,直到现在我都是就一个笔记本屏幕来开发,费点眼睛费点吧,也比像win卡的十天半月做个系统强。

黑苹果至此完成,详细的安装步骤请移步专门的装系统教程,我们下边重点来说flutter:

接下来我们下载android studio sdk ndk jdk flutter-sdk dart和flutter插件 xcode 等所需要的开发软件和环境:在这里还是有不少坑的,

一.环境问题,首先除了软件的一些环境配置外(比较简单,不赘述),还需要在mac的系统进行环境配置

(1)flutter环境变量,在终端依次输入下面命令

<1>. 创建环境文件:touch .bash_profile

<2>. 打开文件:open .bash_profile,配置镜像和路径如下:

export PUB_HOSTED_URL=[https://pub.flutter-io.cn](https://links.jianshu.com/go?to=https%3A%2F%2Fpub.flutter-io.cn)

export FLUTTER_STORAGE_BASE_URL=[https://storage.flutter-io.cn](https://links.jianshu.com/go?to=https%3A%2F%2Fstorage.flutter-io.cn)

export PATH=/Users/lg/Documents/flutter/bin:$PATH
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

3. 保存:source .bash_profile

4.检查:flutter doctor

2.安装cocoapods,这个是调试苹果手机时候android studio必须要的系统环境,这个地方装了两天,试遍了所有的命令,翻边了所有的资料,什么gem啦,brew啦,翻墙啦,最后顺利出坑源于这篇文章,mac电脑如何下载homebrew_mac下载brew_弹道吖的博客-CSDN博客,直接运行它的脚本命令:/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

然后按步骤执行可顺利安装brew, 然后通过这个包管理器,执行brew install cocoapods即可完成安装。

二.运行到苹果手机

在android studio里打开ios目录下的AppDelegate文件,这个文件其实就相当于咱们android的mainactivity,然后在右上角,可以看到有个打开xcode的快捷提示,

点开后就打开了xcode的编辑页面,就可以通过xcode编写switf或者c++的代码了,他会有错误提示补全等,下面贴一下我的AppDelegate的通讯代码:

import UIKit
import Flutter@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {let flutterEngine = FlutterEngine(name: "my flutter engine")override func application(_ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {flutterEngine.run();let controller : FlutterViewController = window?.rootViewController as! FlutterViewControllerlet channel = FlutterMethodChannel(name: "samples.flutter.io/lib", binaryMessenger: controller.binaryMessenger)channel.setMethodCallHandler { (call:FlutterMethodCall, result:@escaping FlutterResult) in//微信登陆if (call.method == "UmGetWxInfo") {var data = [self.UmGetWxInfo(value : result)];result(data);}//微信分享if (call.method == "shareWX") {var data = [self.shareWX(dia : call.arguments as! Dictionary<String, String>)];result(data);}//微信支付if (call.method == "wxPay") {var data = [self.wxPay(dia : call.arguments as! Dictionary<String, String>)];result(data);}//阿里支付if (call.method == "aliasPay") {var data = [self.aliasPay(pay:  call.arguments as! String)];result(data);}}GeneratedPluginRegistrant.register(with: self.flutterEngine);GeneratedPluginRegistrant.register(with: self); //注意权限问题return super.application(application, didFinishLaunchingWithOptions: launchOptions);}//微信登陆func UmGetWxInfo(value:FlutterResult)->Int{return 1;}//微信分享func shareWX(dia: Dictionary<String, String>)->String{return "123";}//微信支付func wxPay(dia: Dictionary<String, String>)->String{return "123";}//阿里支付func aliasPay(pay:String)->String{return "123";}}

运行:可以直接插上苹果手机,点击信任之后,androidstudio 就识别到了,可以直接点击ide中的运行,但那只是debug模式,你会发现:

[!] Automatically assigning platform `iOS` with version `11.0` on target `Runner` because no platform was specified.

这时候只需要注释掉podfile里的版本限制即可,例如:platform :ios, '11.0' 。

然后好不容易运行到手机后后再从手机第二次打开你又会发现以下情况:

这是因为你是在debug模式运行的,ios14以上苹果给限制了,所以我们可以运行正式版命令:
运行命令之前先执行:

source ~/.bash_profile

flutter run --release

如果报安全问题,可以再执行一下命令。就可以完美运行了。

flutter run --release --no-sound-null-safety

至此苹果的部署就全部完成了。

(flutter)黑苹果系统 Xcode iOS flutter 跑通真机模拟器 此oc clover 彼oc swift相关推荐

  1. XCode 4.2(4.1)真机调试及生成IPA全攻略

    XCode 4.2(4.1)真机调试及生成IPA全攻略 网上有不少关于xocde3.x真机调试的文章,但鲜有xcode4.2相关的资料  .参考了一些文章,终于可以在xcode4.2上进行真机调试了, ...

  2. uniapp 云打包后IOS白屏,真机调试也是白屏,没有报错!解决办法

    uniapp 云打包后IOS白屏,真机调试也是白屏,没有报错!解决办法! 原来用uniapp 写的小程序 然后要翻成app 一开始还是很顺利的,因为安卓端测试 没有什么大问题:但是IOS直接白屏,只能 ...

  3. IOS 7 Xcode 5 免IDP证书 真机调试

    今天带来的是 IOS 7 Xcode 5 免IDP证书的真机调试.说白了就是穷,不想给苹果交那$99的钱. 注意:虽然可以用这个方法实现真机调试,不过不能实现向Apple store 发布APP,其次 ...

  4. IOS 7 Xcode 5 免IDP证书 真机调试(转载)

    最近转开发了,真的很久没有更新博客了,今天有空写一篇吧. 今天带来的是 IOS 7 Xcode 5 免IDP证书的真机调试.说白了就是穷,不想给苹果交那$99的钱. 注意:虽然可以用这个方法实现真机调 ...

  5. IOS 7 Xcode 5 免IDP证书 真机调试 【修改自无心圆的博客】

    修改自 IOS 7 Xcode 5 免IDP证书的真机调试. 注意:虽然可以用这个方法实现真机调试,不过不能实现向Apple store 发布APP,其次向Notification这种需要去Apple ...

  6. (转)IOS 7 Xcode 5 免IDP证书 真机调试

    原资料地址:http://bob-zhangyong.blog.163.com/blog/static/17610982013112855551277/ 最近转开发了,真的很久没有更新博客了,今天有空 ...

  7. IOS 7 Xcode 5 免IDP证书 真机调试[ZT]

    转自:http://bobzy.blog.51cto.com/2109336/1346061 最近转开发了,真的很久没有更新博客了,今天有空写一篇吧. 今天带来的是 IOS 7 Xcode 5 免ID ...

  8. android 编译luajit,【最新最全】为 iOS 和 Android 的真机和模拟器编译 Luajit 库

    编译 Luajit 库,的确是一个挑战.因为官网的教程,在当前版本的 Xcode 和 NDK 环境中,已经不适用了.以前只是编译了适用于真机的 Luajit 库.最近在尝试编译模拟器 Luajit 库 ...

  9. iOS开发:创建真机调试证书

    http://jingyan.baidu.com/article/ff411625b8141312e48237a7.html 关于苹果iOS开发,笔者也是从小白过来的,经历过各种困难和坑,其中就有关于 ...

最新文章

  1. 兔子生兔子递归的理解
  2. linux之shell脚本学习篇一
  3. Nature子刊:你想成为生物信息学家?
  4. Greenplum——升级的分布式PostgresSQL
  5. LaTex 版面设计
  6. 【Python】ime series:时间序列
  7. 【每周CV论文推荐】 初学目标检测必须要读的文章
  8. Python学习笔记:常用内建模块3:struct
  9. aspen变压吸附塔_空压机科普:吸附式干燥机的结构和原理
  10. koa源码分析-generator和yield分析
  11. Python把list变为str
  12. vant在cell中加表格_Vant Cell 单元格
  13. yum install ruby出错:error downloading packages
  14. 已经30了,摸爬滚打了5年多,只会功能测试的怎么办?
  15. 如何使用 AirDrop 将 MAC 中的照片整理好,并上传到 iPhone 的相册中?
  16. python安装error: Unable to find vcvarsall.bat
  17. Hadoop安装教程_单机/伪分布式配置_Hadoop 2.7.7(2.7.7)/CentOS Linux release 7.4.1708
  18. 数据结构与算法学习笔记
  19. 使用Ps制作飞机路过的动画
  20. 分享一个CCLE细胞系数据(CCLE数据库不能用了吗?)

热门文章

  1. windows文件隐藏之谜
  2. ArcGIS学习05:坐标系
  3. 二十四节气-谷雨文案、海报分享,谷雨润万物,不觉夏已至。
  4. c++中的构造数据类型----结构体
  5. Task01:熟悉新闻推荐系统的基本流程(项目结构)
  6. Netty源码解析-Netty内存泄露检测
  7. 给图片加水印的简单方法,手机图片加水印也可以用
  8. window系统cmd的常用几条指令
  9. 快速矩阵乘法的研究——下
  10. clickhouse源码:函数分析和自定义函数UDF