Cordova - 徹底搞定IOS編譯!

操作系統: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

轉載于:https://www.cnblogs.com/sunylat/p/9946482.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249028.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249028.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249028.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

javaweb學習總結(四十四)——監聽器(Listener)學習

一、監聽器介紹 1.1、監聽器的概念 監聽器是一個專門用于對其他對象身上發生的事件或狀態改變進行監聽和相應處理的對象,當被監視的對象發生情況時,立即采取相應的行動。監聽器其 實就是一個實現特定接口的普通java程序,這個程序專門用于監聽…

第一期沖刺01

1、我昨天的成就 確定了軟件所滿足的需求 2、遇到什么困難 跟航哥有太多想要實現的,但后續慢慢找到了重點 3、今天的任務 安裝安卓studio 配置好編程所需要的環境 轉載于:https://www.cnblogs.com/zjm15511858030/p/11065660.html

vue無縫滾動的插件開發填坑分享

寫插件的初衷 1.項目經常需要無縫滾動效果,當時寫jq的時候用用msClass這個老插件,相對不上很好用。2.后來轉向vue在vue-awesome沒有找到好的無縫滾動插件,除了配置swiper可以實現但是相對來說太重了,于是自己造了個輪子。 3.在這分…

Spring 注解 @Resource和@Autowired

Resource和Autowired兩者都是做bean的注入使用。 其實Resource并不是Spring的注解,他的包是javax.annotation.Resource 需要導入。但是Spring支持該注解的注入。 共同點:兩者都可以寫在字段和setter方法上。兩者如果都寫在字段上,就不需要寫…

洛谷 P1091 合唱隊型

很容易想到維護一個最長上升子序列和一個最長下降子序列。然后枚舉一個點k,取所有以k結尾的最長上升子序列和以k開頭的最長下降子序列的長度的和中最大的,表示留下的人數。再用總人數減去這個,等于出隊人數 另外類似的一道題:最長…

PHP常用的自定義函數

PHP常用的自定義函數 目錄 php常用自定義函數類下載php 設置字符編碼為utf-8路徑格式化(替換雙斜線為單斜線)轉碼打印輸出api返回信息字符串截取 方法一:方法二:數組 字符串 對象 json格式的字符串互轉強制類型轉換php序列化serialize與返回序列化unserialeze創建日志文件獲取i…

Spring注解@Component、@Repository、@Service、@Controller區別

很長時間沒做web項目都把以前學的那點框架知識忘光了,今天把以前做的一個項目翻出來看一下發現用Component標記一個組件,而網上有的用Service標記組件,我暈就查了一下資料: Spring 2.5 中除了提供 Component 注釋外,還…

春第十周作業

作業: 這個作業屬于那個課程C語言程序設計II這個作業要求在哪里https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/3162我在這個課程的目標是閱讀并學習這個作業在那個具體方面幫助我實現目標知道了我們以后工作所需的是雇主所需的參…

在原生js中的事件監聽方法

一、傳統事件綁定方法我們在學習的時候,最初接觸的事件綁定方式大多是傳統事件綁定方法。傳統事件綁定方法事例如下: window.οnlοadfunction(){alert("頁面已加載"); } document.getElementById("btn").οnclickfunction(){alert(…

MySql修改數據庫編碼為UTF8

mysql 創建 數據庫時指定編碼很重要,很多開發者都使用了默認編碼,亂碼問題可是防不勝防。制定數據庫的編碼可以很大程度上避免倒入導出帶來的亂碼問題。 網頁數據一般采用UTF8編碼,而數據庫默認為latin 。我們可以通過修改數據庫默認編碼方式…

第六次作業(C語言)

心得體會 該題主要涉及知識點有:1、函數的定義;2、函數的調用(即prime函數的調用);3、素數的判斷;4、大小排序。 看到題時我首先想到了嵌套循環,可是仔細一看題目要求的是用prime函數的調用&…

Javascript系列——對象元素的數組去重實現

概要 這是一篇記錄文,記錄數組操作對象去重的實現。 需求 有這樣一個數組 [{_id: 123,name: 張三 },{_id: 124,name: 李四 },{_id: 123,name: 張三 }] 實際上我們只需要 [{_id: 123,name: 張三 },{_id: 124,name: 李四 }] 去重 簡單數組的去重 Array.from(new Set([…

關于__getattribute__

先看一個案例 class Tree(object):def __init__(self,name):self.namenameself.cateplantdef __getattribute__(self, item):if item大樹:print(log 大樹)return 我愛大樹else:return object.__getattribute__(self,item)aaTree(rrrr) print(aa.name) print(aa.cate) 運行結果…

通過Navicat for MySQL遠程連接的時候報錯mysql 1130的解決方法

來源:互聯網 作者:佚名 時間:10-16 18:41:20 【大 中 小】 錯誤代碼是1130,ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server 是無法給遠程連接的用戶權限問題 Navicat for mysql 1130錯誤 用…

Java Language Changes for Java SE 9

Java9引入了module模塊的概念,是類與接口和數據資源的一種封裝,并可以聲明與其他模塊的依賴關系。這里總結一下Java9帶來的新特性。更簡練的try-with-resources語句final Resource resource1 new Resource("resource1");//a final resourceRe…

ProtocolHandler繼承體系

轉載于:https://www.cnblogs.com/GooPolaris/p/10815072.html

mysql數據庫存儲過程及調用方法

mysql數據庫存儲過程及調用方法 mysql5.0以后就支持存儲過程了,目前mysql的6.0Alpha版也已經推出。6.0不僅支持大型數據庫如oracle等的絕大部分功 能,如存儲過程、視圖、觸發器、job等等,而且修正了這些功能所存在的bug,其中6.0.1…

紅蜻蜓

日本人なら一度は耳にしたことのある曲でしょう。忘れかけている里山の風景が目に浮かびます。このあたりは昔養蠶が盛んで、何処へ行っても桑畑があったものでしたが、最近はとんと見かけません。小さい頃、よく桑の実をつんで食べたものでした。(このあたりでは&q…

elastic學習筆記

要點 不同工具之間版本匹配很重要由點及面,先實踐起來再學細節的原理和使用 技術棧 laravel5.5框架scout組件elasticsearch6.3.0搜索引擎輔助 elasticsearch-head 查看集群數據可視化 中文分詞插件Ik介紹 laravel是一款現代化的php框架es是搜索引擎es-head是管理查看…

mysql 存儲過程中limit

mysql 存儲過程中limit 1、mysql的高版本(5.5),存儲過程中的limit可以使用變量,如下:select * from student limit iStart,iNum; 2、mysql的低版本(5.1),存儲過程中的limit不能使用…