最近把Xcode升級到7.1出現上述問題,能夠運行app,可是在打包app提交到appstore的時候會報 Cordova/CDVViewController.h file not found html
查了很久才找到緣由,參考了http://stackoverflow.com/questions/33379291/cordova-app- failing-to-archive-with-xcode-7-1-cordova-cdvviewcontroller-h-fileweb
解決方法:apache
Header Search Path 加入數組
"$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include"xcode
附上幾個網址 :服務器
Cordova 官網: http://cordova.apache.org/app
框架引入: http://www.jianshu.com/p/656838ae92bc框架
交互原理: http://www.cnblogs.com/luoguoqiang1985/p/3574738.htmlide
坑1.在使用 Cordova 時, 注意: 本身工程裏面的 cordovaLib 和 Cordova.js 要是同一個版本,不然將會發生你意想不到的事情,好比能夠調用支付寶客戶端,卻調不到網頁版的支付寶.切記.ui
坑2.當引入了新的三方庫的時候,運行工程並不會發現什麼錯誤,可是在打包的時候,則會報錯,說找不到庫裏的某個頭文件,解決辦法就是在 targets -> buildSettings -> Head Search Paths 裏面添加下面一行代碼:
"$ (OBJROOT)/UninstalledProducts/include」
坑3.當報錯說 Object - C … xxxx.o 找不到時,每每是 .a 文件沒有引入,引入相關的.a 文件就能夠了.
坑4.當 h5 調用本地的插件裏的支付方法時,本地開始調用支付寶SDK,可是會爆一個錯誤:
WebKit discarded an uncaught exception in the webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate: -[__NSDictionaryM objectAtIndex:]: unrecognized selector sent to instance 0x7fab8b252b60
很顯然,是把數組的方法,發送給了字典,經過打 斷點調試的方法,進入 cordova 內部實現裏面看 cordova 對參數的處理,發現 cordova 內部是用 數組來接收參數的,因爲參數類型不對,固然會調不到支付寶並崩潰,解決辦法是讓後臺把 JSON 數據放到數組裏,固然別忘了通知安卓.
5.當 cordova框架正確引入而且正常工做時,會打印:
Apache Cordova native platform version x.x.x is starting.
坑6.當使用模擬器run的時候,會報以下錯誤:
LaunchServices: ERROR: There is no registered handler for URL scheme xxx
我檢查了下 info.plist 文件裏的配置是沒有問題的,後來發現這句話的意思是 設備上沒有安裝支付寶的客戶端,因此此時會走網頁端.
坑7.今天出現了一個 bug , 就是觸發事件的時候 iOS 這邊會彈窗,並且連續彈好幾回,以下圖:
後來發現服務器端也引入了 cordova.js 文件,並且和 native 使用的 cordova.js 不是同一個版本,改成了同一版本就 OK 了.而正常的狀況下,考慮到還有安卓的存在,服務器端不該引入 js 文件,應該是在本地寫入 cordova.js 到服務端,具體寫入方法見本文第 9 條.
8.加載 H5頁面的 WebViewController 必須繼承於 CDVViewController ,如圖:
9. 要在 webview 的代理方法 webViewDidFinishLoad 中 讓服務端 讀入 cordova.js 文件,並且 cordova.js 文件裏面的註釋要所有刪除才能被讀入,暫時還不知道要刪除註釋的緣由 ,具體代碼如圖: