操作系统:OSX10.14

XCode:10.1

Cordova:8.1.2

假设已经配置好了Cordova开发环境,Apple ID你也有,XCode也可以正常工作了,那么就可以继续看这篇文章了!

如果你没有看我这篇文章,那么你有可能会顺利编译你的Cordova工程,但是,我觉得你很可能正在解决遇到的麻烦,而且让你焦头烂额的麻烦,你都不知道错误究竟是怎么发生的!

一,解决XCode编译Cordova工程问题:

1,保证苹果开发证书正常可用。这就不多说了,有很多文章介绍,打开工程之后,如果没有加入苹果ID,则加入,加入后,下载全部证书,随后在工程里面设置“Automatically manage signing”,随后选对“team”,XCode就把这件事搞定了。但是下面的操作同样重要,如果不按照下面做,我相信你肯定编译不过去!

2,修改编译选项:这对于Cordova工程编译,非常重要,如果不修改,我敢保证你编译不过去,而且错误五花八门,你即使上网搜索解决方法,也是驴唇不对马嘴!

A,打开选项界面:点击XCode菜单的“File” -> "Workspace settings",如果你打开的是工程,那应该是"Project settings"。

B,修改编译选项:把“Build System”修改成“Legacy Build System”。

从字面上理解,“Legacy Build System”是旧的或传统的编译系统,确实是这样!在XCode9开始,苹果公司引入新的编译系统,把先前的编译系统叫做“Legacy Build System”。Crodova工程,那些基础工程,应该是老版本的XCode开发的,如果不把编译系统调整成“Legacy Build System”,我觉得你很难编译通过,而且出现的那些错误会莫名其妙,你根本无法解决,因为搜索到的答案都不对,真正造成错误的原因是这个编译系统,不是别的!!

这是我先前遇到问题:https://www.cnblogs.com/sunylat/p/9936145.html

经过上面设置,我想你现在可以编译Cordova工程了,你会很高兴,新建一个Cordova工程,然后用XCode10编译,假设你在这之前已经顺利连接好了你的IOS真机,那么你会很顺利看到在IOS真机里面运行的你刚刚建立的Cordova程序!但是你不会止步于此啊,你得写自己的代码啊,于是,你就随便修改了一个地方,然后又编译了一下,也顺利安装到了IOS真机里了,但是,可但是,神奇的一幕会让你目瞪口呆!!天哪,我刚刚修改的程序居然没有变化,还是上次的程序!你可能觉得自己哪里做错了,于是又十分认真地修改了一次,随后又顺利编译、安装到真机里了,这次会让你更惊讶,你已经百分百确定,自己没有犯错,真的修改了程序了,但是在IOS真机里面运行的,依然是你最初的,第一次安装到真机里的Cordova程序,没有任何变化!!!

先不管上面问题,按照我下面的做!! 

二,配置Cordova的IOS开发环境:打开shell,依次执行下面命令。

1,

 xcode-select --install

2,

sudo npm install -g ios-sim

3,

sudo npm install -g ios-deploy --unsafe-perm=true --allow-root

关于命令3,可能不同运行OSX的设备会有差异,由于我是在虚拟机里安装的OSX10.14,所以只有执行此命令才可以。

到此,已经配置好了在OSX里面,Cordova编译IOS需要的环境了,那么是不是上面XCode成功编译,但是无法把修改的程序安装到真机问题解决了呢?NO!!

我现在是在真机上做开发测试,是debug版本程序,对应证书也是,所以使用的命令也都是debug版本对应的,如果你将来要发布,修改成发布版本的命令,把命令中的debug,替换成release,应该就可以!

三,解决XCode顺利编译,但是无法把修改程序安装到真机问题:

我想告诉你一个事实,XCode是可以顺利编译Cordova工程,但是,那不是管理Cordova里面我们开发的程序!!如果想要让自己开发的程序,能够通过XCode编译、发布到真机,那么必须首先用Cordova命令编译我们的程序!!

1,执行Cordova编译命令,编译我们的程序。

cordova build ios --debug --device

2,安装我们编译好的程序:

A,直接使用XCode安装。这种方式比较简单,连接好了真机之后,点击运行按钮就可以了。

B,用 ios-deploy 安装。

找到你编译程序的目录,在shell里面进入那个目录,随后执行安装命令。我的工程名是“test”,生成的安装文件目录是“/Users/sunylat/test/platforms/ios/build/device”。那么我执行下面两条命令,就顺利把我的程序安装到了正在连接的真机里了。

cd /Users/sunylat/test/platforms/ios/build/device

ios-deploy --justlaunch --debug --bundle test.ipa

参考:

http://cordova.axuer.com/docs/zh-cn/latest/guide/platforms/ios/index.html

https://github.com/ios-control/ios-deploy#readme

http://cordova.axuer.com/docs/zh-cn/latest/reference/cordova-cli/index.html#cordova-build-command

Cordova - 彻底搞定IOS编译!的更多相关文章

  1. [转]Cordova - 彻底搞定IOS编译!

    本文转自:https://www.cnblogs.com/sunylat/p/9946482.html 操作系统:OSX10.14 XCode:10.1 Cordova:8.1.2 假设已经配置好了C ...

  2. 开发者经验谈:如何一天时间搞定iOS游戏开发?

    开发者经验谈:如何一天时间搞定iOS游戏开发? 在一天时间里将完成iPhone游戏开发由梦想变为现实? 本文作者给出了从创意转变成现实的详细答案.使用苹果原生游戏引擎SpriteKit,遵循一定的原则 ...

  3. Cordova - 彻底搞定安卓中的微信支付插件!

    Cordova:8.0.0 Android studio:3.2.1 cordova-plugin-adam-wechat : 3.0.6 你看到这个标题肯定会惊讶,一个Cordova的微信支付插件, ...

  4. 分分钟搞定IOS远程消息推送

    一.引言 IOS中消息的推送有两种方式,分别是本地推送和远程推送,本地推送在http://my.oschina.net/u/2340880/blog/405491这篇博客中有详细的介绍,这里主要讨论远 ...

  5. 5分钟搞定iOS抓包Charles,让数据一清二楚

    Charles安装 HTTP抓包 HTTPS抓包   1. Charles安装 官网下载安装Charles:https://www.charlesproxy.com/download/ 2. HTTP ...

  6. 分分钟搞定Redis编译安装

    1.  依赖包安装 yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make gcc- ...

  7. 一句话搞定IOS中View的Frame和Bound

    就一句话,Frame是父View上看到子View的窗户,Bound是子View上可以被父View看见的内容. 稍微解释下.Frame 指子View在父View中的位置以及大小.由两部分构成,第一部分是 ...

  8. (转载)Android快速开发偷懒必备,一句话搞定所有ViewGroup的Adapter . 支持自定义ViewGroup

    [置顶] [Android]快速开发偷懒必备,一句话搞定所有ViewGroup的Adapter . 支持自定义ViewGroup 标签: androidAdapter快速开发0耦合 2016-12-1 ...

  9. iOS开发三步搞定百度推送

    iOS开发三步搞定百度推送   百度推送很简单,准备工作:在百度云推送平台注册应用,上传证书. 步骤一: 百度云推送平台 http://push.baidu.com/sdk/push_client_s ...

随机推荐

  1. 【Mybatis】MyBatis对表执行CRUD操作(三)

    本例在[Mybatis]MyBatis配置文件的使用(二)基础上继续学习对表执行CRUD操作 使用MyBatis对表执行CRUD操作 1.定义sql映射xml文件(EmployeeMapper.xml ...

  2. 【NIFI】 Apache NiFI 之 ExecuteScript处理(二)

    本例介绍NiFI ExecuteScript处理器的使用,使用的脚本引擎ECMScript 接上一篇[NIFI] Apache NiFI 之 ExecuteScript处理(一) ExecuteScr ...

  3. const和static readonly 区别

    const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值. 而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值. static readonly ...

  4. IOPLL动态重配

    连接 Avalon -MM接口 mgmt_waitrequest:当 PLL 重配置进程开始后,此端口变高并在 PLL 重配置期间保持高电平. PLL 重配置进程完成后,此端口变低. I/O PLL重 ...

  5. git代码同步服务器代码需要注意的问题

    魔鬼藏在细节之中,git代码同步服务器代码需要注意的问题 1. 全文件夹覆盖  git pull 当前文件夹 2. 覆盖前做代码备份  mv origin origin_20190404_bak

  6. Vuejs——(1)入门(单向绑定、双向绑定、列表渲染、响应函数)

    版权声明:出处http://blog.csdn.net/qq20004604   目录(?)[+]   参照链接: http://cn.vuejs.org/guide/index.html [起步]部 ...

  7. 如何修改config?

    这几天在做给WCF做加密传输,结果当然是实现了加密传输,同时也发现了一个问题,有没有大神来答疑解惑一下. 事情是这样的. 在客户端的配置中,需要加入一个behavior,在config文件中是这样的. ...

  8. 用react + redux + router写一个todo

    概述 最近学习redux,打算用redux + router写了一个todo.记录下来,供以后开发时参考,相信对其他人也有用. 注意: 我只实现了Footer组件的router,其它组件的实现方法是类 ...

  9. HttpRunnerManager接口测试平台部署在服务器上(Centos + python3.6 + Mysql5.7 + uwsgi + nginx)

    整个思路:HttpRunnerManager + python3.6 + Mysql5.7 + uwsgi + nginx 安装依赖环境,将源代码传到服务器,修改settings,增加uwsgi配置, ...

  10. 解决SpringBoot jar包太大的问题

    转载 2017年09月18日 09:21:53 577 SpringBoot的web应用一般都添加了spring-boot-maven-plugin插件. Maven xml代码   <buil ...